- 浏览: 439186 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
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 5731之前团队开发SVN上down了同一个项目,开发中需要发布测试版 ... -
UrlRewrite时需要注意的问题:action以及正则表达式
2011-12-15 13:57 6664myeclipse6.5+struts2-core-2.1.8 ... -
JQuery实现在分页的时候添加一个设置每页显示多少条数据的功能
2011-12-03 14:44 12038尽管现在微博或者SNS类的网站流行一页一页的下拉累加,或者这个 ... -
tomcat无需项目名即可访问该项目配置
2011-11-04 15:56 2514<Host name="loc ... -
log4j配置
2011-11-02 14:36 1059log4j.rootLogger=DEBUG,myCons ... -
设置一个月的开始和结束
2011-10-08 16:05 13581.以前的办法 /** * 根据月份设置活动的开始 ... -
一个过滤器类,过滤多个路径
2011-08-30 12:43 1287<!-- 登录验证 --> < ... -
Struts的Validator验证框架使用教程
2011-06-25 18:05 1460一、验证有很多种: 1.最开始接触的js验证客户端验证 ... -
struts <action>元素属性parameter的作用
2011-06-17 12:31 104961.简介: 没有struts之前,使用servlet,最 ... -
详解 Spring 3.0 基于 Annotation 的依赖注入实现
2011-06-15 18:37 1085简介: Spring 的依赖配置方式与 Spring 框架的内 ... -
LoginAction.java
2011-06-14 18:46 2833感觉这样写还行: LoginAction.java ... -
Servlet 工作原理解析
2011-06-07 14:51 991. Servlet 工作原理解析 http://www ... -
validation.xml 文件(转)
2011-04-14 13:05 1010原文章链接:http://book.51cto.com/a ... -
Google首席Java架构师谈数学与程序员的关系
2011-03-27 17:56 1217. 链接:http://developer.51c ... -
多图详解Spring框架的设计理念与设计模式(转)
2011-03-27 17:38 1054. 多图详解Spring框架的设计理念与设计模式 . -
寻找到了struts2的1.2版本的文档
2011-03-10 21:42 1015一份API文档对于学习一个新的jar包来说意义当然不言而喻,这 ... -
如何消除Console的warn:Could not find property [struts.valueStack]
2010-11-28 14:44 12089初次使用struts2每次控制台(console)都会输出一些 ... -
JSP自定义标签开发流程
2010-10-19 12:58 852一、概述 jsp(SUN企业级应用的首选)中有一块重要的 ... -
varStatus定义的方法
2010-10-18 00:35 1337不论是对整数还是对集合进行迭代, <c:forEach& ... -
动态网站的本质浅析
2010-10-16 22:44 960"我的回答相对于这个题目估计很水,但是都是自己的一点 ...
相关推荐
下面我们将深入探讨这个主题,包括J2EE中的会话管理、Cookie的工作原理以及如何实现自动登录。 首先,J2EE提供了一套完整的会话管理机制,主要是通过Session对象来实现。Session是服务器为每个客户端维护的状态信息...
通过上述分析,我们可以看到“j2ee练习8实现页面自动跳转”涵盖了Web开发中的多个核心概念和技术,包括页面跳转、Servlet、JSP、MVC模式以及Web应用的常规设计和调试。学习并掌握这些知识点,将有助于提升J2EE开发...
3. **设定Session生命周期**:设置Session的有效时间,以实现自动注销功能。 4. **开发一个下载文件的JavaEE Web应用**:创建一个能够提供文件下载服务的Web应用。 5. **开发一个Session监听器**:实现Session创建和...
- 实现Cookie功能,比如设置和读取Cookie,了解其工作原理。 - 深入理解Session和Cookie在实际应用中的使用场景和优缺点。 通过这个练习,你可以深入理解J2EE中的Session和Cookie机制,提高Web开发能力。《ex2实验...
- **Cookie**:客户端用来存储少量数据的一种方式,当浏览器向服务器发送请求时会自动带上对应的Cookie。 示例代码: ```java // 设置Session HttpSession session = request.getSession(); session.setAttribute(...
Cookie是另一种常见的会话管理手段,它是由服务器发送到客户端的一小段文本信息,客户端在后续的请求中会自动附带回去。Cookie通常用于存储非敏感的用户信息,如首选项或购物车内容。需要注意的是,Cookie的大小有...
本项目“经典毕业设计网上书店”正是基于J2EE技术实现的一个实例,旨在展示如何运用这些技术来创建一个完整的电子商务网站。 1. **项目架构** 该项目通常采用三层架构设计:表现层、业务逻辑层和数据访问层。表现...
在J2EE应用程序开发中,验证码(CAPTCHA)是一种常用的安全机制,用于防止自动化脚本或机器人进行恶意操作,如批量注册、恶意登录等。验证码通常由字母和数字组成,设计目的是让人类用户能轻松识别,但对计算机程序...
- **实现方法**:如何将Web服务集成到现有的J2EE应用中。 #### 五、应用部署 ##### 38. 应用服务器安装 (UNIT38) - **安装步骤**:详细介绍如何安装和配置应用服务器。 - **常用应用服务器**:IBM WebSphere、...
【标题】和【描述】提及的是一个针对新手的J2EE实战项目,主要涉及使用...通过这个实战项目,新手不仅能够掌握J2EE开发的基本技能,还能了解到如何将这些技术应用于实际的办公自动化系统中,从而提升自己的开发能力。
在本项目中,J2EE的组件模型包括了Servlet、JSP(JavaServer Pages)、EJB(Enterprise JavaBeans)等,它们共同协作以实现系统的业务逻辑和数据处理。 1. **Servlet**:Servlet是Java中处理HTTP请求的服务器端组件...
在Java J2EE中,我们可以使用Servlet、JSP(JavaServer Pages)、JSTL(JavaServer Pages Standard Tag Library)和EL(Expression Language)等技术来实现。 1. **Servlet**:Servlet是Java编写的服务器端程序,...
当用户在系统A中登录后,系统会生成一个安全的票据(如JWT或Session ID),并将这个票据存储在一个中央认证服务器上。当用户尝试访问系统B时,系统B会检查是否有有效的票据,如果有,则自动登录用户,无需再次输入...
4. **EJB(Enterprise JavaBeans)**:在J2EE环境中,EJB是可重用的服务器端组件,用于实现业务逻辑。在博客系统中,可能有UserBean来处理用户操作,ArticleBean来处理文章管理等。 5. **MVC(Model-View-...
本篇文章将深入探讨如何使用J2EE实现用户登录、信息修改以及数据添加等功能。 首先,让我们关注登录功能的实现。在J2EE中,登录通常涉及到用户接口(UI)、控制器(Controller)和数据访问对象(DAO)。用户在UI上...
- **观察者模式**:多对一的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会得到通知并自动更新。 **4. 经典企业设计模式** - **MVC (Model-View-Controller)**:将业务逻辑、数据和界面展示分离。 -...
### J2EE课程总结 #### 数据库:Oracle **1. Oracle SQL基础知识** - **选择行**:通过`SELECT`语句结合`WHERE`子句来实现特定条件下的数据筛选。 - **限制选择行**:利用`LIMIT`或`ROWNUM`来限制返回结果的数量...
为了在 J2EE 应用中使用 MySQL 数据库,我们需要完成以下步骤: 1. **下载 JDBC 驱动**:首先从官方渠道下载 MySQL 的 JDBC 驱动(例如 mysql-connector-java-X.X.X.jar)。 2. **安装 JDBC 驱动**:将下载的 JDBC...
《基于J2EE网上招聘系统的设计与实现》这篇毕业论文主要探讨了如何利用J2EE技术构建一个高效、便捷的在线招聘系统。J2EE(Java 2 Platform, Enterprise Edition)是一个用于开发和部署企业级应用程序的开放平台,它...
总结,《基于BS模式的J2EE技术的百飞特网上订餐系统》是一个全面的餐饮服务平台,它集成了前端交互、后端处理、数据库管理和安全防护等多个方面,展示了J2EE在Web应用中的强大能力。这个项目不仅可以作为学习J2EE...