每次请求时,服务器都会创建新的request和response对象。
1. 获取请求头
String getHeader(String name):适用于单值头 int getIntHeader(String name):适用于单值int类型的请求头 long getDateHeader(String name):适用于单值毫秒类型的请求头 Enumeration<String> getHeaders(String name):适用于多值请求头
2.获取请求URL
http://localhost:8080/Javaweb01/AServlet?username=xxx&password=yyy
request.getMethod():获取请求方式 String getScheme():获取协议,http String getServerName():获取服务器名,localhost String getServerPort():获取服务器端口,8080 String getContextPath():获取项目名,/Javaweb01 String getServletPath():获取Servlet路径,/AServlet String getQueryString():获取参数部分,即问号后面的部分。username=xxx&password=yyy String getRequestURI():获取请求URI,项目名+Servlet路径。/Javaweb01/AServlet String getRequestURL():获取请求URL,不包含参数部分的请求路径。http://localhost:8080/Javaweb01/AServlet
3. 获取请求参数
浏览器地址栏直接输入:一定是GET请求;
超链接:一定是GET请求;
表单提交:可以是GET,也可以是POST,取决于<form>的method属性值;
GET请求:
请求参数会在浏览器的地址栏中显示,所以不安全;
请求参数长度限制长度在1K之内;
请求没有请求体,无法通过request.setCharacterEncoding()来设置参数的编码;
POST请求:
请求参数不会显示浏览器的地址栏,相对安全;
请求参数长度没有限制;
String getParameter(String name):获取指定名称的请求参数值,适用于单值请求参数 String[] getParameterValues(String name):获取指定名称的请求参数值,适用于多值请求参数 Enumeration<String> getParameterNames():获取所有请求参数名称 Map<String,String[]> getParameterMap():获取所有请求参数,Map中key为参数名,value为参数值。
4.小结
request.getParameter()和request.getAttribute() * getParameter()是获取客户端参数,它是从客户端传递给服务器的数据。 * getAttribute()是获取服务器端自己设置的数据,而不是客户端的数据。 * request没有setParameter()方法,不能自己设置参数,参数都由客户端传递 * request有setAttribute()方法,在getAttribute()之前,需要先setAttribute()才能获取到。 * getAttribute()和setAttribute()用于在请求转发和请求包含中的多个Servlet中共享数据。
int getContentLength():获取请求体的字节数,GET请求没有请求体,没有请求体返回-1; String getContentType():获取请求类型,GET返回null;POST默认为application/x-www-form-urlencoded,表示请求体内容使用了URL编码; String getMethod():返回请求方法,例如:GET Locale getLocale():返回当前客户端浏览器的Locale。java.util.Locale表示国家和言语,这个东西在国际化中很有用; String getCharacterEncoding():获取请求编码,如果没有setCharacterEncoding(),那么返回null,表示使用ISO-8859-1编码; void setCharacterEncoding(String code):设置请求编码,只对请求体有效!对于GET而言,没有请求体!所以此方法只能对POST请求中的参数有效! String getContextPath():返回上下文路径,例如:/hello String getQueryString():返回请求URL中的参数,例如:name=zhangSan String getRequestURI():返回请求URI路径,例如:/hello/oneServlet StringBuffer getRequestURL():返回请求URL路径,例如:http://localhost/hello/oneServlet,即返回除了参数以外的路径信息; String getServletPath():返回Servlet路径,例如:/oneServlet String getRemoteAddr():返回当前客户端的IP地址; String getRemoteHost():返回当前客户端的主机名,但这个方法的实现还是获取IP地址; String getScheme():返回请求协议,例如:http; String getServerName():返回主机名,例如:localhost int getServerPort():返回服务器端口号,例如:8080