javaweb跳转

跳转
	概述
		在servlet中实现资源的跳转。包含请求转发和重定向两种方式
	重定向
		概述
			请求发送给服务器后,服务器产生新的地址并发送给客户端;
			客户端接收到新地址后重新发送请求并得到响应。
		实现
			response对象.sendRedirect(URL);
@WebServlet(urlPatterns = {"/Redirect01"})
public class Redirect01 extends HttpServlet {
    private static final long serialVersionUID = -5096088127501474424L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是 Redirect01");
        request.setAttribute("slogan","桃李不言下自成蹊");
        // 网页重定向
        response.sendRedirect(request.getContextPath() + "/Redirect02");
    }
}
@WebServlet(urlPatterns = {"/Redirect02"})
public class Redirect02 extends HttpServlet {
    private static final long serialVersionUID = -1046620871038602664L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是 Redirect02");
        // 网页重定向
        response.sendRedirect(request.getContextPath() + "/Redirect03");
    }
}
 
@WebServlet(urlPatterns = {"/Redirect03"})
public class Redirect03 extends HttpServlet {
    private static final long serialVersionUID = -1514803687180205194L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String slogan = (String) request.getAttribute("slogan");
        System.out.println("slgoan >>> " + slogan);
        System.out.println("我是 Redirect03");
    }
}
@WebServlet(urlPatterns = {"/RedirectOuter"})
public class RedirectOuter extends HttpServlet {
    private static final long serialVersionUID = -1514803687180205194L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是 RedirectOuter");
        // 网页重定向
        response.sendRedirect("https://blog.csdn.net/qq_24330181");
    }
}
	请求转发
		概述
			请求发送给服务器,服务器经过内部跳转后将响应结果发送给客户端。
		实现
			request对象.getRequestDispatcher(URL).forward(request对象,response对象);
@WebServlet(urlPatterns = {"/Forword01"})
public class Forword01 extends HttpServlet {
    private static final long serialVersionUID = 2433576604630172419L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是Forword01");
        // 向request域中存储数据	与request绑定
        request.setAttribute("slogan","桃李不言下自成蹊");
        // 请求转发
        request.getRequestDispatcher("/Forword02").forward(request, response);
    }
}
@WebServlet(urlPatterns = {"/Forword02"})
public class Forword02 extends HttpServlet {
    private static final long serialVersionUID = -3977086887896944656L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是Forword02");
        // 请求转发
        request.getRequestDispatcher("/Forword03").forward(request, response);
    }
}
 
@WebServlet(urlPatterns = {"/Forword03"})
public class Forword03 extends HttpServlet {
    private static final long serialVersionUID = -4225527567848221026L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String slogan = (String) request.getAttribute("slogan");
        System.out.println(slogan);
        System.out.println("我是Forword03");
    }
}
 
@WebServlet(urlPatterns = {"/ForwardInner01"})
public class ForwardInner01 extends HttpServlet {
    private static final long serialVersionUID = -8498702182563506773L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是 ForwardInner01");
        request.getRequestDispatcher("/forward.jsp").forward(request, response);
    }
}
@WebServlet(urlPatterns = {"/ForwardInner02"})
public class ForwardInner02 extends HttpServlet {
    private static final long serialVersionUID = -5216328735605010196L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是 ForwardInner02");
        request.getRequestDispatcher("/forward/forward.jsp").forward(request, response);
    }
}
@WebServlet(urlPatterns = {"/ForwardInner03"})
public class ForwardInner03 extends HttpServlet {
    private static final long serialVersionUID = 8277160841787323521L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是 ForwardInner03");
        request.getRequestDispatcher("/WEB-INF/forward.jsp").forward(request, response);
    }
}
@WebServlet(urlPatterns = {"/ForwardOuter"})
public class ForwardOuter extends HttpServlet {
    private static final long serialVersionUID = -6089159988815403493L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("我是 ForwardOuter");
        // 请求无法跳转到站外站点
        request.getRequestDispatcher("https://space.bilibili.com/480308139").forward(request, response);
    }
}
	问
		请求转发与重定向有什么不同?
		1、重定向地址栏发生改变;请求转发地址栏不发生改变
		2、重定向需要进行二次跳转;请求转发一次跳转完成
		3、重定向过程中参数会丢失;请求转发过程中参数不会丢失
		4、重定向可以跳转到服务器以外的资源;请求转发无法跳转到服务器以外的资源
		5、重定向一次跳转后返回302码及ULR地址;请求转发直接返回200
		6、重定向无法跳转WEB-INF目录内的站点;请求转发可以跳转WEB-INF目录内的站点

	使用
		1、重定向:a、服务器外的跳转;b、浏览器地址栏需要改变
		2、请求转发:a、不访问外部资源;b、参数不能丢参数失
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值