1、获得请求Request的数据API
- 请求行
- String getMethod();//"get" or "post"
- String getRequestURI();
- StringBuffer getRequestURL();
- String getContextPath();//Web应用的名称
- String getQueryString()//method为"get"时,url地址后的参数字符串
- String request.getRemoteAddr();//访问的客户端IP地址
- 请求头
- String getHeader(String name);
- Enumeration getHeaderNames();
- Enumeration getHeaders(String name);
- int getIntHeader(String name);
- referer头的作用是:防止盗链(response返回页面时可以对其做一次判断,是否本网站请求访问)
- 请求体
- String getParameter(String name);
- String[] getparameterValues(String name);//例如:checkbox
- Enumeration getParameterNames();
- Map<String, String[]> getParameterMap();//
- 请求体中文乱码问题:
- post提交方式的乱码:request.setCharacterEncoding("UTF-8");
- get提交方式的乱码:parameter = new String(parameter.getbytes("iso8859-1"), "utf-8");
2、request完成请求转发
请求转发分为两步:
- 获得请求转发器----path是转发的地址
- RequestDispatcher getRequestDispatcher(String path);//地址是项目内,所以不用加项目名
- 通过转发器对象转发
- requestDispatcher.forward(ServletRequest request, ServletResponse reponse);
注意:转发与重定向的区别:
-
重定向两次请求,转发一次请求
-
重定向地址栏的地址变化,转发地址不变
-
重定向可以访问外部网站,转发只能访问内部资源
-
转发比重定向快,性能更优
-
3、BeanUtils第三方jar包工具类
BeanUtils.populate(bean, properties);//properties是一个Map集合,会自动匹配key与bean中的属性
//从前台获取的数据封装到JavaBean中,可以用BeanUtils(第三方jar包)
User user = new User();
BeanUtils.populate(user, request.getParameterMap());