Servlet学习笔记(HttpServletRequest对象)

HttpServletRequest

对象表示浏览器的请求(http请求), 当web 服务器得到该请求后,会把请求信息封装成一个HttpServletRequest 对象。
该对象有以下一些重要的方法:

(1)getRequestURL方法返回客户端发出请求时的完整URL。

(2)getRequestURI方法返回请求行中的资源名部分。

(3)getQueryString 方法返回请求行中的参数部分(参数名+值)。
该函数可以获取请求部分的数据 比如:
http://localhost/web名?username=abc&pwd=123
request.getQueryString();
就会得到 username=abc&pwd=123

(4)getRemoteAddr方法返回发出请求的客户机的IP地址

(5)getRemoteHost方法返回发出请求的客户机的完整主机名

(6)getRemotePort方法返回客户机所使用的网络端口号
客户机的端口号是随机选择的,web服务器的端口号是一定的

关于请求转发

requeset.getRequestDispatcher(资源地址).forward(request,response);
/*资源地址:不需要项目名。因为它只是在WEB服务器内部转发。*/

转发示意图

Request中的Attribute在“一次请求”中有效。
一次请求:没有返回到浏览器,就为一次请求。

请求转发时序图:
请求转发时序图

  1. 使用 forward 不能转发到 该web应用外的 url
  2. 因为 forward 是发生在web服务器,所以 Servlet1 和 Servlet 2使用的是用一个request 和response.
  3. 使用sendRedirect() 方法不能通过request.setAttribute() 把 属性传递给下一个Servlet

sendRedirect()和request.getRequestDispatcher().forward(request,response)的区别

(1)sendRedirect() 为重定向 forward() 为转向
(2)实际发生的位置不一样,sendRedirect 发生 浏览器,forward 发生 web服务器
(3)用法不一样:

/*forward用法*/
request.getRequestDispatcher(“/资源URI”).forward(request,response)
/*sendRedirect用法*/
response.sendRedirect(“/web应用/资源URI”);

(4)能够去URL 范围不一样
sendRedirect 可以去 外边URL
forward 只能去当前的WEB应用的资源

关于“一次请求”

只要没有停止,也没有回到浏览器重定向,就算一次,如下图所示:
一次请求
如果转发多次,我们的浏览器地址栏,保留的是第一次 转向的那个Servlet Url(因为转发发生在web服务器,并没有将访问资源重定向,所以浏览器的地址栏并没有改变)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值