Request和Response方法总结


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 = 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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值