JavaWeb的HttpServletRequest和HttpServletResponse的常用方法

公共接口类HttpServletRequest继承自ServletRequest。客户端浏览器发出的请求被封装成为一个HttpServletRequest对象。对象包含了客户端请求信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内。HttpServletResponse继承了ServletResponse接口,并提供了与Http协议有关的方法,这些方法的主要功能是设置HTTP状态码和管理Cookie。

Web 服务器收到客户端的 http 请求,会针对每一次请求,分别创建一个用于 代表请求的 request 对象和代表响应的 response 对象。request 和 response 对象代表请求和响应:获取客户端数据,需要通过request 对象; 向客户端输出数据,需要通过 response 对象。

HttpServletRequest

HttpServletRequest接口最常用的方法就是获得请求中的参数,这些参数一般是客户端表单中的数据。同时,HttpServletRequest接口可以获取由客户端传送的名称,也可以获取产生请求并且接收请求的服务器端主机名及IP地址,还可以获取客户端正在使用的通信协议等信息。下表是接口HttpServletRequest的常用方法。

HttpservletRequest的常用方法:

方法名 含义
String getHeader(String name) 获取请求中的报头信息
Enumeration getHeaderNames() 获取请求中所有报头名的集合
String getContextPath() 获取请求上下文路径(webapp的)
String getRequestURI() 获取请求中的URI
String getMethod( ) 获取HTTP请求方法
String getRemoteAddr( ) 获取客户端的IP

获取客户端的参数

方法名 含义
String getParameter(String name) 获取请求(表单)中参数名为name 的参数值
String[] getParameterValues(String name) 获取请求中(表单)中所有参数名为name的参数值的集合
Enumeration getParameterNames( ) 获取请求中所有参数名的集合

客户端请求时乱码问题的解决方式

由于现在的 request 属于接收客户端的参数,所以必然有其默认的语言编码,主要是由于在解析过程中默认使用的编码方式为 ISO-8859-1(此编码不支持中文),所以解析时一定会出现乱码。要想解决这种乱码问题,需要设置 request 中的编码方式,告诉服务器以何种方式来解析数据。或者在接收到乱码数据以后,再通过相应的编码格式还原。

方式一:req.setCharacterEncoding(“UTF-8”);

该方法值针对post有效,对get是无效的,但是Tomcat8 起,以后的 GET方式请求是不会出现乱码的,所以使用Tomcat8及以上的Tomcat版本,只需要设置该post的编码即可

方式二:

String str=req.getParameter(“uname”);
String str1=new String(str.getBytes(“ISO-8859-1”),“UTF-8”);

该方式借助了 String 对象的方法,该种方式对任何请求有效,是通用的,但只能针对单个参数进行编码转换来达到解决乱码的问题

请求转发

request.getRequestDispatcher("index.jsp").forward(req,resp);
//转发到index.jsp页面 ,请求转发的过程中,用的是同一个request和response

HttpServletResponse

HttpServletResponse 的主要功能用于服务器对客户端的请求进行响应,将Web 服务器处理后的结果返回给客户端。service()方法中形参接收的是HttpServletResponse 接口的实例化对象,这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。

常用方法

response.sendRedirect(URL url) 重定向
setContentType(String type) 设置输出内容(MIME)类型
setContentLength(int length) 设置响应报文的长度
getWriter( ) 返回可以向客户端发送字符数 据的PrinterWriter对象
addHeader( String name, String value) 添加指定的键值到响应头信息中
containsHeader(String name) 判断响应的头部是否被设置
encodeURL(String url) 编码指定的URL
senderror(int sc) 使用指定状态码发送一个错误到客户端
setJHeader( String name, String value) 设置指定响应头的值
setstatus(int sc) 给当前响应设置状态
setcontenttype( String Contenttype) 设置响应的MME类型
getwriter() 获取输出字符流

你可能感兴趣的:(JavaWeb,客户端请求时乱码问题的解决方式)