您当前的位置: 首页 >  servlet

liaowenxiong

暂无认证

  • 3浏览

    0关注

    1171博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Servlet的重定向和转发特点

liaowenxiong 发布时间:2022-01-10 23:24:29 ,浏览量:3

重定向

重定向的特点: 1.地址栏发生变化 2.重定向可以访问其他站点(服务器)的资源 3.重定向是两次请求,不可以使用Request对象共享数据

重定向的示例代码:

package priv.lwx.javaex.servlet_demo.web.servlet.response;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 重定向演示代码
 *
 * @author liaowenxiong
 * @date 2022/1/10 11:01
 */
@WebServlet("/response_demo01")
public class ResponseDemo01 extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    this.doPost(req, resp);
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    // 访问ResponseDemo01,重定向到ResponseDemo02
    System.out.println("访问了ResponseDemo01");
    // 设置重定向的状态码
    resp.setStatus(302);
    // 设置响应头
    resp.setHeader("Location","/servlet_demo/response_demo02");
  }
}

或者

package priv.lwx.javaex.servlet_demo.web.servlet.response;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 重定向演示代码
 *
 * @author liaowenxiong
 * @date 2022/1/10 11:01
 */
@WebServlet("/response_demo03")
public class ResponseDemo03 extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    this.doPost(req, resp);
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println("访问了ResponseDemo03");
    // 访问ResponseDemo03,重定向到ResponseDemo02
    resp.sendRedirect("/servlet_demo/response_demo02");
  }
}
转发

转发的特点: 1.转发地址栏路径不变 2.转发只能访问当前服务器下的资源 ??同个服务器下的其它项目的资源也可以跳转吗? 3.转发是一次请求,可以使用Request对象共享数据

转发的示例代码:

package priv.lwx.javaex.servlet_demo.web.servlet.request;
/**
 * 请求转发演示代码
 *
 * @author liaowenxiong
 * @date 2021/12/29 11:21
 */


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

@WebServlet(value = "/request_demo07")
public class RequestDemo07 extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.doPost(request, response);
  }

  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("demo07被访问了...");
    // 转发到demo08资源
    /*RequestDispatcher dispatcher = request.getRequestDispatcher("/request-demo08");
    dispatcher.forward(request,response);*/

    // 转发前存储数据到request对象中
    request.setAttribute("msg","hello");
    request.getRequestDispatcher("/request-demo08").forward(request, response);
  }
}
关注
打赏
1661566967
查看更多评论
立即登录/注册

微信扫码登录

0.0403s