web.xml
<!-- For Security -->
<filter>
<filter-name>ActionFilter</filter-name>
<filter-class>com.fg.security.ActionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ActionFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ActionFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
ActionFilter.java
/**
*
*/
package com.fg.security;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.fg.common.CommLogger;
import com.fg.common.Constant;
import com.fg.common.FgObject;
import com.fg.common.exception.ExceptionLogger;
import com.fg.urp.business.UserKeyService;
/**
* @author Agui
* @date 2005-7-22
*/
public class ActionFilter extends FgObject implements Filter {
public void init(FilterConfig config) {
//
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) {
String taskUiid=null;
String uiid=null;
try {
CommLogger.debug(getClass()," *** In ActionFilter *** ");
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse rep = (HttpServletResponse) response;
// Get user information
HttpSession session = req.getSession(true);
//从session中提取用户的session
UserKeyService user = (UserKeyService) session
.getAttribute(Constant.SESSION_USER);
CommLogger.debug(getClass()," URI: " + req.getRequestURI());
//如果不等于登陆页面
if(!req.getRequestURI().equals("/msp/login.do")){
//if(req.getQueryString()!=null) rep.sendRedirect(req.getContextPath()+"/error.jsp");
}
//user == null 或者 没有登陆
if (!(user!=null&&user.isLogin())) {
String uri = req.getRequestURI();
//如果不是登录页面
if (!uri.equalsIgnoreCase(req.getContextPath() + "/login.do")) {
CommLogger.debug(getClass()," Action Stop!");
rep.sendRedirect(req.getContextPath() + "/login.do");
} else {
chain.doFilter(request, response);
}
} else {
//user !=null and 登陆了
if(user==null) rep.sendRedirect(req.getContextPath() + "/login.do");
if(req.getParameter("Uiid")!=null) uiid=req.getParameter("Uiid");
if(req.getParameter("taskUiid")!=null) taskUiid=req.getParameter("taskUiid");
chain.doFilter(request, response);
}
CommLogger.debug(getClass()," *** Out ActionFilter *** ");
} catch (Exception e) {
ExceptionLogger.logErrorMsg(e,getClass(),null);
} catch (Throwable t) {
t.printStackTrace();
}
}
public void destroy() {
//
}
}
分享到:
相关推荐
6. **安全性**:J2EE提供了多种安全机制,包括角色-based权限控制(RBAC)、SSL加密、过滤器等,确保用户数据的安全性。 7. **部署与服务器**:J2EE应用程序通常运行在应用服务器上,如Tomcat、Jetty或WebLogic等,...
CAS(Central Authentication Service)是耶鲁大学开发的一个开源SSO项目,广泛应用于Java和J2EE系统。本示例主要讲解如何在没有使用传统Filter机制的情况下,将一个J2EE系统接入CAS以实现SSO功能。 首先,我们需要...
**基于J2EE框架的个人博客系统项目毕业设计** 在当今互联网时代,个人博客系统已经成为人们分享知识、表达观点和记录生活的重要平台。本项目是一个使用J2EE框架开发的个人博客系统,它集成了数据库管理、用户交互、...
"J2EE系统部署,项目实例"这一主题涵盖了如何将开发好的J2EE应用上线到服务器,以及在实际环境中运行和管理这些应用的过程。 首先,我们来看"J2EE完全参考手册-J2EE部署"这部分内容。部署J2EE应用通常涉及以下几个...
这个“j2ee自动登录”示例显然关注的是如何利用Cookie技术实现用户登录后的持久化会话,使得用户在下次访问时能够免去输入用户名和密码的步骤,直接进入系统。下面我们将深入探讨这个主题,包括J2EE中的会话管理、...
在本项目中,我们将深入探讨基于J2EE技术构建的网上书店系统,其中包括登录系统以及学生管理系统等多个核心功能模块。J2EE(Java 2 Platform, Enterprise Edition)是Oracle公司提供的一个用于开发和部署企业级应用...
**j2EE在线交流聊天系统概述** j2EE(Java 2 Platform, Enterprise Edition)是一个由Sun Microsystems(现已被Oracle收购)开发的企业级应用平台,主要用于构建和部署分布式、多层的企业级应用程序。j2EE平台包括...
【J2EE登录小程序详解】 J2EE(Java 2 Platform, Enterprise Edition)是一个由Oracle公司维护的开源框架,用于构建企业级的分布式应用程序。它提供了丰富的服务、API和组件模型,以支持Web应用程序的开发,包括...
本系统基于J2EE(Java 2 Platform, Enterprise Edition)开发,J2EE是一种多层架构的分布式应用程序框架,广泛应用于企业级应用的开发。J2EE平台提供了丰富的API和服务,包括Servlet、JSP、EJB等,能够处理高并发、...
在深入分析《论文研究-管道、过滤器和MVC软件体系模式在J2EE中的应用.pdf》这篇文章之前,需要先理解几个核心概念:软件体系构架、管道和过滤器以及MVC模式。 软件体系构架(Software Architecture)是指软件系统的...
6. **安全性**:系统需防止SQL注入、XSS攻击等网络安全问题,这可以通过使用预编译SQL语句、参数化查询,以及使用过滤器进行输入验证来实现。 7. **持久化框架**:Hibernate或MyBatis等ORM(对象关系映射)框架可以...
8. **部署描述符(Deployment Descriptor)**:系统中的XML配置文件,如web.xml和ejb-jar.xml,定义了应用程序的元数据,如Servlet和EJB的配置、过滤器、监听器等。 通过对这个图书馆管理系统源代码的学习,开发者...
Struts j2ee图书管理系统是一个基于Java企业版(J2EE)平台的成熟软件解决方案,主要采用Struts2框架和MySQL数据库来实现图书的管理功能。这个系统是毕业设计的理想选择,因为它提供了一个完整的、可运行的基础,只...
在本篇文档中,我们将会了解到如何使用J2EE技术栈来搭建一个简单的登录系统,该系统基于MVC架构,利用JSP页面展示用户界面,利用Servlet处理业务逻辑以及使用...以上就是通过一个实例学习J2EE系统架构的相关知识点。
总结来说,J2EE单点登录组件通过整合认证中心、票据机制、会话共享和过滤器,实现了跨系统的一次性登录体验。在实际开发中,需要结合具体业务需求,确保安全性和易用性,同时考虑扩展性和可维护性。对源码的深入理解...
J2EE(Java 2 Platform, Enterprise Edition)是Sun Microsystems为简化企业级应用开发而提出的一套技术标准,它提供了构建分布式系统的基础框架。在J2EE环境中,开发者可以利用多种组件模型来构建复杂的应用程序,...
在选课系统中,Servlet可能负责处理用户的登录、选课等业务逻辑,而JSP则用于展示用户界面。 三、数据库设计 选课系统通常需要一个完善的数据库来存储学生信息、课程信息、选课记录等数据。可能采用的关系型数据库...
1. **整合配置**:如何在Web.xml中配置Struts2、Spring和Hibernate的监听器、过滤器和Servlet,以确保它们能协同工作。 2. **Spring管理Bean**:如何定义和配置Spring的bean,包括Action类、Service层接口及其实现...