request功能 ------这里doGet()和doPost()方法不解释了 |
1 . request功能-----获取客户端基本信息 |
public class RequestDemo1 extends HttpServlet { |
public void doGet(HttpServletRequest request, HttpServletResponse response) |
throws ServletException, IOException { |
// getRequestURL方法 -- 返回客户端发出请求完整URL |
String url=request.getRequestURL().toString(); |
System.out.println( "url:" +url); |
// getRequestURI方法 -- 返回请求行中的资源名部分 |
String uri=request.getRequestURI(); |
System.out.println( "uri:" +uri); |
// getQueryString方法 -- 返回请求行中的参数部分 |
String query=request.getQueryString(); |
System.out.println( "query:" +query); |
// getRemoteAddr方法 -- 返回发出请求的客户机的IP地址 |
String addr=request.getRemoteAddr(); |
System.out.println( "addr:" +addr); |
// getMethod方法 -- 返回客户机的请求方式 |
String method=request.getMethod(); |
System.out.println( "method:" +method); |
// getContextPath方法 -- 获得当前web应用的虚拟目录名称 |
String contextpath=request.getContextPath(); |
System.out.println( "contextpath:" +contextpath); |
// response.sendRedirect(request.getContextPath()+"/index.jsp"); |
} |
public void doPost(HttpServletRequest request, HttpServletResponse response) |
throws ServletException, IOException { |
doGet(request, response); |
|
} |
} |
**************************************************************************************************************************************** |
**************************************************************************************************************************************** |
2 . request功能-----获取请求头信息 |
// getHeader(name)方法 --- String |
|
String host = request.getHeader( "host" ); |
System.out.println( "host: " +host); |
|
// getHeaders(String name)方法 --- Enumeration<String> |
Enumeration values = request.getHeaders( "host" ); |
while (values.hasMoreElements()) { |
String value = (String) values.nextElement(); |
System.out.println( "value: " +value); |
} |
|
// getHeaderNames方法 --- Enumeration<String> |
Enumeration headers = request.getHeaderNames(); |
while (headers.hasMoreElements()) { |
String header = (String) headers.nextElement(); |
String value = request.getHeader(header); |
System.out.println(header+ " : " +value); |
} |
**************************************************************************************************************************************** |
**************************************************************************************************************************************** |
3 . request功能 3 --- 获取请求参数 |
/* |
* request -----获取请求参数 |
*getParameter(String name) -- String 通过name获得值 |
*getParameterValues(String name) -- String[] 通过name获得多值 如: 爱好 |
*getParameterNames() -- Enumeration<String> 获得所有请求参数的name |
*getParameterMap() -- Map<String,String[ ]> key :name value: 多值 |
*/ |
//设置服务器接受时采用utf-8 ,必须在获取参数之前设置,否则会采用默认编码ISO8859-1来接受数据 |
//request.setCharacterEncoding("utf-8");//服务器默认接受参数是采用ISO8859-1编码 |
//1.通过name属性获得对应的值 |
System.out.println( "username:" +request.getParameter( "username" )); // name="username" |
System.out.println( "password:" +request.getParameter( "password" )); // |
System.out.println( "email:" +request.getParameter( "email" )); // |
//2. 一个属性多个值的情况 : |
//getParameterValues(String name) -- String[] 通过name获得多值 如: 爱好 |
//String[ ] values=request.getParameterValues("name");//返回的是一个string数组 |
//3 获取所有请求参数的值:getParameterNames() -- Enumeration<String> 获得所有请求参数的name |
Enumeration<String>e=request.getParameterNames(); |
while (e.hasMoreElements()) { |
String name = (String) e.nextElement(); //参数的key |
String[] value=request.getParameterValues(name); //参数的value |
System.out.println(name+ ":" +Arrays.toString(value)); |
} |
//获取多个参数和值(键值对)采用map |
Map <String,String[]>map=request.getParameterMap(); |
/* |
* 对于客户端的提交方式不同:编码问题会导致乱码 |
* POST发送方式-----request.setCharacterEncoding("utf-8"); |
* GET发送方式------ |
*/ |
String username=request.getParameter( "username" ); |
byte [] by=username.getBytes( "iso8859-1" ); |
username= new String(by, "utf-8" ); |
**************************************************************************************************************************************** |
**************************************************************************************************************************************** |
4 request功能 4 ------实现请求转发 |
//实现请求转发 |
request.getRequestDispatcher( "/RequestDemo4" ).forward(request, response); |
// 其中web.xml要添加如下: |
<servlet> |
<servlet-name>RequestDemo4</servlet-name> |
<servlet- class >request.RequestDemo4</servlet- class > |
</servlet> |
<servlet-mapping> |
<servlet-name>RequestDemo4</servlet-name> |
<url-pattern>/RequestDemo4</url-pattern> |
</servlet-mapping> |
**************************************************************************************************************************************** |
**************************************************************************************************************************************** |
5 Request 功能 5 ------ 实现请求包含(两个servlet的响应都会返回给客户端) |
(RequestA和RequestB处理的请求响应)-----include(request, response) |
request.getRequestDispatcher( "/RequestB" ).include(request, response); |
**************************************************************************************************************************************** |
**************************************************************************************************************************************** |
6 通过转发将数据带给客户端的jsp页面中去 |
RequestA: |
// 1通过查询获取到的个人信息 |
String name= "张飞" ; |
int age= 18 ; |
String nickname= "小飞飞" ; |
String address= "河北邯郸" ; |
// 2 将数据保存到request域中 |
request.setAttribute( "name" , name); |
request.setAttribute( "age" , age); |
request.setAttribute( "nickname" , nickname); |
request.setAttribute( "address" , address); |
//3 通过转发将数据带到jsp页面中 |
request.getRequestDispatcher( "/index.jsp" ).forward(request, response); |
index.jsp: |
其中body部分: |
<body> |
姓名:<%=request.getAttribute( "name" ) %> <br> |
年龄:<%=request.getAttribute( "age" ) %> <br> |
昵称:<%=request.getAttribute( "nickname" ) %> <br> |
住址:<%=request.getAttribute( "address" ) %> <br> |
</body> |
by: 发表于:2017-12-26 10:40:20 顶(0) | 踩(0) 回复
??
回复评论