servlet重定向详解(八)

网友投稿 240 2023-03-28


servlet重定向详解(八)

本文实例为大家分享了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&nbRsEfOgvsp; servlet源组件和目标组件不会共享同一个ServletRequest对象。

3.3 如果源组件在进行重定向前提前提交响应结果,会报异常。

3.4 重定向的地址不必是同一个服务器的应用。

4.案例

Check1Servlet 第一次请求的类

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 重定向的类

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 jRsEfOgvava.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();

}

}

控制台输出结果:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java实现四则混合运算代码示例
下一篇:浅谈Angular2 模块懒加载的方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~