HttpServletResponse对象
继承于ServletResponse接口,专门用于封装HTTP响应消息。由于HTTP响应消息分为状态行、响应消息头、消息体三部分,所以HttpServletResponse接口定义了向客户端发送响应状态码、响应消息头、响应消息体的方法。
1.发送状态码相关的方法
- setStatus(int status) 设置HTTP响应消息的状态码,并生成响应状态行。
- setError(int status) setError(int status,String mesage) 发送表示错误信息的状态码,message用于提示说明的文本信息
2.发送响应消息头相关的方法
这里写图片描述这里写图片描述
3.发送响应消息体相关的方法
- ServletOutputStream getOutputStream() 用于输出字节数组中的二进制数据
- PrintWriter getWriter() 用于输出字符文本内容
//getOutputStream和getWriter这两个方法互相排斥,调用了其中的任何一个方法后,就不能再调用另一方法。
String data="test"
//OutputStream w=new getOutputStream()
//w.writer(data.getBytes())
PrintWriter w=new getWriter();
w.writer(data);
4.解决中文输出乱码
response.setContentType("text/html;charset=utf-8");
5.网页重定向
response.sendRedirect("../test.jsp");
客户发送一个请求到服务器,服务器匹配servlet,servlet处理完之后调用了response的sendRedirect()方法,当这个servlet处理完之后,看到response.senRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端必须要再发送一个请求,去访问test.jsp,紧接着客户端受到这个请求后,立刻发出一个新的请求,去请求test.jsp,这里两个请求互不干扰,相互独立。所以,在sendRedirect()里面是两个请求,两个响应。
HttpServletRequest对象
继承于ServletRequest接口,专门用于封装HTTP请求消息。由于HTTP请求消息分为请求行、请求消息头、请求消息体三部分,所以HttpServletResquest接口定义了获取请求行、请求消息头、请求消息体的方法。
1.相关方法
这里写图片描述这里写图片描述
这里写图片描述
2.获取请求参数
- String getParameter(String name) 根据name返回参数值
- String[] getParameterValues(String name) 返回相同名称的多个参数值
- Enumeration getParameterNames() 返回所有参数名
- Map getParameterMap() 所以参数名和值装入Map对象并返回
3.通过request对象传递数据
- void setAttribute(String name,Object obj) 传入对象姓名和对象
- Object getAttribute(String name) 根据对象名字得到对象
- void removeAttribute(String name) 根据名字删除对象
- Enumeration getAttributeNames() 得到request中所以的对象名字
4.解决中文输出乱码
//此方法只在doPost中生效
request.setCharacterEncoding("utf-8");
//在doGet方法中中文要先转换,或者在Tomcat中配置,或者写一个过滤器解决
String a=new String(request.getParameter("a").getBytes("ISO-8859-1"),"utf-8");
5.请求转发
request.getRequestDispatcher("/test.jsp").forward(request, response);
客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的test.jsp,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个request,在servlet里面放的所有东西,在jsp中都能取出来,因此,jsp能把结果getAttribute()出来,getAttribute()出来后执行完把结果返回给客户端。整个过程是一个请求,一个响应。
Servlet HTTP 状态码
这里写图片描述这里写图片描述
这里写图片描述
网友评论