• 请求转发与重定向


    在网页中有登录校验与显示首页,如何进行跳转和交互?

    两个Servlet(JSP)之间跳转有两种方式:

    • 请求转发
    • 响应重定向

    一、请求转发

    是服务器跳转,只会产生一次请求
    在这里插入图片描述

    // 实现了请求转发的功能
    request.getRequestDispatcher("/direct/index").forward(request,response);
    
    • 1
    • 2

    请求转发:地址为direct/check在这里插入图片描述
    控制台输出在这里插入图片描述

    二、响应重定向

    重定向是浏览器端跳转,会产生两次请求
    在这里插入图片描述

     // 响应重定向需要增加contextPath 
     response.sendRedirect("/servlet_advanced/direct/index"); 
    
    • 1
    • 2

    响应重定向:地址输入为direct/check
    重定向后地址变为direct/index
    在这里插入图片描述
    控制台输出
    在这里插入图片描述

    三、设置请求自定义属性

    请求允许创建自定义属性

    设置请求属性

    request.setAttribute("username", "admin");
    
    • 1

    获取请求属性

    String name = (String)request.getAttribute("username");
    
    • 1

    1、请求转发

    只请求一次,可以获取admin属性这里是引用

    2、响应重定向

    响应重定向,请求两次,第一次已销毁,获取属性值为null这里是引用

    四、程序页面

    1、CheckLoginServlet.java

    package com.ssyt.servlet.direct;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class CheckLoginServlet
     */
    @WebServlet("/direct/check")
    public class CheckLoginServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public CheckLoginServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
    
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		System.out.println("用户登录成功");
    		request.setAttribute("username", "admin");
    		// 实现了请求转发的功能
    		request.getRequestDispatcher("/direct/index").forward(request,response);
    		// 响应重定向需要增加contextPath
    		//response.sendRedirect("/servlet_advanced/direct/index");
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    2、IndexServlet.java

    package com.ssyt.servlet.direct;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class IndexServlet
     */
    @WebServlet("/direct/index")
    public class IndexServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public IndexServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
    
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		String name = (String)request.getAttribute("username");
    		response.getWriter().println("This is index page!current username is " + name + ".");
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
  • 相关阅读:
    文件对象的常用方法和属性
    c++的lambda使用注意事项,可能导致的崩溃问题分析
    【Manim CE】常用Mobject与使用
    操作系统4小时速成:内存管理,程序执行过程,扩充内存,连续分配,非连续分配,虚拟内存,页面替换算法
    快速入门MySQL
    企业使用微信管理系统更安全更高效更智能
    带你了解MySQL数据库(六)
    到什么程度才叫精通 Linux?
    treap平衡树模板
    【PAT甲级 - C++题解】1063 Set Similarity
  • 原文地址:https://blog.csdn.net/qq_38473254/article/details/125625109