Servlet 的跳转

Servlet 的跳转有两种方式:

1.转向 / 请求转发(Forward)

通过 RequestDispacher 对象的 forward(HttpServletRequet request, HttpServletResponse response) 方法来实现的。RequestDispacher 对象可以通过 HttpServletRequet的 getRequestDispacher() 方法获得。

例如,下面的例子跳转到另一个 Servlet :

RequestDispacher dispacher = request.getRequestDispacher("/servlet/SomeServet") ;
dispacher .forward(request, response);
// 简写形式 request.getRequestDispacher("/servlet/SomeServet") .forward(request, response);


注意:这里的  getRequestDispacher() 方法的参数必须以 “ / ” 开始,“ / ” 表示本 Web 应用程序目录。

    forward 跳转方式不仅可以跳转到本应用的另一个 Servlet,JSP 页面,也可以跳转到另一个文件,甚至是 WEB-INF 文件夹下的文件(Java Web 中 WEB-INF 文件夹有这样的特性:任何人都不能通过浏览器直接获取下面的文件,即使他知道文件的准确位置,WEB-INF 下的文件是受保护的,这样就保证了文件的安全性,以免被人修改了 web.xml 文件使得本 Web 应用程序不能正确运行,或者是窃取其他的重要文件,这样就保证了 Web程序的安全性)。

                    当使用 forward 方式跳转 Servlet 的时候,地址栏会显示跳转前的 Servlet 访问地址。因为该跳转实在服务器端执行的,客户端浏览器并不知道该跳转动作。也就是说forward 跳转对客户端浏览器是透明的。

2.重定向(Redirect)

重定向是利用服务器的返回的状态码来实现的。浏览器请求服务器的时候,服务器端会返回的一个状态码。服务器端通过 HttpServletResponse 通过 setStatus(int status) 方法来设置状态码。状态码表示的意义如下表所示。

状 态 码

意义

1xx

信息状态码。表示该请求已经被接受,正在被处理。

2xx

正确状态码。表示该请求已经呗正确接受并处理,没有错误等发生。例如,200表示一切正确(正常)。

3xx

重定向状态码。例如 301,302 表示该资源已经不存在或者换了地址,客户端需要重新定向到一个新的资源。服务器相映中会附带这个新资源地址。

4xx

请求错误。例如 401 表示没有权限访问,404 表示该资源部存在,405 表示访问方式错误(如 Servlet 只接收 GET,POST 方式访问但是客户端却以 DELETE方式访问)

5xx

服务器错误。例如 500 表示程序出现异常而中途停止运行。


详细的状态码说明,请戳 这里

301、302  都表示重定向, 区别是 301 是永久性重定向,302 是临时性重定向。下面的代码将访问该 Servlet 的请求重定向到另一个网址。

response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);// 设置状态码为302

response.setHeader("Location", "http://www.baidu.com");// 重定向到百度

HttpServletResponse 类中把常用的状态码封装成了静态的常量。代码中 SC_MOVED_TEMPORARILY 表示的就是 302。

HttpServletResponse 把 setStatus 与 setHeader 方法封装成另一个方法 sendRedirect(String location),调用此方法就直接实现重定向。

例如,response.sendRedirect(“http://www.baidu.com”);  就可以实现重定向到百度了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值