1.获取请求行数据
@WebServlet("/requestDemo1")
public class requestDemo1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取请求方式:GET
String method = request.getMethod();
System.out.println(method);
//√获取虚拟目录:/day13
String contextPath = request.getContextPath();
System.out.println(contextPath);
//获取Servlet路径:/requestDemo1
String servletPath = request.getServletPath();
System.out.println(servletPath);
//获取get方式请求参数:name=lisi
String queryString = request.getQueryString();
System.out.println(queryString);
//√获取请求URL:http://localhost:8080/day13/requestDemo1
/URI:/day13/requestDemo1
//URL统一资源定位符
//URI统一资源标识符
StringBuffer requestURL = request.getRequestURL();
System.out.println(requestURL);
String requestURI = request.getRequestURI();
System.out.println(requestURI);
//获取协议及版本:HTTP/1.1
String protocol = request.getProtocol();
System.out.println(protocol);
//获取客户机的IP地址:0:0:0:0:0:0:0:1
String remoteAddr = request.getRemoteAddr();
System.out.println(remoteAddr);
}
}
2.获取请求头数据
@WebServlet("/requestDemo2")
public class requestDemo2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取请求头数据:user-agent
String agent = request.getHeader("user-agent");
if(agent.contains("chrome")) {
System.out.println("谷歌");
} else if(agent.contains("Firefox")) {
System.out.println("火狐");
}
//获取请求头数据:referer
String referer = request.getHeader("referer");
System.out.println(referer);
}
}
3.获取请求体数据
只有POST方式才有请求体
步骤:
1.获取流对象
BufferedReader getReader():获取字符输入流,只能操作字符数据
ServletInputStream getInputStream():获取字节输入流,可以操作所有类型的数据
2.再从流中拿数据
@WebServlet("/requestDemo3")
public class requestDemo3 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取请求消息体--请求参数
//1.获取字符流
BufferedReader br = request.getReader();
//2.读取数据
String line = null;
while((line = br.readLine()) != null){
System.out.println(line);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
其他功能:
获取请求参数通用的方式:不论get还是post请求方式都可以使用下列方法来获取请求参数
1.String getParameter(String name):根据参数名称获取值
2. String[] getParameterValues(String name):根据参数名称获取参数值的数组
3. Enumeration<String> getParameterNames():获取所有请求的参数名称
4. Map<String,String[]> getParameterMap():获取所有参数的map集合
中文乱码问题:
get方式:tomcat8 无乱码问题
post方式:会乱码
解决:
request.setCharacterEncoding("UTF-8");
@WebServlet("/requestDemo4")
public class requestDemo4 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//POST获取请求参数
//根据参数名称获取请求参数
String username = request.getParameter("username");
/*System.out.println("post");
System.out.println(username);*/
//根据参数名称获取参数值的数组
String[] hobbies = request.getParameterValues("hobby");
/*for (String hobby:hobbies) {
System.out.println(hobby);
}*/
//获取所有请求的参数的名称
Enumeration<String> parameterNames = request.getParameterNames();
/*while (parameterNames.hasMoreElements()) {
String name = parameterNames.nextElement();
System.out.println(name);
String value = request.getParameter(name);
System.out.println(value);
System.out.println("---------");
}*/
//获取所有参数的Map集合
Map<String, String[]> parameterMap = request.getParameterMap();
Set<String> keyset = parameterMap.keySet();
for (String name : keyset) {
//获取键获取值
String[] values = parameterMap.get(name);
System.out.println(name);
for (String value : values) {
System.out.println(value);
}
System.out.println("--------");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//GET获取请求参数
//根据参数名称获取请求参数
/*String username = request.getParameter("username");
System.out.println("get");
System.out.println(username);*/
this.doPost(request,response);
}
}