方法概述:
获取用户信息:
getResquestURL() 返回客户端发出请求的完整URL
getResquestURI() 返回客户端发出请求的资源名部分
getQueryString() 获取请求头以GET方式提交的所有传递的参数和值
getRemoteAddr() 获取请求方的 IP
getRemoteHost() 获取请求方的主机名(如果客户DNS没注册则返回 IP)
获取HTTP信息:
getHead(消息头) 获取HTTP的某个消息头内容
getHeaderNames() 获取HTTP的所有消息头,返回的是枚举
用 while(has) 方式遍历
获取表单内容:
getParameter()
getParameterValues()
转发:
转发是在服务器端完成的,所以我们使用的是同一个 response 和 request,request.getRequestDispatcher(“/servlet”) 不用写应用名
注意:
1. forward 不可以请求该 web 应用外的资源
2. forward 是发生在 web 服务器的,所以使用的是同一个 response request
3. 使用 sendRedirect 方法不能通过 request.setAttr 把属性传给下个Servlet
因为,重定向后,request 对象是不同的
简言之:
一个 web 资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理,称之为请求转发
一个web资源收到客户端请求后,通知浏览器去访问另一个web资源,称之为请求重定向
sendRedirect 和 forward 区别 ?
1. 叫法不同,第一个是 重定向、第二个是 转发
2. 实际发生的位置不一样
sendRedirect 发生在 浏览器客户端
forward 发生在 web 服务器
3. 用法不一样
request.getRequestDispatcher(“/ WEB应用下的页面”).forward( )
response.sendRedirect(“/ 指明 WEB应用 / 页面”);
4. 能够去的范围不一样
forward 方法只能转发给同一个 web 站点的资源,而 sendRedirect 方法还可以定位到同一个 web 站点的其他应用
5. 转发发生在服务器,是不会影响到浏览器上面的地址栏的。
重定向发生在客户端,浏览器的地址栏会发生改变
6. forward 方法在运行时 request 和 response 是相同的
sendRedirect 方法在运行时 request 和 response 是不同的
待补充.....