深度学习转发与重定向

通过ServletContext 完成服务器程序转发

什么是转发? 转发和重定向区别 ?跟着小编一起彻底征服它吧!
1. 转发
再转发中我们用到了getRequestDispatcher(java.lang.String path)
我们先编辑两个web程序AServlet和ABervlet加以说明
AServlet 源码如下:

package cn.legeyung.servlet;

import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class AServlet extends HttpServlet{
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("AServlet执行了...................");
        //转发
        ServletContext context=getServletContext();
        //转发给BServlet, 这里/表示     
        RequestDispatcher dispatcher=context.getRequestDispatcher("/b");
        dispatcher.forward(req, resp);
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {  
    }
}

BServlet 源码如下:

package cn.legeyung.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class BServlet extends HttpServlet{
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("BServlet执行了...................");
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
    }
}

接着我们找到WebRoot/WEB-INF/web.xml在文件里面进行配置

    <servlet>
        <servlet-name>AServlet</servlet-name>
        <servlet-class>cn.legeyung.servlet.AServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AServlet</servlet-name>
        <url-pattern>/a</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>BServlet</servlet-name>
        <servlet-class>cn.legeyung.servlet.BServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>BServlet</servlet-name>
        <url-pattern>/b</url-pattern>
    </servlet-mapping>

然后我们启动tomcat,输入http://localhost:8080/ServletTest/a
这里写图片描述
注意:转发之后http://localhost:8080/ServletTest/a不变

2.重定向
在重定向中我们用到了setHeader(arg0, arg1);
我们先编辑两个web程序CServletDBervlet加以说明
CServlet 源码如下:

package cn.legeyung.servlet;

import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CServlet extends HttpServlet{
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("CServlet执行了...................");
        //重定向
        resp.setStatus(302);
        //这里的/表示当前web服务器
        resp.setHeader("Location", "/ServletTest/d"); //冲客户端访问,必须含有工程路径
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {  
    }
}

DServlst源码如下:

package cn.legeyung.servlet;

import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DServlet extends HttpServlet{
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("DServlet执行了...................");
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {  
    }
}

接着我们找到WebRoot/WEB-INF/web.xml在文件里面进行配置

    <servlet>
        <servlet-name>CServlet</servlet-name>
        <servlet-class>cn.legeyung.servlet.CServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CServlet</servlet-name>
        <url-pattern>/c</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>DServlet</servlet-name>
        <servlet-class>cn.legeyung.servlet.DServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DServlet</servlet-name>
        <url-pattern>/d</url-pattern>
    </servlet-mapping>

然后我们启动tomcat,输入http://localhost:8080/ServletTest/c
这里写图片描述
注意:重定 向之后http://localhost:8080/ServletTest/c将变为http://localhost:8080/ServletTest/d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值