Request
-
获取请求行数据 请求方式 /虚拟目录/路径/参数 版本号
1.获取请求方式:String getMethod() 2.获取虚拟目录(掌握):String getContextPath() 3.获取Servlet路径:String getServletPath() 4.获取get方式的请求参数:String getQueryString() 5.获取URI(掌握): String getReuestURI();-->虚拟目录+路径 StringBuffer getRequestURL()-->http:ip地 址+虚拟目录+路径 6.获取协议版本号:String getProtocol() 7.获取客户端的ip地址:String getRemoteAddr()
-
获取请求头数据
1.通过请求头的名称获取请求头的值(掌握):String getHeader(String naem); 2.获取所有请求头名称:Enumeration<String> getHeaderNames()
可以通过获取请求头的方式来判断浏览器的版本
请求头:user-agent-->请求版本 String agent = request.getHeader("user-agent") if(agent.contains("Chrome")){sout("谷歌")}else if(...)
防盗链
请求头:referer String referer = request.getHeader("referer"); if(referer!=nuull){ if(referer.contains("自己的地址")){ //正常访问 }else{ //非正常 } }
-
获取请求体数据–>post方式
步骤:
1.获取流对象
*BufferedReader getReader():获取字符输入流,只能操作字符数据
*ServletInputStream getInputStream():获取字节输入流 操作所有数据
2.再从流对象中拿数据
*字节 readeline()
-
其他方法(掌握):
- 获取请求参数(通用的方式):
String getParameter(String)-->根据参数名获取参数值 String[] getParameterValues(String name)-->根据参数名获取参数值 Enumeration<String> getParameterNames():获取所有请求的参数名 Map<String STring[]> getParameterMap():获取所有参数的Map集合
- 请求转发:
1.通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String Path) 2.使用RequestDispatcher对象来进行转发:forwaed(ServletRequest request , ServletRespomse respomse)
- 共享数据:
- 域对象:一个有作用范围的对象,可以在范围共享数据
- request域:代表一次请求的范围,一般用于请求的多个资源共享数据
request域的方法:
1.setAttribute(String name ,Object obj);存取数据
2.Object getAttitude(String naem):通过键获取值
3.removeAttribute(String name)
- 获取ServletContext:
ServletContext getServletContext()
- 中文乱码问题:
get方式:tomcat 8 已经解决
post方式: 再获取参数前,设置request的编码request.setCharacterEncoding("utf-8");
- 请求转发的特点
- 浏览器地址栏路径不发生变化
- 只能转发道当前服务器内部资源中
- 转发是一次请求