本文实例为大家分享了servlet重定向的具体内容,供大家参考,具体内容如下
1.重定向是什么?
这里说的重定向是由http协议规定的一种机制。其工作流程如下所述。
(1)客户端发起http请求,访问服务器端组件。
(2)服务器端返回一个状态代码为302的响应结果。该代码的意思是让浏览器再访问另一个组件,响应结果中包含着访问新组件的url地址。新的访问组件可能在同一个应用中也可能不在同一个应用中。
(3)当浏览器接受到这种结果,会自动访问新的url.
(4)浏览器端接受新的url返回结果。
2.实现
重定向通过servlet api 中httpservletreponse接口提供的 sendredirect(string location)方法完成。
3.重定向特点
3.1 servlet源组件的响应结果不会返回到客户端。
3.2 servlet源组件和目标组件不会共享同一个servletrequest对象。
3.3 如果源组件在进行重定向前提前提交响应结果,会报异常。
3.4 重定向的地址不必是同一个服务器的应用。
4.案例
check1servlet 第一次请求的类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
package com.learn; import javax.servlet.requestdispatcher; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import java.io.ioexception; import java.io.printwriter; /** * created by administrator on 2017/09/28. */ public class check1servlet extends httpservlet { @override protected void doget(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { string username = req.getparameter( "name" ); string message = "" ; if (username == null ){ message = "please input your name" ; } else { message = username; } req.setattribute( "mess" ,message); printwriter out = resp.getwriter(); out.print( "before redirect " ); system.out.println( "before redirect" ); resp.sendredirect( "out1?mess=" +message); out.print( "after redirect" ); system.out.println( "after redirect" ); out.close(); } } |
out1servlet 重定向的类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
package com.learn; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import java.io.ioexception; import java.io.printwriter; /** * created by administrator on 2017/09/28. */ public class out1servlet extends httpservlet { @override protected void doget(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception { string mess = (string) req.getattribute( "mess" ); system.out.println( "请求范围内的数据:" +mess); mess = req.getparameter( "mess" ); system.out.println( "请求参数中的:" +mess); printwriter out = resp.getwriter(); out.write(mess); out.close(); } } |
控制台输出结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/wwyx-xi/p/7608670.html