HttpServletRequest对象的详解

该对象表示浏览器的请求(http请求), web 服务器得到该请求后,会把请求信息封装成一个HttpServletRequest 对象

• getRequestURL方法返回客户端发出请求时的完整URL

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

• getQueryString 方法返回请求行中的参数部分(参数名+)

该函数可以获取请求部分的数据 比如

http://localhost/web?username=abc&pwd=123

request.getQueryString(); 就会得到  username=abc&pwd=123

 

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

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

getRemotePort方法返回客户机所使用的网络端口号

客户机的端口号是随机选择的,web服务器的端口号是一定的

getLocalPort方法返回web服务器所使用的网络端口号

getLocalAddr方法返回WEB服务器的IP地址。

getLocalName方法返回WEB服务器的主机名

 url uri 的区别

比如:

Url=http://localhost:8088/servletPort3/GetinfoServlet 完整的请求

Uri=/servletPort3/GetinfoServlet web应用的名称+资源的名称


请求转发requeset.getRequestDispatcher(资源地址).forward(request,response);

资源地址:不需要项目名。因为它只是在WEB服务器内部转发。

Request.getRequestDispatcher(资源地址).forward(request,response);

我们现在使用 请求转发的方法来实现上次我们使用 response.sendRedirect() 实现效果

使用 request提供的转发方法.

HttpServletRequest对象的详解_第1张图片


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

 请求转发的的(uml)

这里我们画图说明(uml)

HttpServletRequest对象的详解_第2张图片

1. 使用 forward 不能转发到 该web应用 url

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

使用sendRedirect() 方法不能通过request.setAttribute() 把 属性传递给下一个Servlet

sendRedirect() forward 的区别是什么

(1) 叫法 sendRedirect() 请求重定向,  forward() 请求转发

(2) 实际发生的位置不一样

sendRedirect 发生 浏览器

forward 发生 web服务器

(3) 用法不一样

request.getRequestDispatcher(“/资源URI”).forward(request,response)

response.sendRedirect(“/web应用/资源URI”);

(4) 能够去URL 范围不一样

sendRedirect 可以去 外边URL

forward 只能去当前的WEB应用的资源

☞ 什么是一次 http请求:

只要没有停止,也没有回到浏览器重定向,就算一次

HttpServletRequest对象的详解_第3张图片

如果转发多次,我们的浏览器地址栏,保留的是第一次 转向的那个Servlet Url


你可能感兴趣的:(Servlet&JSP)