最近在编写论坛系统的实现,其中就涉及到用户登陆后保持会话直到浏览器关闭,同时可以使用cookie保存登陆信息以便在下次可以自动登陆。使用struts2框架实现。 下面是在action里登陆和注销的函数
Java代码
public String logout() {
this.getSession().clear();
Cookie idCookie = new Cookie("id", "");
Cookie passwordCookie = new Cookie("password", "");
idCookie.setMaxAge(0); //使cookie失效
passwordCookie.setMaxAge(0);
idCookie.setPath("/"); //这个不能少
passwordCookie.setPath("/");
servletResponse.addCookie(idCookie);
servletResponse.addCookie(passwordCookie);
return SUCCESS;
}
public String login() {
User user = userService.getUser(id, password);
if (user != null) {
this.getSession().put("user", id);
//如果选择保存登陆信息
if (saveLogin != null) {
Cookie idCookie = new Cookie("id", id); //可以使用md5或着自己的加密算法保存
Cookie passwordCookie = new Cookie("password", password);
idCookie.setPath("/webappName/"); //cookie路径问题,在我的其他文章里有专门的讲解
idCookie.setMaxAge(MAX_AGE);
passwordCookie.setPath("/webappName/");
passwordCookie.setMaxAge(MAX_AGE);
servletResponse.addCookie(idCookie);
servletResponse.addCookie(passwordCookie);
saveLogin = null;
}
return SUCCESS;
} else {
this.setInfo("用户名或密码错误");
return INFO;
}
}
在保存完cookie后要保证以后用户每次访问该系统的任意页面系统都必须先访问用户的cookie查看是否有登陆信息,这个使用servlet的filter实现最为方便。下面就是filter的代码
Java代码
private void doBeforeProcessing(ServletRequest request) {
HttpSession session = ((HttpServletRequest) request).getSession(true);
//首先检查session,若已经登陆则直接忽略一下代码
if (session.getAttribute("user") != null) {
return;
}
Cookie[] cookies = ((HttpServletRequest) request).getCookies();
String id = null;
String password = null;
if (cookies != null) {
for (Cookie c : cookies) {
if (c.getName().equals("id")) {
id = c.getValue();
}
if (c.getName().equals("password")) {
password = c.getValue();
}
}
}
UserService userService = (UserService) this.getApplicationContext().getBean("userService");
if (userService.isUser(id, password)) {
session = ((HttpServletRequest) request).getSession(true);
session.setAttribute("user", id);
}
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
doBeforeProcessing(request);
chain.doFilter(request, response);
}
其中涉及的在filter中访问spring的上下文
分享到:
相关推荐
JAVA中COOKIE的使用 在JAVA的WEB环境中COOKIE是以一个数组的形式保存的:
javaweb中Cookie对用户密码保存的例子,当我们在购物网站浏览的时候,下次访问的时候就会出现我们访问过的记录,这个例子就是以Cookie为原理写的JavaWeb代码例子.
所以web.xml中使用: <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation=...
13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 13.2.2 [jsp:setproperty] 413 13.2.3 [jsp:getproperty] 414 13.2.4 示例 414 13.3 网上书店程序 418 13.4 小结 440 第14章 jsp开发的两种模型 441 ...
13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 13.2.2 [jsp:setproperty] 413 13.2.3 [jsp:getproperty] 414 13.2.4 示例 414 13.3 网上书店程序 418 13.4 小结 440 第14章 jsp开发的两种模型 441 ...
MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 全书分为两部分,需 要全部下载下载一起解压,此部分为第一部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 ...
|-第1节 实例讲解—用户登陆(Cookie保存信息) |-第2节 分页实现(上)_假分页 |-第3节 分页实现(下)_真分页 |-第4节 JavaBean |-第5节 上传组件Smartupload 第23天 项目及DAO设计模式 |-第1节 实例讲解:...
13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 13.2.2 [jsp:setproperty] 413 13.2.3 [jsp:getproperty] 414 13.2.4 示例 414 13.3 网上书店程序 418 13.4 小结 440 第14章 jsp开发的两种模型 441 ...
MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 全书分为两部分,需 要全部下载下载一起解压,此部分为第二部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 ...
MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发...
13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 13.2.2 [jsp:setproperty] 413 13.2.3 [jsp:getproperty] 414 13.2.4 示例 414 13.3 网上书店程序 418 13.4 小结 440 第14章 jsp开发的两种模型 441 ...
第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器...
11.2、在Tomcat中使用数据库连接池 11.3、查找数据源 11.4、本章摘要 第12章 JSP标签编程 12.1、标签编程简介 12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5...
目前市场业务中在产品以及其他项目的认证和检测方面存在诸多不便,用户需要实地考察并频繁与检测单位沟通,填写繁琐的纸质检测报告、当面送递样品,对于检测环节中存在的问题难以及时交互并处理。市场上相应的检测...
用户登录成功,服务端会保证一个session,当然会给客户端一个sessionId,客户端会把sessionId保存在cookie中,每次请求都会携带这个sessionId。 cookie+session这种模式通常是保存在内存中,而且服务从单服务到多...
第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器...
第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器...
1.xml在项目中的作用 2.s-EJB 与 e-EJB的区别 3.会话面的作用 4.cmp与bmp的优缺点 5.j2me程序的必需的几个部分 6.c/s与b/s的区别 7.构建一个connect pool,然后再调用它, 8.j2ee平台与dotnet平台的区别 9....
子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...