您的位置:首页 > 理论基础 > 计算机网络

Servlet学习笔记(HttpServletRequest对象)

2016-07-20 21:48 253 查看

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在“一次请求”中有效。

一次请求:没有返回到浏览器,就为一次请求。

请求转发时序图:



使用 forward 不能转发到 该web应用外的 url

因为 forward 是发生在web服务器,所以 Servlet1 和 Servlet 2使用的是用一个request 和response.

使用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服务器,并没有将访问资源重定向,所以浏览器的地址栏并没有改变)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet