一、请求响应及常用状态码
1.请求:在浏览器地址栏输入地址,点击回车请求服务器
2.响应:服务器根据浏览器发送的请求,返回数据到浏览器在网页上进行显示
3.常用状态码:
200 响应成功
302重定向
404请求资源找不到
500服务器代码出异常
二、如何查看网页中的响应头
百度:打开网页按F12,开启Chrome开发者工具,刷新网页后找到Network界面中的headers菜单,下拉点击User-AGgent
搜狗:右键单击审查元素,找到Network,刷新页面点击header菜单
谷歌:按下F12,打开开发者工具,切换到Network选项卡,刷新页面,点击具体的request,就可以查看http相关的信息了
四、页面中定时跳转与刷新
1.定时跳转需要用到Refresh响应头
例:
response.setHeader(“Refresh”,“5;URL=/chapter/login.html”);
这里面的“5”代表定时跳转的时间;“URL”表示跳转页面地址
2.定时刷新:当前页面地址不发生改变且可以自己定时刷新,页面数据也会发生改变
例:
response.setHeader(“Refresh”,“5”); response.getWriter().print(new Data());
五、解决中文乱码问题
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 2 // 处理字符流流的中文乱码问题 3 //2.处理服务器端的编码,让这个编码支持中文 4 //response.setCharacterEncoding("utf-8"); 5 //3.处理浏览器端的编码 6 //response.setHeader("Content-Type", "text/html;charset=utf-8"); 7 response.setContentType("text/html;charset=GB18030"); 8 String data="中国"; 9 //4.获取字符流 10 PrintWriter pw = response.getWriter(); 11 pw.print(data); 12 13 ServletOutputStream out = response .getOutputStream() ; 14 //2.处理乱码:服务器端的编码和浏览器端的编码一致 15 //3.让浏览器短的编码也是utf-8 16 //response.setHeader("Content-Type", "text/html;charset=utf-8"); 17 response.setContentType("text/html;charset=utf-8"); 18 //4.让服务器端的中文编码格式是utf-8 19 out.write(data.getBytes("utf-8")); 20 }
六、获取请求头的方法
1.根据请求头获取值:
String value = getHeader(消息头名称);
2.获取所有请求头:
Enumeration er = getHeaderNames();
七、请求中文乱码解决方式
1 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 2 3 //1.获取用户名 4 response.setContentType("text/html;charset=utf-8"); 5 String value = request.getParameter("username"); 6 String newvalue = new String(value.getBytes("ISO8859-1"),"utf-8"); 7 response.getWriter().print("处理后的值:"+newvalue); 8 } 9 10 private void paramMethod(HttpServletRequest request) { 11 // 1.根据name属性值,获取用户输入值: 12 String username = request.getParameter ("username"); 13 String password = request.getParameter ("password"); 14 //2.获取用户选择的值 15 String[] hobbys = request.getParameterValues("hobby"); 16 //response.getWriter() .println ("username:"+username+"
"); 17 //response.getWriter() .println ("password:"+password+"
"); 18 //response.getWriter() .println ("hobbys:"+Arrays.toString(hobbys)); 19 Mapmap=request.getParameterMap(); 20 //遍历map 21 Set set=map.keySet(); 22 for(String key:set) { 23 String[] value = map.get(key); 24 System.out.println("name属性旳值:"+key+" "+Arrays.toString(value)); 25 } 26 } 27 28 /** 29 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 30 */ 31 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 32 33 //doGet(request, response); 34 //1.获取用户输入的值 35 //处理请求中文代码的乱码问题 36 request.setCharacterEncoding("utf-8"); 37 String value =request.getParameter("username"); 38 System.out.println(value); 39 //处理响应中文 40 response.setContentType("text/html;charset=utf-8"); 41 PrintWriter out=response.getWriter(); 42 out.print(value); 43 44 }
八、请求重定向与请求转发的区别
1.请求转发:
特点:发送了一次请求,响应一次,和request域对象配合使用,可以实现值得传递。
转发路径:转发动作是在服务器内部实现的,所以转发路径不要携带项目名称。
2.请求重定向:
特点:发送了两次请求,响应了两次,不能喝request域对象配合使用。
重定向路径:重定向动作在浏览器端执行的,所以路径需要携带项目名称。
九、请求包含
请求包含的动作
PrintWriter out = response.getWriter() ; out .print (" including before----"+"
") ;
2020-03-28 16:01:26