1、获得请求行
获得请求的资源:
String getContextPath() ---web应用的名称
String getQueryString() ---- get提交url地址后的参数字符串
username=zhangsan&password=123
注意:request获得客户机(客户端)的一些信息
request.getRemoteAddr() --- 获得访问的客户端IP地址
package cn.yuchao.general;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/general")
public class General extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获得请求方法
System.out.println("Method:"+request.getMethod());
//获得请求资源地址
System.out.println("URI:"+request.getRequestURI());
System.out.println("URL"+request.getRequestURL());
//获得get提交的字符串Query String
System.out.println("Query String:"+request.getQueryString());
//获得应用名
System.out.println("web应用名称:"+request.getContextPath());
//获得远程地址
System.out.println("remote address:"+request.getRemoteAddr());
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
2、获得请求头
long getDateHeader(String name)
Enumeration getHeaders(String name)
int getIntHeader(String name)
referer头的作用:执行该此访问的的来源做防盗链
String refe = request.getHeader("referer");
if(refe.startsWith("http://localhost:8080")) {
response.getWriter().println("是本网站链接访问!");
} else {
}
3、获得请求体
String getParameter(String name)
String[] getParameterValues(String name)
Enumeration getParameterNames()
Map<String,String[]> getParameterMap()
解决post提交方式的乱码:request.setCharacterEncoding("UTF-8");
解决get提交的方式的乱码:
parameter = new String(parameter.getbytes("iso8859-1"),"utf-8");
通过getParameterMap处理数据:key为String,value为String[]
@WebServlet("/body")
public class Body extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//通过getParameterMap获取值
Map<String, String[]> map = request.getParameterMap();
for(Map.Entry<String, String[]> entry:map.entrySet()) {
System.out.print(entry.getKey()+"---");
for(String str:entry.getValue()) {
System.out.print(str+" ");
}
System.out.println();
}
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
4、request是一个对象域
setAttribute(String name, Object o)
getAttribute(String name)
removeAttribute(String name)
注意:request域的作用范围:一次请求中
(1)Request请求转发
重定向可以访问外部网站,请求转发只能访问内部资源