HttpServletRequest概述
获取请求行相关信息的相关方法:
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地址不会改变