`

我的博客之Session完成用户登录与登出

 
阅读更多

由于http是无状态协议,我们的客户端不会和服务器一直保持连接状态。也就是说,当我们访问一个网站的时候,这个网站不会记录我们的访问这个网站的信息,比如当我们登录的时候,如果不采取相关措施来记录当前的登录者,如果下一次用户再次访问的时候,那么之前访问的状态荡然无存,又得重新登录才可以使用。

我们可以在用户登录之后,设置一个与该用户相关的session,保存这个用户的相关信息。我们还可以设定这个session的生存时间,当一个过了这个时间,用户再无访问的时候,我们这个session可以自动消除,如果这时用户再次访问的话,有得重新登陆。这样我们通过在服务器端保存一个session,来维持与用户的持续性交互,提高了用户访问体验,也该服务器处理与用户相关的操作提供了便利。

下面是我们的博客系统使用session完成登录与登出的例子。

这是登录的表单:

	<form id="formLogin" onsubmit="return checkselect(this)" method="post" 
		action="<%=URL%>/LoginAction.action">
			<h3>欢迎登录MyBlog!</h3>
			<table id="tableLogin">
			<tr>
				<td>
					<p class="pLogin">用户名:</p>
				</td>
				<td>	
						<input name="name" type="text"/>
						<font color="#FF0000">*</font>
					
				</td>
			</tr>
			<tr>
				<td>
					<p class="pLogin">密码:</p>
				</td>
				<td>
						<input name="password" type="password"/>
						<font color="#FF0000">*</font>
				</td>
			</tr>
			<tr>
				<td></td>
				<td>
				    <input value="登录" type="submit"/>&nbsp;
					<input value="重置" type="reset"/>
				</td>
			</tr>
			<tr>
				<td></td>
				<td>
				    <a href="<%=URL%>/admin/Register.jsp">注册新账号</a>
				</td>
			</tr>
			
			</table>
		</form>

  当我们登录信息提交后,将由LoginAction处理我们的登录,代码如下:

public String execute(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.URL = GLOBALS.getPath(request);
		String url = "error.jsp";
		// 获取页面输入元素,用户民及密码
		String user_name = request.getParameter("name");
		String user_password = request.getParameter("password");
		// 控制台输出
		System.out.println("用户名" + user_name);
		System.out.println("用户密码:" + user_password);
		//loginDao的Login放法对用户名进行验证,查询数据库里面是否有相对应的
		//用户名、密码。
		MasterBean masterBean = loginDao.Login(user_name, user_password);

		// 回应页面请求,在网页中响应,通过out可以直接在这里写html的代码
		response.setCharacterEncoding("utf-8");
		PrintWriter out = response.getWriter();

		
		if (masterBean != null) {
			// 若用户密码正确,查询结果masterBean不应该是null。
			// 校验成功后进入到AdminIndex.jsp显示在页面上
			// 创建一个session
			HttpSession session=request.getSession();
			// setAttribute方法在session中设置用户信息
			session.setAttribute("masterBean", masterBean);
			System.out.println("登录成功!!!");
			System.out.println("用户的masterID:"+masterBean.getId());
			url = "/admin/AdminIndex.jsp";
			return url;

		} else {
			out.write("<html>");
			out.write("<p>登录失败</p>");
			out.write("</html>");
		}

		return url;
	}

  等我们点击退出登录之后,将有LogoutAction处理我们的退出登录请求,代码如下:

	public String execute(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		// request.getSession(ture)等同于 HttpServletRequest.getSession():
		// 若存了会话(session)则返回该会话,否则新建一个会话(session)。
		// request.getSession(false):若存在会话(session)则返回该会话,否则返回NULL
		// 所以这里我们用request.getSession(false)
		
		// 获取session
		HttpSession session = request.getSession(false);
		if (session != null) {
		// 如果有session,则把用户信息从session里面除掉。
				session.removeAttribute("masterBean");
		}
		String url = "/admin/Login.jsp";
		return url;
	}

 

 

 

分享到:
评论

相关推荐

    利用Session完成用户登录功能

    - 掌握如何使用Session对象来完成用户的模拟登录功能。 - 学习如何验证用户的登录状态并展示相应的信息。 #### 二、预备知识详解 1. **会话(Session)概念**: - 会话是指用户与服务器之间的一系列交互过程。在...

    .net C# 通过session控制重复登录及在线用户统计

    当用户成功登录后,通常会将用户的一些关键信息(如ID、用户名等)存储到`Session`中,创建一个与用户会话相关的唯一标识。每当用户尝试再次登录时,系统首先检查`Session`中是否存在当前用户的标识。如果存在,...

    session实验

    1. **Session的创建与销毁**:实验可能涉及到如何在服务器端创建一个新的Session,以及在用户登出或会话超时时如何销毁Session。通常,开发者会设置一个会话超时时间,超过这个时间未收到客户端的请求,服务器将自动...

    .net C# 利用session控制用户重复登录及统计在线用户数解决方案

    如果同一用户再次尝试登录,检查`Session`中的登录状态,如果已登录,则拒绝此次登录请求,给出相应提示。 为了统计在线用户数,我们需要维护一个计数器。每当有新用户登录,增加计数器;而当用户退出或`Session`...

    session存用户名密码实现用户登录和退出

    特别是在用户登录和退出的过程中,Session扮演了关键角色。本篇文章将详细介绍如何利用Session存储用户名和密码,以实现用户登录和退出功能。 首先,我们需要理解Session的基本概念。Session是在服务器端存储的一种...

    利用Session验证是否用户登录

    Session是服务器端的一种存储机制,用于跟踪用户状态,尤其在用户登录后,通过Session可以判断用户是否已登录,从而实现权限控制。 首先,我们要理解如何使用Session在页面间传递值。当用户在登录页面输入用户名和...

    4.用户登录、登出实现1

    它可以将用户的ID存储在Session中,以便在后续的登录、登出过程中使用。同时,Flask-Login还提供了remember me功能,保护cookies不被篡改。 扩展库初始化 在使用Flask-Login扩展库之前,需要先安装它。可以使用pip...

    session实现记录用户登录状态

    用session记录用户的登录状态 1.登录 2.登录成功后将此“已登录”状态保存。 3.实现“显示员工列表”功能。 4.当用户点击“显示员工列表”的时候,验证用户是否已登录,已登录继续显示员工列表,没有登录则跳转到...

    javaweb用户验证码登录session例子

    在Java Web开发中,用户登录验证是不可或缺的一部分,而在这个"javaweb用户验证码登录session例子"中,我们将深入探讨如何结合验证码、用户密码以及Session技术来实现安全的登录过程。Session是Web应用中用于跟踪...

    java中使用session模拟用户登陆

    登出时,清除与该用户相关的Session信息: ```java session.removeAttribute("username"); // 从Session移除用户名 session.invalidate(); // 销毁Session,结束会话 ``` 6. **Session超时**:默认情况下,...

    java session判断用户登录时间和点击页面次数

    在Java Web开发中,Session是服务器用来跟踪用户状态的一种机制,尤其在用户登录验证和页面交互统计方面。本文将深入探讨如何使用Servlet和Session来实现用户登录时间和点击页面次数的记录。 首先,让我们理解...

    .net MVC使用Session验证用户登录

    .net MVC使用Session验证用户登录,直接输入URL的页面地址跳转到登陆页 ,必须经过用户登录授权才可以。例如输入:http://localhost:14613/Home/index 由于没有登录将直接跳转到http://localhost:14613/Account/Login...

    javaWeb_Session(实现用户一段时间自动登录)

    JavaWeb中的Session技术是Web开发中的重要概念,主要用于在服务器端保持用户状态,尤其是在用户登录后,实现用户在一段时间内的自动登录功能。本篇将详细解释Session的工作原理、配置及其实现用户自动登录的机制。 ...

    SpringMVC-Mybatis-Maven-MySQL 登录登出并校验用户且写入session的demo

    这是一个Spring-SpringMVC-Mybatis-Maven-MySQL架构的Java项目,主要实现登录校验功能。...显示页面有登出按钮,点击之后回到登录页面,并去掉session中的用户信息。properties包中带有.sql建表文件

    使用session实现用户登录共4页.pdf.zip

    在Web开发中,Session是一种非常重要的机制,用于在服务器端保持用户的状态,特别是在用户登录之后。这个"使用session实现用户登录共4页.pdf.zip"文件很可能是关于如何在Web应用程序中利用Session技术来管理用户的...

    使用session实现用户登录.docx

    用户点击退出按钮后,服务器会清除session中的"user"属性,从而实现用户登出功能: ```java session.removeAttribute("user"); ``` 这样,用户的数据将从session中移除,用户的状态也就回到了未登录状态。 总结起来...

    Session登录注销

    当用户登录系统时,服务器会创建一个`session`对象,并将其与用户关联。这个`session`通常包含用户的身份信息,如用户名、权限等。服务器通过`session ID`(通常存储在客户端的cookie中)来识别不同的用户会话。 **...

    Session实现用户存储

    - 当服务器收到带有Session ID的请求时,它查找与该ID关联的Session数据,从而获取到用户信息,实现用户登录状态的保持。 3. Session在购物车存储中的应用: - 用户浏览商品并添加到购物车时,服务器会在当前用户...

    PHP中如何使用session实现保存用户登录信息

    主要给大家介绍在php中是如何使用session实现保存用户登录信息的,涉及到php session 用户登录等一些知识点,使用session保存用户登录信息要比cookie安全很多。感兴趣的朋友一起学习吧

    session失效重新登录后,返回之前页面,并保留表单数据

    当检测到Session失效,服务器会清除与之相关的用户信息,然后将用户重定向到登录页面。登录页面应包含一个“记住我”或“自动填充”功能,允许用户选择是否在登录后保持登录状态。如果用户已经填写了表单数据,登录...

Global site tag (gtag.js) - Google Analytics