由于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"/> <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; }
相关推荐
《web开发技术(java)》实验四——利用Session完成用户登录功能
利用Session验证用户登录,及Session的一些常见用法
.net MVC使用Session验证用户登录,直接输入URL的页面地址跳转到登陆页 ,必须经过用户登录授权才可以。例如输入:http://localhost:14613/Home/index 由于没有登录将直接跳转到http://localhost:14613/Account/Login...
该例程利用session全面解决了用户在线数量统计及控制用户重复登录。
用session记录用户的登录状态 1.登录 2.登录成功后将此“已登录”状态保存。 3.实现“显示员工列表”功能。 4.当用户点击“显示员工列表”的时候,验证用户是否已登录,已登录继续显示员工列表,没有登录则跳转到...
这是一个Spring-SpringMVC-Mybatis-Maven-MySQL架构的Java项目,主要实现登录校验功能。...显示页面有登出按钮,点击之后回到登录页面,并去掉session中的用户信息。properties包中带有.sql建表文件
实验做得成果,有需要的话可以看看 功能一般 不复杂
用WebStorm工具实现用户登录和退出,用户名用session记录,用户登录过后,session会记录下来用户名字
用servlet作为控制器,session来储存登录时间和点击页面次数。如有不足请提出。
主要给大家介绍在php中是如何使用session实现保存用户登录信息的,涉及到php session 用户登录等一些知识点,使用session保存用户登录信息要比cookie安全很多。感兴趣的朋友一起学习吧
javaweb中用到的用户密码验证码一体的登录例子,主要是利用session原理的例子。
java编程视频-利用session完成用户登陆
通过javaWeb的Session技术,实现用户登录以后在一段时间内不用再次登录;关闭浏览器,再次打开上次登录页面,仍然处在登录状态。
正对java Web项目,同浏览器同时打开两个登录窗口(不同Tag),用不同用户登录,为避免使用同一个Session,需要使用这段代码。否则先登录的用户的Session会变成后登录用户的Session.相关系统使用权限也会变。
实验一:使用Session Bean和JDBC技术完成登录和注册功能 实验二:使用Entity Bean替代JDBC完成登录和注册 实验三:在登录或注册成功之后,使用Message-Driven Bean对客户端发送消息 实验四:使用Servlet和JSP技术...
web实例,使用express框架,实现了用户管理(注册登陆登出)功能,通过session在本地保持了登陆,通过mongoose链接mongodb实现数据持久化。(课程习作,手法拙劣,如有大佬路过,请多多指教)
该例程利用session全面解决了用户在线数量统计及控制用户重复登录。
java中使用session模拟用户登陆
简单的struts2拦截器利用session拦截用户登录.docx
常用跨域共用session的是登录模块,我相信很多开发的朋友的都遇到过,只需要一个地方登录,相关联的网站也是处于登录状态。两种情况:一种9streets.cn和a.9streets.cn之间,另一种是a.com b.com之间,这几天总结了...