一、HttpServletRequest类
1 //获取请求的资源路径 2 System.out.println(req.getRequestURI()); 3 //获取请求的统一资源定位符 4 System.out.println(req.getRequestURL()); 5 //获取请求头 6 System.out.println(req.getHeader("User-Agent")); 7 //获取请求体里的参数 8 System.out.println(req.getParameter("name")); 9 //获取请求的ip地址 10 System.out.println(req.getRemoteHost()); 11 //获取请求的方法 12 System.out.println(req.getMethod()); 13 //设置域数据 14 req.setAttribute("key2", "value2"); 15 //获取域数据 16 Object key2 = req.getAttribute("key2"); 17 System.out.println(key2); 18 //请求转发 19 req.getRequestDispatcher("/servlet2").forward(req,resp);
二、doGet请求的中文乱码解决
//获取请求体的参数出现中文乱码的解决方案 String name = req.getParameter("name"); String newString = new String(name.getBytes("iso-8859-1"),"UTF-8"); System.out.println(newString);
三、doPost请求的中文乱码解决
1 //设置请求体的字符集,解决中文乱码问题 2 req.setCharacterEncoding("UTF-8");
四、请求转发
不能访问web工程以外的数据
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取请求的参数 String name = req.getParameter("name"); System.out.println(name); //盖章 if("Tom".equalsIgnoreCase(name)){ req.setAttribute("password","123456"); } //走路 req.getRequestDispatcher("/servlet4").forward(req,resp); }
六、base标签的作用
<base href="http://localhost:8080/untitled/">
/如果被服务器解析-->http://ip/port/工程路径/
1 req.getRequestDispatcher("/").forward(req,resp); 2 req.getRealPath("/"); 3 <url-pattern>/servlet3</url-pattern>
4//特殊情况
5 response.sendRedirect("/")将/发送给浏览器解析,得到http://ip:port/
七、HttpServletResponse类
PrintWriter writer = resp.getWriter();
writer.write("123456");
//设置服务器使用UTF-8字符集 resp.setCharacterEncoding("UTF-8"); //设置让浏览器也使用UTF-8字符集 resp.setHeader("Content-Type","text/html;charset=UTF-8") //以上方式不推荐,以下方式能够一步到位 resp.setContentType("text/html;charset=UTF-8")
八、请求重定向
1 //方案一:推荐 2 resp.setStatus(302); 3 resp.setHeader("location","http://localhost:8080/untitled/index.jsp"); 4 //方案二:推荐 5 resp.sendRedirect("http://localhost:8080/untitled/index.jsp");
原文:https://www.cnblogs.com/array1688/p/14053467.html