Request 请求
HttpServletRequest概述
我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response。
service方法中的request的类型是ServletRequest,而doGet/doPost方法的request的类型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口,功能和方法更加强大
通过request获得请求行
getMethod() //获取请求方式
getContextPath //获得项目名
String requestURI=request.getRequestURI(); //网址
StringBuffer requestURL=request.getRequestURL(); //网址
getQueryString() //获取get请求后的参数
getRemoteAdder //获取客户端ip地址
通过request获取请求头
getHeader(“Referer”) //获取请求头
应用,防盗链
//获取指定的请求头
String referer=request.getHeader("Referer");
//防盗链
//判断请求头
response.setContentType("text/html;charset=utf-8");//解决中文乱码
if(referer!=null && referer.startsWith("http://localhost")){//判断是否以什么开头
response.getWriter().write("杨超越");
}else{
response.getWriter().write("你是小偷");
}
通过request获取请求体
//解决post提交 中文乱码问题
request.setCharacterEncoding("UTF-8");
//解决get方式中文乱码问题
username=new String(username.getBytes("ISO-8859-1"),"UTF-8");
//获取单个参数值
String username=request.getParameter("user"); //括号内填name
//获取一个name多个值的参数
String[] hobbys=request.getParameterValues("hobby");
//获取所有请求参数的map集合
Map
request域对象
作用范围:一次请求中
setAttribute(
String name,
Object o)
//
存入
getAttribute(
String name)
//
取值
removeAttribute(
String name)
//
删除值
请求转发
request.getRequestDispatcher(转发的地址).forward(request,response);
特点:
1.请求服务器1次
2.url地址不变化