获取请求行相关信息的相关方法:
1、getMethod()方法:获得客户端请求方式
2、getRequestURI()方法:返回URI(URI是URL从主机和端口之后到表单数据之前的那一部分)。
3、getRemoteAddr()方法:用于获取请求客户端的IP地址
4、getRemotePort()方法:用于获取请求客户端的端口号
5、getLocalAddr()方法:用于获取服务器当前接收请求的IP地址
6、getContextPath()方法:该方法用于获取URL中属于web应用程序的路径
7、getProtocol()方法:该方法用于获取请求中的协议名和版本
8. getQueryString():get提交url地址后的参数字符串
package com.oracle.demo01;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LineServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取请求的方式
String method=request.getMethod();
System.out.println("请求方式为:"+method);
//获取请求的URL
String URI=request.getRequestURI();
System.out.println("URI为:"+URI);
//获取请求的URL
StringBuffer URL=request.getRequestURL();
System.out.println("URL为:"+URL);
//获取WEB应用名称
String name=request.getContextPath();
System.out.println("WEB应用名称为:"+name);
//获取请求get请求后的URL后的字符串
String query=request.getQueryString();
System.out.println("get请求参数为:"+query);
//获取客户端的IP地址
String ip=request.getRemoteAddr();
System.out.println("ip地址为:"+ip);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
获取请求头的相关方法:
1、getHeader(String name):该方法用于获取一个指定头字段的值,如果请求头中不包含该字段则返回null,如果包含多个该字段的值则获取第一个值。
获取请求参数:获取单个参数
1、getParameter(String name):用于获取某个指定名称的参数值,如果请求中没有包含指定名称的参数,则返回null,如果有指定参数但是没有给设置值,则返回空串,如果包含多个该参数的值则返回第一个出现的参数值
2、getParameterNames():该方法用于返回一个包含请求消息中所有参数名的枚举集合
3、getParameterMap():将请求中所有参数和值装入一个map对象然后返回
4 .getParametervalues(String name):获取多个值的参数,以数组的String数组的方式
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/WEB06/BodyServlet" method="get">
<input type="text" name="username"><br>
<input type="radio" name="sex" value="man">男
<input type="radio" name="sex" value="woman">女
<br>
<input type="checkbox" name="hobby" value="ppq">
乒乓球
<input type="checkbox" name="hobby" value="pq">
排球
<input type="checkbox" name="hobby" value="wq">
网球
<br>
<input type="submit" value="提交">
</form>
</body>
</html>
package com.oracle.demo01;
import java.io.IOException;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class BodyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//post请求解决中文乱码问题
//request.setCharacterEncoding("utf-8");
//获取请求参数
//1.获取单个值的参数
String name=request.getParameter("username");
name=new String(name.getBytes("ISO-8859-1"),"UTF-8");
String sex=request.getParameter("sex");
System.out.println(name+"...."+sex);
//获取多个值的参数,以数组的String数组的方式
String[] hobbys=request.getParameterValues("hobby");
//遍历
for(String s:hobbys){
System.out.println(s);
}
//获取所有值的请求参数Map
Map<String,String[]> map=request.getParameterMap();
//遍历
Set<String> set=map.keySet();
for(String str:set){
String[] value=map.get(str);
for(String v:value){
System.out.println(str+"....."+v);
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
注意:
解决post提交方式的乱码:request.setCharacterEncoding("UTF-8");
解决get提交的方式的乱码:
parameter = new String(parameter.getbytes("iso8859-1"),"utf-8");
request:
只请求一次
url地址不会改变