Cookie,Session,Application实例

本文通过具体实例介绍了如何使用session、cookie和application进行用户会话管理。包括利用session跨页面显示用户名,利用cookie实现自动填充用户名,以及利用application统计网站访问次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近学习了cookie,session,application的用法,发现网上关于这三者的介绍和区别都很详细,但是却没有简单易懂的例子来直观的表示,特写下这篇博客,希望能使需要学习这方面知识的读者更容易理解。


  • 首先先创建一个登录表单(userLogin.jsp)
    这里写图片描述

  • 其次创建表单提交给的页面(userLoginSuccess.jsp)
    这里写图片描述

  • 表单效果
    这里写图片描述

利用session保存用户名并跳转至index.jsp页面中,在该页面中显示用户名

- 此处要修改userLoginSuccess.jsp中的代码,如图
这里写图片描述

上面代码中response将我们的请求重新定位到index.jsp上,改变URL的地址,实现了跳转

- index.jsp代码:

  <body>
  <% 
        Object o = session.getAttribute("user");
        if(o == null){
     %>
        <%}else{
            out.println("欢迎" + o.toString()+"登录成功");
        }   
         %> <a href = "userLoginout.jsp">注销</a><!-- 此处跳转实现清除session数据 -->
  </body>

上面index.jsp中最后有个超链接,此超链接的作用注释已写了,若没有清除session的操作可能会导致性能问题或服务器崩溃
- userLoginout.jsp代码:

  <body>
    <%
    session.removeAttribute("username");
    session.invalidate();
    response.sendRedirect("index.jsp");
     %>
  </body>

利用cookie保存用户名,当我们注销且关闭浏览器后下次登录实现用户名已填

- 首先在userLogin.jsp中加入如下代码

    <%
        String username="";
        Cookie[] cookies = request.getCookies();//利用request获取cookie的值
        if (cookies != null) {
            for (int i = 0; i < cookies.length; i++) {
                Cookie cookie = cookies[i];
                if (cookie.getName().equals("user")) {
                    username=cookie.getValue();//如果和预设值相同,则将cookie值赋值给username
                }
            }
        }
    %>
  • 修改userLoginSuccess.jsp中代码
<body>
    <%
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        if((username.equals("系统管理员")&&password.equals("123"))){//只有是系统管理员才增加cookie
            Cookie cookie = new Cookie("user",username);
            cookie.setMaxAge(60*60);//设置cookie的生存周期
            response.addCookie(cookie);
            session.setAttribute("user", username);
            response.sendRedirect("index.jsp");
        }else{
            request.setAttribute("mess", "登录失败,用户名或密码输入不正确!");
            request.getRequestDispatcher("userLogin.jsp").forward(request, response);
        }
     %>
</body>
  • 重新打开浏览器登录后的效果
    这里写图片描述


    application中存储的数据在整个web项目中都可以使用,所以通常用来计数,比如一个网页被浏览的次数就是用application来实现

  • 在userLogin.jsp中增加如下代码,实现知道你是第几个注册的人
    <%
        Object count = application.getAttribute("count");
        if(count==null){
            application.setAttribute("count", new Integer(1));
        }else{
            application.setAttribute("count", (Integer)application.getAttribute("count")+1);
        }
        count = application.getAttribute("count");
        out.println("你是第"+count+"个注册的人");
     %>
  • 效果如下这里写图片描述


  • 总结:上面的例子可以比较简单的概括,session可以实现在多个页面中显示用户信息,cookie可以实现自动填写用户名(当然可以自动填写密码,但是公共场合下或大部分情况下较隐私的信息不建议用cookie保存)application则可以实现统计页面的访问次数,这个访问可以是不同的浏览器。希望对大家有点帮助~

实验:内置对象使用 一、实验目的 1、掌握各个内置对象的含义; 2、理解并熟练应用sessionapplication对象。 二、实验内容 1、设计聊天室,在聊天室中,需要通过JSP内置对象application来实时保存特定数量的当前聊天信息。 聊天室的设计包括:用户进行登录,选择聊天室,进行聊天,退出聊天室。 在聊天室中,用户只需输入一个用户名就可以进入聊天室,但是如果当前有人在使用该用户名,那么就必须换一个唯一的用户名。 具体要求:  用户登录成功后,程序会要求用户选择聊天室。可以不设置用户自行建立聊天室的功能,而且在聊天中途不能从一个聊天室切换到另一个聊天室。  进入聊天室后,用户可以从用户信息窗口看到该聊天室中所有用户的用户名,也可以在聊天窗口中看到随时更新的聊天信息。用户可以给所有人或某一个聊天用户发送公共的聊天信息,这个聊天内容大家都可以看到。用户也可以给某个用户发送私人的聊天信息,这种信息属于私聊信息,只有发送者和接收者可以看到。此外,聊天窗口还会出现一些系统公告,比如某某上站、某某离开等消息,另外用户还可以自己定义聊天信息和聊天用户信息刷新的时间间隔。  在用户单击“退出”按钮后,页面关闭,同时applicationsession中保存的信息都将丢失。 三、实验方法 1、用户登录信息使用request对象getParameter()方法得到用户登陆的一些信息; 2、公聊信息可以使用application对象,私聊信息使用session对象。 3、聊天的信息要不断刷新页面,使用户实时看到聊天信息。 4、用户退出时,有两种情况需要考虑:一是用户点击“退出”按钮,二是关闭浏览器,强制退出窗口,可查阅windows感知浏览器关闭的事件的相应方法。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值