知识学习——Servlet请求与响应

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 状态码

这里写图片描述
这里写图片描述
这里写图片描述

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页