servlet (4) HttpServletRequest 和HttpServletResponse

一:HttpServletRequest

      request对象是请求对象。请求一次就创建一个request对象,并且存储了请求的信息。所以在表单提交中,我们可以通过request对象获取用户提交的所有信息。详见下文。

     常用方法:
        request.getContextPath()   获取根路径。

        request.getParameter("name")   根据name获取value值

        request.getParameterNames("name")   根据name获取一组值,如多选框

        request.getRequestURL();   获取请求的url

        request.getRequestDispatcher("路径").forward(request,response)  转发是一次请求

        request.getCookie();获取请求中的cookie

        request.getSession(true)获取session。 默认参数为true表示如果没有获取到,则重新创建并返回;false如果没有获取到,返回null

 

       前面说过servletcontext也可以传递数据,只不过servletcontext对象是wep项目的上下文环境,可以多个servlet之间传递数据,也可以跨用户传递数据,更能跨请求传递数据;而request对象则没有那么大功能,它不能跨请求传递数据,也不能跨用户传递数据,只能跨servlet传递数据

 

二:HttpServletResponse

     response对象是相应对象。  可以说根request对象是一对,有请求就要有相应。

    常用方法

       response.setContentType("text/html;charset=gb18030");设置相应编码,解决中文乱码问题

       response.getWriter();   获取响应流,用户打印在浏览器界面上

       response.sendRedirect("路径)  重定向。重定向根转发的区别是:重定向是两次请求,转发是一次请求。

       response.addCookie(cookie)   相应cookie到浏览器客户端

 

三:转发和重定向

     1:转发是request对象实现:request.getRequestDispatcher("路径").forward(request,response)

        重定向是request对象实现的: response.sendRedirect("路径) 

   2:转发是一次请求,重定向是两次请求。所谓一次请求是从浏览器开始请求,服务器响应,到结束响应。

        转发只能在一个web项目内跳转。转发过程中浏览器标题栏上面始终显示开始的地址。

        重定向能在不同项目间跳转,从这个项目的一个界面可以跳转到另一个项目的一个界面,所以重定向的路径是有项目名称的,而转发路径不用带项目名称。由于重定向是两次请求所以浏览器标题栏上面的地址会改变。

   3:转发的用处:传递数据,由于转发过程中传递了request,response对象,所以达到数据传递的作用;页面刷新问题,由于转发过程中浏览器的URL地址是开始时的,如果重新加载该页面的话,操作又会被重新调用。

        重定向:不同web项目之间的跳转;解决重复重复刷新界面问题。

你可能感兴趣的:(servlet (4) HttpServletRequest 和HttpServletResponse)