一: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项目之间的跳转;解决重复重复刷新界面问题。