一 什么是 Request 对象 全称为 (HttpRervletRequset)
客户端向服务器发出的请求,所有客户端信息和客户端提交的数据均封装在 Request 对象中,
服务器要拿到这些数据,必须使用 Request 的API
二 Request 常用的API
getRequestURL() 方法返回客户端发出请求时的完整 URL
getRequestURI() 方法返回请求行中的资源名部分
getQueryString() 方法返回请求行中的参数部分
getRemoteAddr() 方法返回发出请求客户机的 IP 地址
getLocalAddr() 方法返回 Web 服务器的 IP 地址
getMethod() 方法返回客户机请求方式 GET 和 POST (返回的是大写字母)
getContextPath() 方法返回的是房前 Web 应用根目录
getServletPath() 方法返回 Servlet 映射路径
获取请求头的信息
getHender(User-Agent) 方法返回请求头的值
获取请求体的信息
getParameter() 方法通过 name 获取值
getParameterValue() 方法通过 name 获取多个值
getParameterNames() 方法得到所有的 name
三 表单提交中文乱码的原因和解决方案
原因:
客户端以 UTF-8 将中文编码,而 Tomcat 却用的是 ISO8859-1 解码,违背了编码和解决字
符集相同的原则,所有客户端收到会乱码...
解决:
适合于 GET 和 POST
// 还原
byte[] buf = username.getBytes("ISO8859-1");
// 解码
username = new String(buf,"UTF-8");
专用方式:
只适合 POST 请求
1 . Resposet.setCharacterEncoding("字符集") 针对请求体内容按"字符集"编码
四 什么是域对象
域对象可以理解为一个容器,可以暂存 String-Object 这种 key-value 形式的数据
域对象保存时间是不同的,有的域对象保存时间在一次请求中;有的域对象保存时间在一次会话中;
有的域对象保存时间在整个应用中。其中Request域对象保存时间只在一次请求中,也就是说
一次请求完毕后,Request域对象就销毁了,一旦Request域对象销毁,那么存在其中的数据也
就不存在了。
为什么需要域对象 ?
有时我们的业务,一个Servlet完成不了,需要另一个Servlet帮忙,这就是说,
我们需要在二个或多个Servlet之间传递数据,域对象就负责完成这项任务
Request 对象有二层含义:
01——代表客户端向服务器的请求对象,如getParameter(“username”)
02——代表可以暂存数据的域对象,如下如示API
Request 作为域对象常用的 API
setAttribute():向域对象中绑定key=value形式的数据
getAttribute():从域对象中根据key找value,如果取到不到,返回NULL
removeAttribute():从域对象中删除key对应的value
(生命周期比较短)
Request 何时创建
一次请求来到 Servlet 就创建.
Request 何时销毁
服务器将内容响应到客户端后, Request 就销毁
五 Request 转发
多个Servlet配合工作
有些时候,一个Servlet不能很好的完成业务工作,需要另一
个Servlet来配合。这就是说,很有可能一个Servlet需要将
流程交由另一个Servlet,此时就要用转发或重定向这二个
技术了,这里我们谈Request转发。
方法 : Request. getRequestDispatcher("路径").forward(请求,响应)
浏览器地址栏不变,但后台经过了两个 Servlet
在转发情况下: 两个 Servlet 共享 Request 对象, 所以 前者能取出后者
以 POST 当时转发前者,会以同样的 POST 访问后者
客户端完全不知服务器内部的多个 Servlet 之间的交互过程
浏览器输出中文乱码的原因和解决方案(中文乱码一定要在获取流对象之前)
字节方式输出中问的原因 两个不同的字符编码.解码
字节方式输出中问解决方案 设置客户端的响应头
Request 详解 第六更
最新推荐文章于 2024-05-09 17:14:13 发布