- Request和Response方法总结
- 方法
- 常见用法
- 获取请求参数
- 读取get方式提交的数据
- 读取post方式提交的数据
- 获取表单参数
- 获取打印流
- 中文乱码问题
- 重定向
- 刷新
- 转发
- Cookie
- Session
Request和Response方法总结
方法
request | 功能 |
getQueryString() | 获取请求参数 |
getMethod() | 获取请求类型 |
getContextPath() | 返回当前web项目相对路径 |
getInputStream() | 读取提交的数据流 |
getCookies() | 获取所有Cookie,返回一个Cookie数组 |
getParameter() | 获取元素 |
getParameterNames() | 获取所有请求参数,返回一个Enumeration枚举类 |
getAttribute() | 获取域中存储的数据 |
getAttributeNames() | 获取域中所有数据,返回一个Enumeration枚举类 |
getSession() | 获取Session对象 |
getRequestDispatcher() | 获取转发器,参数路径以/打头,代表当前web项目根目录(转发) |
setCharacterEncoding() | 在post里解决中文乱码 |
setAttribute() | 在Request域中存储数据 |
getRequestURL() | 返回全路径 |
getRequestURI() | 返回除去host(域名或者IP)部分 |
getHeader() | 获取请求头 |
getHeaderNames() | 获取请求头所有值,返回一个Enumeration枚举类 |
response | 功能 |
setContentType() | 中文乱码处理 |
setCharacterEncoding() | 在post里解决中文乱码 |
setStatus() | 设置状态码 |
setHeader() | 设置消息头 |
getWriter() | 获取通向浏览器的字符流(打印流) |
getOutputStream() | 获取通向浏览器的字节流(打印流) |
addCookie() | 通过响应添加Cookie |
sendRedirect() | 重定向 |
常见用法
获取请求参数
//获取请求的资源
System.out.println(request.getRequestURL());
System.out.println(request.getRequestURI());
//获取请求的方式
System.out.println(request.getMethod());
//获取请求头对应的值
String header = request.getHeader("Host");
System.out.println(header);
//获取请求头中所有的值,返回一个Enumeration枚举类
Enumeration<String> headerNames = request.getHeaderNames();
//Enumeration接口(枚举),调用nextElement()方法得到Enumeration枚举对象中的所有元素
while(headerNames.hasMoreElements()){
String head = headerNames.nextElement();
System.out.println(head);
}
读取get方式提交的数据
//获取请求参数
String queryString = request.getQueryString();
System.out.println(queryString);
读取post方式提交的数据
//获取请求数据流
ServletInputStream inputStream = request.getInputStream();
byte[] bytes = new byte[1024];
int len = inputStream.read(bytes);
String string = new String(bytes, 0, len);
System.out.println(string);
获取表单参数
//get和post方式都可以用该方法获取表单参数
//tomcat8下,get方式下,使用getParameter方法,中文不会乱码
String name = request.getParameter("name");
String pwd = request.getParameter("password");
System.out.println(name);
System.out.println(pwd);
获取打印流
//获取打印流的对象
PrintWriter writer = response.getWriter();
String html = "<html>";
html += "<head>";
html += "</head>";
html += "<body>";
html += "你好";
html += "</body>";
html += "</html>";
writer.write(html);
writer.close();
中文乱码问题
//get提交方式,解决中文乱码问题
URLDecoder.decode(queryString, "utf-8");
//post提交方式,解决中文乱码问题
//tomcat内部使用的是iso-8859-1的编码
request.setCharacterEncoding("utf-8");
//
String name = request.getParameter("name");
name = new String(name.getBytes("iso-8859-1"), "utf-8");
//解决响应的中文乱码问题 服务器发送给浏览器的内容的编码
response.setContentType("text/html;charset=utf-8");
重定向
//设置重定向使用的状态码
response.setStatus(302);
//设置重定向的url
response.setHeader("location", "/index.html");
//ServletApps为项目名在这里表示路径
response.sendRedirect("/ServletApps/MyServlet");
response.sendRedirect("index.html");
//重定向时,不能共享request域中的数据
request.setAttribute("id", 10);
//跳转到指定路径
//推荐如下写法
response.sendRedirect(request.getContextPath() + "/RedirectServlet");
---------------------------------------------------
//RedirectServlet.java
//获取request域中的数据
int id = (Integer)request.getAttribute("id");
//打印流打印数据
response.getWriter().write("RedirectServelt:" + id);
刷新
//定时刷新,每隔一秒刷新一次
response.setHeader("refresh", "1");
//指定时间(秒)后,跳转到另外的界面
response.setHeader("refresh", "3;url=/ServletApps/index.html");
转发
//request域
//向request域中写入数据
request.setAttribute("age", 10);
//转发
request.getRequestDispatcher("/ForwardServlet").forward(request, response);
----------------------------------------------------------------
//ForwardServalet.java
//获取request域中的数据
int age = (int)request.getAttribute("age");
//打印流打印数据
response.getWriter().write("ForwardServlet:" + age);
Cookie
//创建Cookie对象
Cookie cookie = new Cookie("name", "zhangsan");
//如果有相同的name值的Cookie,后一个会替换前一个Cookie内容
//Cookie中的name和value都是字符串类型
//Cookie中不能出现中文
Cookie cookie1 = new Cookie("name", "lisi");
//通过响应将Cookie数据发送到浏览器
response.addCookie(cookie);
//获取请求中的Cookie数据
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(Cookie cookie2 : cookies){
//获取Cookie的name和对应的value
System.out.println(cookie2.getName());
System.out.println(cookie2.getValue());
}
}
Session
//根据Session的id查找服务器是否有对应的Session对象,如果有返回Session对象;如果没有创建Session对象
//创建Session对象后,会将JSESSIONID以Cookie的形式存在浏览器
HttpSession session = request.getSession();
//Session的id,唯一的(JSESSIONID)
String id = session.getId();
System.out.println(id);
//默认情况下,JSESSIONID的过期时间是会话结束时,为了能正常访问Session对象,需要手动将JSESSIONID存储到Cookie中,并设置一个合适的过期时间
Cookie cookie = new Cookie("JSESSIONID", id);
cookie.setMaxAge(60);
response.addCookie(cookie);