JSP的session对象实战

本文深入探讨了会话管理在Web应用中的重要性,包括会话的概念、有状态会话的特性,以及通过cookie和session技术实现会话跟踪的方法。通过实战示例,展示了如何在Java Web环境中使用session进行用户登录状态的管理。

目录

点睛

实战


点睛

1 会话

用户打开一个浏览器,点击了很多超链接,访问了多个web资源,关闭浏览器,这个过程可以称之为会话。

2 有状态会话

举个例子,一个同学来过教室,下次再来教室,我们会知道这个同学,曾经来过,称之为有状态会话。

3 一个网站,怎样证明你来过?

服务端给客户端一个信件,客户端下次访问服务端带上信件就可以了,这个信件就是cookie。

服务端登记你来过了,下次你来的时候我来匹配你,这个登记就是session。

4 保存会话的两种技术

cookie:客户端技术,通过响应,请求来实现。

session:服务端技术,利用这个技术,可以保存用户的会话信息。我们可以把信息或者数据放在Session中。

5 常见场景

网站登录之后,你下次不用再登录了,第二次访问直接就上去了。

6 session和cookie的理解 

session被称为会话,不同于TCP/IP协议,HTTP协议是一种无状态的协议,也就是说,当一个客户端向服务器发出请求,服务器接收请求,并返回响应,这样一来一回之后,这个连接就结束了,服务器并不保存任何相关信息。

为了弥补这个缺陷,HTTP协议提出了session的概念。通过session,在Web页面进行跳转时,可以保存用户的状态信息,比如,在购物网站的不同商品页面跳转时,网站并不会让用户重复登录,因为用户的会话一致保存着,直到用户关闭浏览器。

但是,如果客户端长时间不向服务器发出请求,那么这个会话对象也会自动销毁,这个时间取决于服务器的设置,对于Tomcat来说,这个默认值是30分钟。当然这个值也可以通过程序修改。

session是客户端保留在服务端的信息。而服务端为了区分不同的客户端,用户都会自动为其分配一个session id的数据。

有一个Cookie是由服务器自动设置到客户端上的,自动设置到客户端上的内容实际上就是session id。

用户第一次访问服务器的时候,不会发送JSESSIONID数据,因为此时还没设置Cookie在客户端。当第二次访问的时候,因为之前已经设置了Cookie数据,所以之后就可以通过JSESSIONID进行比较,从而确定每一个用户是否是第一次访问。

session属性范围的特征在于,不管是客户端还是服务器端跳转,所设置的内容都会被保留,除非浏览器关闭。

实战

1 登录页面

<%@ page pageEncoding="UTF-8"%>
<form action="login.jsp" method="post">
    用户名:<input type="text" name="username" id="username">
    密&nbsp;码:<input type="text" name="password" id="password">
    <input type="submit" value="登录">
    <input type="reset" value="重置">
</form>
<%
    String username = request.getParameter("username") ;
    String password = request.getParameter("password") ;
    if (!(username == null || "".equals(username) || password == null || "".equals(password))) {
        if ("cakin".equals(username) && "java".equals(password)) {
            session.setAttribute("uid",username) ;    // 设置session属性
%>
            <h2>用户登录成功,进入到<a href="welcome.jsp">首页</a>!</h2>
<%
        } else {
%>
            <h2>用户登录失败,错误的用户名或密码!</h2>
<%
        }
    }
%>

2 欢迎页面

<%@ page pageEncoding="UTF-8"%>
<%
    if (session.getAttribute("uid") != null) {
%>
        <h1>登录成功欢迎光临!<a href="logout.jsp">注销</a></h1>
<%
    } else {
%>
        <h2>对不起,您还未登录,请先<a href="login.jsp">登录</a>!</h2>
<%
    }
%>

3 注销页面

<%@ page pageEncoding="UTF-8"%>
<%
    session.invalidate() ;    // 所有保存的session信息都没了
%>
<script type="text/javascript">
    alert("注销成功,拜拜!") ;
    window.location = "login.jsp" ;
</script>

三 运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值