- 浏览: 432769 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
CmdSmith:
这么构建出来的应该都是完全二叉树吧。。
java实现二叉树的构建以及3种遍历方法 -
haoyuan2012:
非常好,很受益
java实现二叉树的构建以及3种遍历方法 -
haizhiguang:
请问楼主是如何想到 nodeList.get(parent ...
java实现二叉树的构建以及3种遍历方法 -
Angry_Icarus:
赞赞赞
java实现二叉树的构建以及3种遍历方法 -
lilin9043:
刚刚用这个 不会用
UrlRewrite时需要注意的问题:action以及正则表达式
.
1.用到的常量
2.过滤器
3.web.xml配置cookie登录过滤器
4.用户登录时
5.退出
6.jsp登录页面
1.用到的常量
package com.hydom.util; public final class CommonConstants { // 系统 session 用户 public final static String SESSION_USER = "session_user"; /** 保存在浏览器中cookie的邮箱名称名 */ public final static String BROWSER_COOKIE_EMAIL = "HKPhotoUserEmail"; /** 保存在浏览器中cookie的邮箱密码名 */ public final static String BROWSER_COOKIE_PASSWORD = "HKPhotoUserPassword"; /** 保存在浏览器中cookie的最大时间15天 */ public final static int BROWSER_COOKIE_MAX_AGE = 15*24*60*60; /** 保存在浏览器中cookie的自动登录状态名 */ public final static String BROWSER_COOKIE_AUTO_STATUS_NAME = "HKPhotoAutoLoginStatus"; /** 保存在浏览器中cookie的退出登录名 */ public final static String BROWSER_COOKIE_LOGIN_OUT_NAME = "HKPhotoLoginOut"; }
2.过滤器
package com.hydom.filter; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.hydom.entity.User; import com.hydom.service.IUserService; import com.hydom.util.CommonConstants; import com.hydom.util.pico.PicoContainer; /** *功能:首先检测session中是否有user,如果没有再检测cookie中是否有对应的邮箱和密码<BR> * 如果有那么就查出该user放进session中<BR> * 如果都没有那么就doFilter()<BR> * * @author ocaicai@yeah.net<BR> * @date 2011-9-22<BR> * @version 1.0 <BR> * */ public class CookieLoginFilter extends BaseFilter { // 获取数据层示例 @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; Object object = request.getSession().getAttribute( CommonConstants.SESSION_USER); User cookieUser = null; String email = null; String password = null; String autoStatus = null; if (object == null) { Cookie[] cookies = request.getCookies(); if (cookies != null && cookies.length > 0) { // System.out.println("cookies.length=" + cookies.length); for (int i = 0; i < cookies.length; i++) { Cookie cookie = cookies[i]; // 判断Cookie的邮箱名是否等于"HKPhotoUserEmail" if (CommonConstants.BROWSER_COOKIE_EMAIL.equals(cookie .getName())) { email = cookie.getValue().trim(); } // 判断Cookie的密码名是否等于"HKPhotoUserPassword" if (CommonConstants.BROWSER_COOKIE_PASSWORD.equals(cookie .getName())) { password = cookie.getValue().trim(); } // 判断Cookie的自动登录状态名是否等于"HKPhotoAutoLoginStatus" if (CommonConstants.BROWSER_COOKIE_AUTO_STATUS_NAME .equals(cookie.getName())) { autoStatus = cookie.getValue().trim(); } } if (autoStatus!=null&&autoStatus.equals("1")) { if (email != null && password != null && email.length() > 0 && password.length() > 0) { cookieUser = new User(); cookieUser.setEmail(email); cookieUser.setPassword(password); // System.out.println("email=" + cookieUser.getEmail()); // System.out.println("password=" // + cookieUser.getPassword()); IUserService userService = PicoContainer.PICO .getComponent(IUserService.class); cookieUser = userService.validLogin(cookieUser); if (cookieUser != null) { // 将该user放入到session中 request.getSession().setAttribute( CommonConstants.SESSION_USER, cookieUser); } else { chain.doFilter(request, response); } } else { chain.doFilter(request, response); } } else { chain.doFilter(request, response); } } else { chain.doFilter(request, response); } } else { chain.doFilter(request, response); } } }
3.web.xml配置cookie登录过滤器
<!-- cookie邮箱和密码登陆过滤 --> <filter> <filter-name>cookie-login-filter</filter-name> <filter-class>com.hydom.filter.CookieLoginFilter</filter-class> </filter> <filter-mapping> <filter-name>cookie-login-filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
4.用户登录时
public class LoginAction extends BaseAction { private static final long serialVersionUID = 1L; private String email = null;// 用户邮箱 private String password = null;// 用户密码 private boolean autoLoginStatus = false; public boolean getAutoLoginStatus() { return autoLoginStatus; } public void setAutoLoginStatus(boolean autoLoginStatus) { this.autoLoginStatus = autoLoginStatus; } public void setEmail(String email) { this.email = email; } public void setPassword(String password) { this.password = password; } // 获取数据层示例 private IUserService userService = PicoContainer.PICO .getComponent(IUserService.class); @Override public String execute() throws Exception { try { // 验证用户信息 String message = checkAndFilterUsersInfo(); ; User user = null; if (message == null) { user = new User(); user.setEmail(this.email); user.setPassword(this.password); user = userService.validLogin(user); } // 输出结果 StringBuilder msg = new StringBuilder(); msg.append("{"); if (user != null) { super.getSession().setAttribute(CommonConstants.SESSION_USER, user); msg.append("msg:'success'").append(","); msg.append("userName:'").append(user.getUserName()).append("'"); if (autoLoginStatus) { // 根据选择状态判断是否将用户邮箱和密码信息保存在客户端浏览器 addCookieingUserToResponse(user); }else{ removeCookieingUserInResponse(); } } else { if (message == null) { msg.append("msg:'帳號或者密碼錯誤'"); } else { msg.append("msg:'").append(message).append("'"); } } msg.append("}"); ajaxJson(msg.toString()); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 将用户邮箱和密码信息添加到响应中 * * @param cookieingUser */ private void addCookieingUserToResponse(User cookieingUser) { // 设置cookie邮箱名值对 Cookie cookieEmail = new Cookie(CommonConstants.BROWSER_COOKIE_EMAIL, cookieingUser.getEmail()); cookieEmail.setMaxAge(CommonConstants.BROWSER_COOKIE_MAX_AGE); cookieEmail.setPath(super.getRequest().getContextPath()); super.getResponse().addCookie(cookieEmail); // 设置cookie密码名值对 Cookie cookiePassword = new Cookie( CommonConstants.BROWSER_COOKIE_PASSWORD, cookieingUser .getPassword()); cookiePassword.setMaxAge(CommonConstants.BROWSER_COOKIE_MAX_AGE); cookiePassword.setPath(super.getRequest().getContextPath()); super.getResponse().addCookie(cookiePassword); // 设置cookie自动登录状态名值对 Cookie autoLoginStatusCookie = new Cookie( CommonConstants.BROWSER_COOKIE_AUTO_STATUS_NAME, "1"); autoLoginStatusCookie .setMaxAge(CommonConstants.BROWSER_COOKIE_MAX_AGE); autoLoginStatusCookie.setPath(super.getRequest() .getContextPath()); super.getResponse().addCookie(autoLoginStatusCookie); // 设置cookie登出名值对 Cookie loginOutCookie = new Cookie( CommonConstants.BROWSER_COOKIE_LOGIN_OUT_NAME, "0"); loginOutCookie .setMaxAge(CommonConstants.BROWSER_COOKIE_MAX_AGE); loginOutCookie.setPath(super.getRequest() .getContextPath()); super.getResponse().addCookie(loginOutCookie); } public void removeCookieingUserInResponse(){ // 设置cookie邮箱名值对 Cookie cookieEmail = new Cookie(CommonConstants.BROWSER_COOKIE_EMAIL, null); cookieEmail.setMaxAge(CommonConstants.BROWSER_COOKIE_MAX_AGE); cookieEmail.setPath(super.getRequest().getContextPath()); super.getResponse().addCookie(cookieEmail); // 设置cookie密码名值对 Cookie cookiePassword = new Cookie( CommonConstants.BROWSER_COOKIE_PASSWORD, null); cookiePassword.setMaxAge(CommonConstants.BROWSER_COOKIE_MAX_AGE); cookiePassword.setPath(super.getRequest().getContextPath()); super.getResponse().addCookie(cookiePassword); // 设置cookie自动登录状态名值对 Cookie autoLoginStatusCookie = new Cookie( CommonConstants.BROWSER_COOKIE_AUTO_STATUS_NAME, "0"); autoLoginStatusCookie .setMaxAge(CommonConstants.BROWSER_COOKIE_MAX_AGE); autoLoginStatusCookie.setPath(super.getRequest() .getContextPath()); super.getResponse().addCookie(autoLoginStatusCookie); // 设置cookie登出名值对 Cookie loginOutCookie = new Cookie( CommonConstants.BROWSER_COOKIE_LOGIN_OUT_NAME, "0"); loginOutCookie .setMaxAge(CommonConstants.BROWSER_COOKIE_MAX_AGE); loginOutCookie.setPath(super.getRequest() .getContextPath()); super.getResponse().addCookie(loginOutCookie); } }
5.退出
public class LogOutAction extends BaseAction { private static final long serialVersionUID = 1L; // 用户登出 @Override public String execute() throws Exception { super.getSession().removeAttribute(CommonConstants.SESSION_USER); // 设置cookie登出名值对 Cookie loginOutCookie = new Cookie( CommonConstants.BROWSER_COOKIE_LOGIN_OUT_NAME, "1"); loginOutCookie .setMaxAge(CommonConstants.BROWSER_COOKIE_MAX_AGE); loginOutCookie.setPath(super.getRequest() .getContextPath()); super.getResponse().addCookie(loginOutCookie); // 设置cookie自动登录状态名值对 Cookie autoLoginStatusCookie = new Cookie( CommonConstants.BROWSER_COOKIE_AUTO_STATUS_NAME, "0"); autoLoginStatusCookie .setMaxAge(CommonConstants.BROWSER_COOKIE_MAX_AGE); autoLoginStatusCookie.setPath(super.getRequest() .getContextPath()); super.getResponse().addCookie(autoLoginStatusCookie); PrintWriter out = super.getResponse().getWriter(); out.close(); return null; } }
6.jsp登录页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <script src="<%=base%>js/common/jquery.js"></script> <script src="<%=base%>js/common/jquery.cookie.js"></script> <script type="text/javascript"> $(document).ready(function() { var email=$.cookie('<%=CommonConstants.BROWSER_COOKIE_EMAIL%>'); var password=$.cookie('<%=CommonConstants.BROWSER_COOKIE_PASSWORD%>'); var autoStatus=$.cookie('<%=CommonConstants.BROWSER_COOKIE_AUTO_STATUS_NAME%>'); var loginOut=$.cookie('<%=CommonConstants.BROWSER_COOKIE_LOGIN_OUT_NAME%>'); if(autoStatus=="0"&&loginOut=="1"){ $("#newemail").attr("value",email.replace(new RegExp('"',"gm"),"")); $("#newpassword").attr("value",password.replace(new RegExp('"',"gm"),"")); } }); </script> <div class="hidden" id="smallLay"> <span><a href="javascript:closedialog()" onFocus="this.blur()" > <img src="<%=base%>images/cose.gif" /></a></span> <p class="logo"><img onerror="this.src='<%=base%>images/logo.jpg'" src="<%=base%><%=logo.getSmallPath()%>" /></p> <div class="user"> <ul> <li><b>郵箱:</b><input type="text" id="newemail" onblur="checkAdminEmail(this.value)" value=""/></li> <li><b>密碼:</b><input type="password" id="newpassword" value=""/></li> </ul> <samp><input name="autoLoginStatus" id="autoLoginStatus" checked="checked" type="checkbox" value="" class="check"/><d>下次自動登陸</d> <a href="javascript:startRegister()" style="color:red;text-decoration: underline;"">忘記密碼</a></samp> <p><input type="button" class="land" onclick="gologin()" value="登 录"/></p> <samp><b>使用合作網站帳號登陸:</b><img src="<%=base%>images/f.gif" onclick="tofacelogin()"/><u></u><img src="<%=base%>images/sina.gif" /></samp> </div> </div>
发表评论
-
myeclipse不能打war包的问题
2012-02-06 18:07 5632之前团队开发SVN上down了同一个项目,开发中需要发布测试版 ... -
UrlRewrite时需要注意的问题:action以及正则表达式
2011-12-15 13:57 6609myeclipse6.5+struts2-core-2.1.8 ... -
JQuery实现在分页的时候添加一个设置每页显示多少条数据的功能
2011-12-03 14:44 11967尽管现在微博或者SNS类的网站流行一页一页的下拉累加,或者这个 ... -
tomcat无需项目名即可访问该项目配置
2011-11-04 15:56 2469<Host name="loc ... -
log4j配置
2011-11-02 14:36 1015log4j.rootLogger=DEBUG,myCons ... -
设置一个月的开始和结束
2011-10-08 16:05 12861.以前的办法 /** * 根据月份设置活动的开始 ... -
一个过滤器类,过滤多个路径
2011-08-30 12:43 1238<!-- 登录验证 --> < ... -
Struts的Validator验证框架使用教程
2011-06-25 18:05 1417一、验证有很多种: 1.最开始接触的js验证客户端验证 ... -
struts <action>元素属性parameter的作用
2011-06-17 12:31 104531.简介: 没有struts之前,使用servlet,最 ... -
详解 Spring 3.0 基于 Annotation 的依赖注入实现
2011-06-15 18:37 1018简介: Spring 的依赖配置方式与 Spring 框架的内 ... -
LoginAction.java
2011-06-14 18:46 2776感觉这样写还行: LoginAction.java ... -
Servlet 工作原理解析
2011-06-07 14:51 943. Servlet 工作原理解析 http://www ... -
validation.xml 文件(转)
2011-04-14 13:05 957原文章链接:http://book.51cto.com/a ... -
Google首席Java架构师谈数学与程序员的关系
2011-03-27 17:56 1169. 链接:http://developer.51c ... -
多图详解Spring框架的设计理念与设计模式(转)
2011-03-27 17:38 1008. 多图详解Spring框架的设计理念与设计模式 . -
寻找到了struts2的1.2版本的文档
2011-03-10 21:42 976一份API文档对于学习一个新的jar包来说意义当然不言而喻,这 ... -
如何消除Console的warn:Could not find property [struts.valueStack]
2010-11-28 14:44 12044初次使用struts2每次控制台(console)都会输出一些 ... -
JSP自定义标签开发流程
2010-10-19 12:58 808一、概述 jsp(SUN企业级应用的首选)中有一块重要的 ... -
varStatus定义的方法
2010-10-18 00:35 1266不论是对整数还是对集合进行迭代, <c:forEach& ... -
动态网站的本质浅析
2010-10-16 22:44 877"我的回答相对于这个题目估计很水,但是都是自己的一点 ...
相关推荐
J2EE——MyEclipse实现网页的登录和注册,源代码,IDE为MyEclipse J2EE——MyEclipse实现网页的登录和注册,源代码,IDE为MyEclipse
J2EE 实现简单登录只是简单的登录功能没其他的了
web开发基于cookie自动登录小例子,导下包。
很好的j2ee学习的例子啊 可以实现登陆删除等有关数据库的操作
J2EE MVC模式下的简单用户注册与登录的实现 用到了 JDOM解析XML文档、JDBC、验证码、MD5加密 对新手很有帮助。
J2EE工程实现中常见安全问题解决对策。涉及各访问,ejb等相关技术
讲解java企业级应用J2EE技术的完整教材,并包含了实现代码,可以借鉴
J2EE实现通讯录 jsp J2EE实现通讯录 jsp
这篇指南不是为J2EE服务器及工具供应商准备的,它没有解释如何实现J2EE结构,也没有解释J2EE软件包。J2EE规范描述了J2EE结构并可以从下面的网址下载: http://java.sun.com/j2ee/docs.html#specs
bbs系统的j2ee实现 JavaScript实现的项目 源代码 导入即可使用无需安装插件等附加操作,实际的j2ee项目
j2ee中文帮助文档j2ee中文帮助文档j2ee中文帮助文档j2ee中文帮助文档j2ee中文帮助文档j2ee中文帮助文档j2ee中文帮助文档j2ee中文帮助文档j2ee中文帮助文档j2ee中文帮助文档
在登录页面中输入正确的用户名...登录错误则自动跳转回到登录页面,并在登录页面中提示"登录错误"。 数据库字段有用户信息,内容为Maven工程、数据库脚本文件(logindb.sql)以及针对本程序的使用说明简述(readme.txt)。
基于J2EE的办公自动化系统的设计和实现,有点老的书。
J2EE实例,strut实现登录,JSP为跳转页面
一个动态菜单的小实验,通过表中的配置,与WEB工程结合起来,实现动态菜单由配置表中生成
j2ee6中文规范j2ee6中文规范j2ee6中文规范j2ee6中文规范
j2ee 实现上传实例 前后台交互上传 结合 java jsp struts2