ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaWeb-Servlet保存作用域

2022-08-04 00:00:28  阅读:220  来源: 互联网

标签:http JavaWeb 作用域 Servlet req import servlet javax


保存作用域

page-页面级别(已过时)

request-一次请求响应范围

准备两个demo

package com.fancy.demo;

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;

/**
 *  @Name demo02
 *  @Description 演示request保存作用域
 *  @Author Fancy
 *  @return 2022/8/3
 *  @Version 1.0
 */
@WebServlet("/demo02")
public class Demo02Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取request保存作用域保存的数据,key为uname
        Object unameObj = req.getAttribute("uname");
        System.out.println("unameObj =" + unameObj);
    }
}
package com.fancy.demo;

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;

/**
 *  @Name demo01
 *  @Description request保存作用域
 *  @Author Fancy
 *  @return 2022/8/3
 *  @Version 1.0
 */
@WebServlet("/demo01")
public class Demo01Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.向request保存作用域保存数据
        req.setAttribute("uname","keke");
        //2.客户端重定向
        resp.sendRedirect("demo02");
    }
}

使用客户端重定向,客户端获取不到value的值keke

接下来使用服务器内部转发

更改demo02代码

package com.fancy.demo;

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;

/**
 *  @Name demo01
 *  @Description request保存作用域
 *  @Author Fancy
 *  @return 2022/8/3
 *  @Version 1.0
 */
@WebServlet("/demo01")
public class Demo01Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.向request保存作用域保存数据
        req.setAttribute("uname","keke");
/*        //2.客户端重定向
        resp.sendRedirect("demo02");*/
        //服务器内部转发
        req.getRequestDispatcher("demo02").forward(req,resp);
    }
}

获取成功

session-一次会话范围

准备两个demo

package com.fancy.demo;

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;

/**
 *  @Name demo03
 *  @Description session保存作用域
 *  @Author Fancy
 *  @return 2022/8/3
 *  @Version 1.0
 */
@WebServlet("/demo03")
public class Demo03Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.想request保存作用域保存数据
        req.getSession().setAttribute("uname","keke");
/*        //2.客户端重定向
        resp.sendRedirect("demo02");*/
        //服务器内部转发
        req.getRequestDispatcher("demo04").forward(req,resp);
    }
}
package com.fancy.demo;

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("/demo04")
public class Demo04Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取session保存作用域保存的数据,key为uname
        Object unameObj = req.getSession().getAttribute("uname");
        System.out.println("unameObj =" + unameObj);
    }
}

从session中也可以成功获取value值

application-一次应用程序范围有效

package com.fancy.demo;

import javax.servlet.ServletContext;
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;

/**
 *  @Name demo05
 *  @Description application保存作用域
 *  @Author Fancy
 *  @return 2022/8/3
 *  @Version 1.0
 */
@WebServlet("/demo05")
public class Demo05Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.想request保存作用域保存数据
        //Servlet上下文
        ServletContext application = req.getServletContext();
        application.setAttribute("uname","keke");
        //2.客户端重定向
        resp.sendRedirect("demo06");
        /*//服务器内部转发
        req.getRequestDispatcher("demo06").forward(req,resp);*/
    }
}
package com.fancy.demo;

import javax.servlet.ServletContext;
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;

/**
 *  @Name demo06
 *  @Description application保存作用域
 *  @Author Fancy
 *  @return 2022/8/3
 *  @Version 1.0
 */
@WebServlet("/demo06")
public class Demo06Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取application保存作用域保存的数据,key为uname
        ServletContext application = req.getServletContext();
        Object unameObj = application.getAttribute("uname");
        System.out.println("unameObj =" + unameObj);
    }
}

可获取到value值

并且使用其它浏览器访问application作用域也可以得到value值(Tomcat未停止)

标签:http,JavaWeb,作用域,Servlet,req,import,servlet,javax
来源: https://www.cnblogs.com/fancy2022/p/16549148.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有