一、请求的方式
- 地址栏输入
- 超链接
- Form表单
- ajax
- 请求转发
- 重定向
二、HttpServletRequest 对象
常用形式
1) 常用方法
常用方法 | 描述 |
---|---|
getRequestURL() | 获取客户端发出的请求时的完整 URL |
getRequestURI() | 获取请求行中的资源名称部分(项目名称开始) |
getQueryString() | 获取请求行中的参数部分 |
getMethod() | 获取客户端请求方式 |
getProtocol() | 获取 HTTP 版本号 |
getContextPath() | 获取 webapp 名字 |
2) 获取请求头
方法 | 描述 |
---|---|
getHeader(String) | 获取单个请求头内容 |
Enumeration getHeaderNames() | 获取所有的请求头名称集合 |
3) 获取客户端请求参数(客户端提交的数据)
方法 | 描述 |
---|---|
getParameter(name) | 获取指定名称的参数 |
getParameterValues(Stringname) | 获取指定名称参数的所有值 |
getParameterNames() | 获取一个包含请求消息中的所有参数名的 Enumeration 对象 |
getParameterMap() | 返回一个保存了请求消息中的所有参数名称和值的 Map 对象 |
乱码问题
服务器与客户端编码统一
Get:
参数在请求行里 默认使用ISO-8859-1
Tomcat8及以上版本 中文可能不会乱码
Tomcat7及以下版本 中文可能乱码 万鲲 → GBK进行编码 → 1011 → 服务器默认通过ISO-8859-1进行解码 万鲲
解决方法:
new String(uname.getBytes(“ISO-8859-1”),“UTF-8”);
Post:
参数在请求体里,使用页面编码
Tomcat8及以上版本 中文乱码 万鲲 前台 使用页面编码UTF-8 后台 ISO-8859-1
Tomcat7及以下版本 中文乱码 万鲲 前台 使用页面编码UTF-8 后台 ISO-8859-1
解决方法:
设置服务器默认解码字符集 针对请求体 放在使用request对象之前
req.setCharacterEncoding(“UTF-8”);
public class Servlet02 extends HttpServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// document.charset 浏览器控制台得到字符集
// 接收前台参数 万鲲
req.setCharacterEncoding("UTF-8");
String uname = req.getParameter("uname");
String upwd = req.getParameter("upwd");
// 万能方法 解决乱码问题
// String str = new String(uname.getBytes("ISO-8859-1"),"UTF-8");
System.out.println("账户:" + uname + ",密码:" + upwd);
//System.out.println(str);
}
}
请求转发
req.getRequestDispatcher("转发的路径").forward(req,resp);
request作为域对象
通过该对象可以在一个请求中传递数据,作用范围:在一次请求中有效,即服务器跳转有效。
request.setAttribute(String name, Object o); // 设置域对象内容
request.getAttribute(String name); // 获取域对象内容
request.removeAttribute(String name); //删除域对象内容