Request回顾
1、从请求中拿到响应信息
- 请求行:GET/request/servelet/haha HTTP/1.1
- 请求头内容:request.getHeader()
- 请求报文中所携带的(请求参数)的数据,比如用户名、密码等表单数据:
-
- request.getParameter(key) 一个key对应一个value
-
- request.getParameterValue(key) 一个key对应多个value
- 请求表单中的路径:绝对路径和相对路径
2、请求转发 - 转发对象(目标组件):Servlet,jsp,html
- 请求转发的路径问题:绝对路径和相对路径(请求转发只限于当前应用)
- 实际转发的api:
-
- 转发器 Request.getDispatcher()得到一个转发器
-
- 调用Dispatcher对象的forward或者include方法实现请求转发的区别:最大的区别体现在源组件的响应是否包含在最终的响应结果中
简介
- request和response对象代表请求和响应,那我们要获取哭护短提交过来的数据只需要找request对象就行了。要想容器或者客户机输出数据,只需要找response对象就行了
HttpServletResponse
- HttpServletResponse对象代表服务器的响应。这个对象中封装了向客户端发送数据、发送响应头、发送响应状态码的方法。
1、发送响应状态码
2、向客户端发送信息
出现乱码:编解码不一致
- 方式1
getCharacterEncoding()可以得出发送信息(编码)时默认的的字符集是ISO-8859-1,可以使用SetCharacterEncoding设定编码方式,然后在浏览器中调整解码字符集(浏览器自带或三方插件)。 - 方式2通过api既指明编码方式也指明解码方式
response.setContentType(“text/html;charset=utf-8”); - 方式3 使用字节流
首先对于字节流本身没有字符集这个改变,但是要将字符串转化成字节流必须经过一次编码过程(jvm默认的字符集 utf-8)
response.getOutputStream().write(“你好 “.getBytes(“utf-8”));
System.out.println(“jvm default:”+Charset.defaultCharset()); response.setContentType(“text/html;charset=utf-8”); - 方式4:
response.setCharacterEncoding("utf-8");
response.getWriter().write(
"<html lang=\"en\">\n"
+ "<head>\n"
+ " <meta charset=\"UTF-8\">\n"
+ " <title>Title</title>\n"
+ "</head>\n"
+ "<body>\n"
+ "你好\n"
+ "\n"
+ "</body>\n"
+ "</html>");
操作编码的字符集的api:response。setCharacterEncoding();getBytes()
操作浏览器解码的字符集:response。setContentType()
response常见应用 请求头
- 发送http头,控制浏览器定时刷新网页
1、输入一个随机数,控制浏览器每2s刷新一次
form action="servlet/responseheader" method="get"
int i=new Random().nextInt(10000);
//通过http协议,告诉浏览器,以2s的频率,刷新页面(即重新发出请求,并获取响应)
response.setHeader("refresh","2");
response.getWriter().println(i);
2、利用refresh刷新到其他组件。模拟注册页面,注册梳理并交给一个Servlet,在Servlet处理完成后,显示注册成功并转向主页
response.setHeader("Refrash","5;http://www.baidu.com");
response.setHeader("Refresh", "3;/response/login.html");
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("恭喜你注册成功");
response常见应用 Expires
response.setDateHeader(“Expires”, System.currentTimeMillis() + 60 * 1000);
- 发送http头,控制浏览器缓存当前文档内容
- 作用:利用缓存能够减轻服务器的负担
response常见应用 请求重定向
- 请求重定向指:一个web资源受到客户端请求后,通知另外一个web资源,这称之为请求重定向
-
重定向与Refresh不同,重定向并未直接跳转,而是向浏览器指明,下一次请求的目标,由浏览器自己重新构建http请求,访问重定向响应报文所指向的地址
response.sendRedirect(“http://www.baidu.com“);
// 自己模拟重定向的响应报文(sendRedirect),自己实现重定向
response.setStatus(302);
response.setHeader("Location", "http://www.baidu.com");
response.getWriter().write("hello, redirect");
重定向之后的代码仍然会执行
指定自己的默认字符集为utf-8;分为tomcat和idea
tomcat
idea