该对象表示浏览器的请求(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提供的转发方法.
Request中的Attribute在一次请求有效。一次请求:没有返回到浏览器,就为一次请求。
请求转发的的(uml)图
这里我们画图说明(uml)
1. 使用 forward 不能转发到 该web应用外的 url
2. 因为 forward 是发生在web服务器,所以 Servlet1 和 Servlet 2使用的是用一个request 和response.
l 使用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请求:
只要没有停止,也没有回到浏览器重定向,就算一次
如果转发多次,我们的浏览器地址栏,保留的是第一次 转向的那个Servlet Url