HttpServletResponse是一个接口,它的父接口是ServletResponse,在开发中通常使用HttpServletResponse响应信息分为三部分:响应行、响应头、响应正文(响应体)
1.1发送状态码的相关方法:
1.设置状态码
setStatus(int sc):参数就是状态码。
setstatus(int sc,String sm):第一个参数表示状态码,第二个参数就状态码的描述。
常见的状态码:200响应成功
2.错误信息方法:
sendError(int sc):参数状态码
sendError(int sc,String sm):第一个参数表示状态码,第二个参数就状态码的描述。
1.2发送响应消息头相关的方法:
响应消息头的数据格式:key-value的形式,有的是一个key,一个value,有的是一个key,多个value
1.设置响应消息头:
- 一个key,一个value
setHeader(String key,String value);
- 一个key,对应多个value
addHeader(String key,String value);
2.设置响应数据的长度:setContentLength(int src)方法
3.设置处理乱码的方法:
- setCharacterEncoding(String a);参数就是一个码表格式,比如:“utf-81
- setContentType(String a);参数代表响应数据的类型和码表格式,比如:“text/html;charset=utf-8”
结论:在处理字符流和字节流输出中文乱码时,都采用response.setContentType(
注意:常见的编码格式:
GBKGB18030GB2312都是支持中文的编码格式,当然支持其它一些字符。
UTF-8:万能码表格式,支持所有的字符。
ISO-8859-1:不支持中文。
1.3.HttpServletRequest请求对象
HttpServletRequest它是一个接口,它的父接口ServletRequest,在开发中,常用的是带协议的请求对象。
请求消息:请求行,请求头,请求参数。
1.获取请求行消息的相关方法:
常用的请求行方法:
- 1.获取请求提交的方式:getMethod();>>>2.获取请求的协议:getProtocol();
- 3.获取项目名称:getcontextPath();
- 4.获取servlet路径:getServletPath();
- 5.获取请求路径:getRequsetuRI(),getRequestURL()
2.获取请求消息头相关的方法
- 1.根据消息头,获取值:String value=getHeader(消息头的名称);
- 2.获取所有的消息头:Enumeration er=getHeaderNames();根据Referer请求消息头,做一个防盗链的案例:
- 1.根据name属性值,获取用户输入的值:string value=getParameter(name属性对应的值);
- 2.根据name属性值,获取用户选择的值:String[]vaules=getParameterValues(name属性对应的值);
- 3.没有参数,获取所有值:Map<String,String[]>map=getParameterMap();
4.解请求参数的中文乱码问题:
中文乱码处理分两种情况: - 第一种情况:处理get方式提交的中文乱码
使用的String的构造方法解决的中文乱码:new String(字节数组,编码格式);
代码:
String nevalue=new String(value.getBytes(”IS08859-1”),”utf-8”); - 第二种情况:处理post请求的中文乱码问题:
post提交,会把参数首先提交到request对象的缓冲区中,缓冲区默认编码是IS08859-1,不支持中文处理方法:把request缓冲区的编码给设置成支持中文的码表格式。
代码:
request.setCharacterEncoding(”utf-8”);
5.通过Requset对象传递数据
什么域对象:在一定的范围内,可以存值和取值。
request域对象:在一次请求中,可以存值和取值。
- 存值:setAttribute(String key,Object obj);>>>取值:Object obj=getAttribyte(String key);
- 移除:removeAttribute(String key);
1.4 RequestDispatcher接口
在开发中访问到一个web资源后,需要服务器跳转到另一个资源去处理请求,可以通过sendRedirect重定向方法来实现,也可以RequestDispatcher转发对象的forward方法来实现。
得到转发对象:
RequestDispatcher forwardobj=request.getRequestDispatcher(”另一个资源的路径”);
常用方法: - 1.实现请求转发:forwardObj.forward(request,response);
2.实现请求包含:forwardobj.include(request,response);
1.请求转发:
特点:发送了一次请求,响应一次,和request域对象配合使用,可以实现值得传递。
转发路径:转发动作是在服务器内部实现的,所以转发路径不要携带项目名称。- 2.请求重定向:
特点:发送了两次请求,响应了两次,不能喝request域对象配合使用。
重定向路径:重定向动作在浏览器端执行的,所以路径需要携带项目名称。
- 2.请求重定向:
2.请求包含:
特点:发送一次请求,请求包含是由服务器完成。
请求包含路径:在服务器内部完成的,路径不需要携带项目名称。