当前位置: 首页 > 知识库问答 >
问题:

Java servletsession.GetAttribute和

东门俊民
2023-03-14
public class FirstServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       final String COUNTER = "Counter";
    /**
     * @see HttpServlet#HttpServlet()
     */
    public FirstServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            HttpSession session = req.getSession();
            PrintWriter out = resp.getWriter();
            int count = 1;
            Integer i = (Integer) session.getAttribute(COUNTER);
            if(i != null){
                count = i.intValue() +1;
            }
            session.setAttribute(COUNTER, new Integer(count));
             out.println("<html>");
                out.println("<head>");
                out.println("<title>Session Counter</title>");
                out.println("</head>");
                out.println("<body>");
                out.println("Your session ID is <b>" + session.getId());
                out.println("</b> and you have hit this page <b>" + count
                    + "</b> time(s) during this browser session");
        }
Integer i = (Integer) session.getAttribute(COUNTER);
                if(i != null){
                    count = i.intValue() +1;
                }

我的第二个问题是:为什么在获得session.setAttribute()之后必须使用它来打印新值。我的逻辑如下。正如我们所知,每个servlet只实例化一次--我获取属性(session.getAttribute(COUNTER)),检查我是否不同于null,然后递增它,如果我注释setAttribute,我将无法看到新的递增值。为什么我必须重新设置才能得到正确的值?当我按refresh时,我发出了一个新的get请求,它接受COUNTER的旧值(例如2),然后检查它是否为null,并将其递增1。我不明白为什么我必须再次使用session.setAttribute...

谢了!

共有1个答案

孟振
2023-03-14

第一个问题:没有。如果属性不在会话中,i将为null

第二:这种行为与不可变性概念和理解Java的引用概念有关。

由于会话存储对象,您的计数器将通过自动装箱成为对整数对象的引用(因此不需要手工创建整数)。它是JDK中不可变的类之一,要更改它的值,需要创建一个新的对象reference,这就是为什么需要更新存储在session中的对象--因为session仍然存储旧值的引用地址。

 类似资料:
  • 本文向大家介绍说说QQ和微信的差别,如产品定位、用户群体、功能特色等。相关面试题,主要包含被问及说说QQ和微信的差别,如产品定位、用户群体、功能特色等。时的应答技巧和注意事项,需要的朋友参考一下 1.产品定位 QQ:针对青少年的通讯社交软件,同时满足通讯和交友需求。 微信:针对各年龄群体的通讯工具,主打熟人通讯,现在已经泛化为提供各种生活服务的平台产品。 2.用户群体 QQ:青少年为主,低龄化较为

  • 本文向大家介绍一款app好坏的判断标准有哪些?请分别列出 1-3 个你认为「好」和「不好」的产品并说明。相关面试题,主要包含被问及一款app好坏的判断标准有哪些?请分别列出 1-3 个你认为「好」和「不好」的产品并说明。时的应答技巧和注意事项,需要的朋友参考一下 1.基本要求:是否有明确的用户价值,即能否为某些用户在某些场景下的具体需求提供解决方案,如果可以,则具备用户价值。 2.基本要求:真实合

  • 本文向大家介绍请你对滴滴地图和高德地图进行简要的竞品分析相关面试题,主要包含被问及请你对滴滴地图和高德地图进行简要的竞品分析时的应答技巧和注意事项,需要的朋友参考一下 滴滴司机端应该是可以设置选择导航的,司机可以选择内置导航(应该就是滴滴导航了吧),也可以选择第三方导航工具。 从做这两个地图产品的公司背景来看,滴滴是做出行的,高德是阿里做电商、新零售和o2o的。 因此不在从功能上做竞品分析 定位不

  • 本文向大家介绍针对用户观看短视频场景,请你分析不同年龄段女性的正向需求,可以基于内容,心理,动机和行为进行分析相关面试题,主要包含被问及针对用户观看短视频场景,请你分析不同年龄段女性的正向需求,可以基于内容,心理,动机和行为进行分析时的应答技巧和注意事项,需要的朋友参考一下 首先,定义观看短视频的女性人群,应该主要在15-60岁之间。可将女性划分为15-30岁青年女性;30-45岁中年女性;45-

  • 本文向大家介绍请你分析淘宝中的“淘抢购”频道的用户群体和用户需求。相关面试题,主要包含被问及请你分析淘宝中的“淘抢购”频道的用户群体和用户需求。时的应答技巧和注意事项,需要的朋友参考一下 用户群体: 对低价商品有较高需求,消费水平较低,闲暇时间较多,爱占小便宜的偏中年女性群体。 用户需求: 1、商品性价比高 2、商品具有多样性和实用性,能满足生活所需的多方面 3、商品有一定的价格差异和即时性,有抢

  • 问题内容: 我正在使用休眠将对象映射到数据库。客户端(iOS应用程序)向我发送了JSON格式的特定对象,我使用以下实用程序方法将其转换为真实的表示形式 但是问题是,在我的pogo中,我将值存储为byte [],如下所示(因为这是存储在数据库中的内容-blob) 当然,现在转换失败了,因为它无法在byte []和String之间进行转换。 这是更改构造函数以接受String而不是字节数组,然后在设置

  • 问题内容: 我感到困惑的是,在同一SQL Server实例中使用跨数据库查询的优缺点是什么? 我能想到的一件事是性能问题(查询将很慢),如果是这种情况,该问题的解决方案是什么? 请重点说明解决方案的优点和缺点,以便我可以放心地在两个数据库上工作。 我有两个数据库db1 Companies / CRM和db2 Products / E-commerce 问题答案: 您可能遇到的问题与管理有关。请在此

  • 问题内容: 为了你的“重复”的狂热分子,对这样的权利类似的问题在这里。所不同的是,我描绘了一个我无法理解其输出的生动示例。 JspWriter和PrintWriter的文档说有两个区别: 1. JspWriter可以引发异常,而PrintWriter不应这样做。 2. JspWriter在幕后使用PrintWriter,但是由于默认情况下JSP页面被缓冲,因此PrintWriter直到-在JSP页