HttpServletRequest

HttpServletRequest

1.当用户通过浏览器对服务端发送请求,浏览器会将该请求封装成http请求,将它发送给服务端。
2.服务端的web应用服务器(如:Tomcat),接收该http请求,tomcat的内核首先对该http请求进行解析,把请求的信息封装为一个request对象,并且还创建一个Respose对象。
3.Tomcat内核根据请求的信息,获得请求的web应用,并在web应用中查询web.xml找到要访问的资源,Tomcat根据信息创建要访问的servlet对象。并调用init方法进行初始化。
4.Tomcat创建了servlet对象,并且调用service方法,并且将request对象,respose对象作为参数传递传递进去。开始业务逻辑的处理。
5.等到service方法执行完毕,Tomcat内核将会去Respose缓冲区中获取设置的内容。并将获取到的内容封装成一个http响应返回给客户端。
6.客户端解析http响应,显示页面。

一.HttpServletRequest概述

在创建Servlet会覆盖service方法,或doGet()/doPost,这些方法都有两个参数,一个为代表请求的request和代表响应的response。
service方法中的request的类型是ServletRequest,而doGet/doPost方法的request的类型是HttpServletRequest.HttpServletRequest是ServletRequest的子接口。功能和方法都更加的强大。

http请求与HttpServletRequest之间的联系

在http请求中包括三部分:请求行,请求头以及请求体。而request代表请求,所以可以对照着这三个方面学习该对象。

通过request获得请求行

在http请求的请求行中包括了:请求方式,请求资源,以及http的版本。
因此的request对象中有获取这些参数的方法:
获取客户端的请求方式:String getMethod()
获取客户端的请求资源:String getRequestURL(),StringBuffer getRequestURI()
获取WEB应用的名称:String getContextPath()

通过request获得请求头的信息

String getHeader(String name);

通过request获得请求体

请求体的内容是通过post提交的请求参数。
格式为:username=张三&password=123&hobby=football&hobby=basketball
获取请求体的方法:
    String getParameter(String name)
    Map<String,String[]> getParameterMap()
注:get请求方式的请求参数,上述方法也可以获得。

————>对于请求参数乱码问题:
1.乱码产生的原因:因为在浏览器中中文是使用utf-8进行编码,在传递给服务端时,是将中文的编码传递给服务端的,而在request对象中,它解码默认使用的是iso8859-1。因此就产生的乱码。因此要解决乱码问题,只需将编码和解码的方式颠倒过来。即需要将获取到的中文请求参数,以iso89-1的码表进行编码,然后在以utf-8的方式进行编码。

解决post提交方式的乱码:reques.setCharaterEncoding("utf-8");
解决get提交方式的乱码:paramter = new String(paramter.getBytes("iso8859-1"),"utf-8")

request的其他功能

1.request是一个域对象 
    request对象是一个存储数据的区域对象
存取数据
setAttibute(String name,Object o);
获取数据
getAttibute(String name)
移除数据
removeAttibute(String name)
注:request的作用范围是在一次请求中。

2.request完成请求转发

获得转发器-->path是转发的地址
RequestDispatcher  getRequestDispatcher(String path)
进行转发
requestDispatcher.forward(ServletRequest request, ServletResponse response)

注意:ServletContext域与Request域的生命周期比较?
ServletContext:
创建:服务器启动
销毁:服务器关闭
域的作用范围:整个web应用
request:
创建:访问时创建request
销毁:响应结束request销毁
域的作用范围:一次请求中

注意:转发与重定向的区别?
1)重定向两次请求,转发一次请求
2)重定向地址栏的地址变化,转发地址不变
3)重新定向可以访问外部网站 转发只能访问内部资源
4)转发的性能要优于重定向

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值