美文网首页
知识学习——Servlet请求与响应

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

作者: XueFengPlay | 来源:发表于2017-12-04 14:43 被阅读0次

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

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

    相关文章

      网友评论

          本文标题:知识学习——Servlet请求与响应

          本文链接:https://www.haomeiwen.com/subject/xbkxixtx.html