`
dfwang
  • 浏览: 95551 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Stripes1.5.6+Spring3.05+Spring Security3.0.5 环境搭建(一)

    博客分类:
  • j2ee
阅读更多
该部分的环境搭建基于Spring Security URL的拦截方式
stripes-1.5.6
spring-framework-3.0.5.RELEASE
spring-security-3.0.5.RELEASE
登陆页面:index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="stripes" uri="http://stripes.sourceforge.net/stripes.tld"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head><title>index</title></head>
  <body>
    <h1>index.jsp</h1>
    <p>${sessionScope.SPRING_SECURITY_LAST_EXCEPTION.message}</p>
    <form action="/example/j_spring_security_check" method="post">
        <table>
            <tr>
                <td>Username:</td>
                <td><input type="text" name="j_username" /></td>
            </tr>
            <tr>
                <td>Password:</td>
                <td><input type="password"  name="j_password" /></td>
            </tr>
            <tr>
                <td colspan="2">             
                   <input name="submit" type="submit"/>
                </td>
            </tr>
             
        </table>
    </form>
  </body>
</html>

登陆成功后跳转的页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>homepage</title>
  </head>
  <body>
首页<br>
  </body>
</html>

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
	
	<!-- Spring Configuration begin-->
	  	<listener>
	    	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
		</listener>
	  	<context-param>
		    <param-name>contextConfigLocation</param-name>
		    <param-value>classpath:config/applicationContext-*.xml</param-value>
		</context-param> 
  	<!-- Spring Configuration end-->
  	<!-- encoding begin-->         
	     <filter>   
	         <filter-name>characterEncodingFilter</filter-name>      
	         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>    
	             <init-param>      
	                  <param-name>encoding</param-name>      
	                  <param-value>UTF-8</param-value>   
	             </init-param>   
	             <init-param>
		              <param-name>forceEncoding</param-name>
		              <param-value>true</param-value>
		         </init-param>     
	    </filter>      
	    <filter-mapping>      
	        <filter-name>characterEncodingFilter</filter-name>      
	        <url-pattern>/*</url-pattern>      
	    </filter-mapping> 
	    <filter-mapping>      
	        <filter-name>characterEncodingFilter</filter-name>      
	        <url-pattern>*.jsp</url-pattern>      
	    </filter-mapping>    
	    <filter-mapping>      
	        <filter-name>characterEncodingFilter</filter-name>      
	        <url-pattern>*.action</url-pattern>      
	    </filter-mapping> 
	    <filter-mapping>      
	        <filter-name>characterEncodingFilter</filter-name>      
	        <url-pattern>*.do</url-pattern>      
	    </filter-mapping>   
	    <session-config>      
	        <session-timeout>60</session-timeout>      
	    </session-config>    
  	<!-- encoding end-->   
  	<!-- Spring security Filter end-->  
		<filter>  
		    <filter-name>springSecurityFilterChain</filter-name>  
		    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>  
		</filter>  
		<filter-mapping>  
		    <filter-name>springSecurityFilterChain</filter-name>  
		    <url-pattern>/*</url-pattern>  
		</filter-mapping>  
	<!-- Spring security Filter end-->  
	
	<!-- stripes begin -->
	    <filter>
			<display-name>Stripes Filter</display-name>
			<filter-name>StripesFilter</filter-name>
			<filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class>
			<init-param>
				<param-name>ActionResolver.Packages</param-name>
				<param-value>com.examples.action</param-value>
			</init-param>
				<!-- Spring integrate Stripes begin-->
				  	<init-param>
				    	<param-name>Interceptor.Classes</param-name>
				    	<param-value> net.sourceforge.stripes.integration.spring.SpringInterceptor </param-value>
					</init-param>
				<!-- Spring integrate Stripes end-->
	 	</filter>
	    <filter-mapping>
			<filter-name>StripesFilter</filter-name>
			<url-pattern>*.jsp</url-pattern>
			<dispatcher>REQUEST</dispatcher>
		</filter-mapping>
	    <filter-mapping>
			<filter-name>StripesFilter</filter-name>
			<servlet-name>StripesDispatcher</servlet-name>
			<dispatcher>REQUEST</dispatcher>
		</filter-mapping>
	    <servlet>
			<servlet-name>StripesDispatcher</servlet-name>
			<servlet-class>net.sourceforge.stripes.controller.DispatcherServlet</servlet-class>
			<load-on-startup>1</load-on-startup>
		</servlet>
		
		<servlet-mapping>
			<servlet-name>StripesDispatcher</servlet-name>
			<url-pattern>*.action</url-pattern>
		</servlet-mapping>
    <!-- stripes end --> 	
	  <welcome-file-list>
	    <welcome-file>index.jsp</welcome-file>
	  </welcome-file-list>
</web-app>


messages_zh_CN.properties
AbstractUserDetailsAuthenticationProvider.badCredentials=您无权访问目标资源,请输入正确的密码!

commons-logging.properties
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

log4j.properties
log4j.rootLogger = debug, CONSOLE 
log4j.addivity.org.apache = true 
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender    
log4j.appender.Threshold = DEBUG    
log4j.appender.CONSOLE.Target = System.out    
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout    
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c.%t() line:%L  - %m %n

config/applicationContext-common.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:security="http://www.springframework.org/schema/security"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/security
           http://www.springframework.org/schema/security/spring-security-3.0.xsd">
   	 
</beans>

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:security="http://www.springframework.org/schema/security"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/security
           http://www.springframework.org/schema/security/spring-security-3.0.xsd">
   
	<security:http auto-config="true"  >
		 		<security:intercept-url pattern="/index.jsp*" filters="none"/>
		<!--  <security:logout invalidate-session="true" logout-url="/example/j_security_logout" logout-success-url="/index.jsp"/>-->
		 		<security:form-login  login-page="/index.jsp"  default-target-url="/Login.action" />
		 		<security:custom-filter position="CONCURRENT_SESSION_FILTER" ref="concurrencyFilter" /> 
 		<security:session-management  session-authentication-strategy-ref="concurrentsessionControl" /> 
 		
		<security:intercept-url pattern="/**" access="ROLE_USER"/>
	</security:http>
	
	<security:authentication-manager>
		<security:authentication-provider>
			<security:user-service>
				<security:user name="user" password="user" authorities="ROLE_USER"/>
			</security:user-service>
		</security:authentication-provider>
	</security:authentication-manager>
	 	<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		 <property name="basename" value="classpath:messages_zh_CN"></property>
	</bean>
	 	<bean id="concurrencyFilter" class="org.springframework.security.web.session.ConcurrentSessionFilter"> 
        <property name="sessionRegistry" ref="sessionRegistry" /> 
        <property name="expiredUrl" value="/Loginfailure.jsp" /> 
    </bean> 
	<bean id="concurrentsessionControl" class="org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy"> 
        <constructor-arg name="sessionRegistry" ref="sessionRegistry" /> 
        <property name="maximumSessions" value="1" /> 
    </bean> 
      <bean id="sessionRegistry"  class="org.springframework.security.core.session.SessionRegistryImpl" /> 
 	  	 
</beans>

User.java
public class User {
	private String username;
	private String password;
	
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
}

LoginActionBean
public class LoginActionBean extends User implements ActionBean {
	private ActionBeanContext context;
	private static Log logger = LogFactory.getLog(LoginActionBean.class);

	public ActionBeanContext getContext() {
		return this.context;
	}

	public void setContext(ActionBeanContext context) {
		this.context=context;
	}
	//取得user
	private void initUser(){
		logger.debug("LoginActionBean initUser logic is starting........");
		Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

		if(principal instanceof UserDetails){
			logger.debug("principal is an User Object ...");
			this.setUsername(((UserDetails)principal).getUsername());
			this.setPassword(((UserDetails)principal).getPassword());
		}else{
			logger.debug("principal instanceof User is false..................");
		}
		logger.debug("LoginActionBean initUser logic is end........");
	}
	
	@DefaultHandler
	public Resolution login(){
		logger.debug("LoginActionBean login logic is starting........");
		initUser();
		logger.debug("Login username is : "+this.getUsername()+"  |  user password is : "+ this.getPassword());
		logger.debug("LoginActionBean login forward to homepage........");
		return new ForwardResolution("/homepage.jsp");
		 
	}
}

LogoutActionBean
public class LogoutActionBean extends User implements ActionBean {
	private ActionBeanContext context;
	private static Log logger = LogFactory.getLog(LogoutActionBean.class);

	public ActionBeanContext getContext() {
		return this.context;
	}

	public void setContext(ActionBeanContext context) {
		this.context=context;
	}
	@DefaultHandler
	public Resolution logout(){
		logger.debug("LogoutActionBean login logic is starting........");
		logger.debug("Login username is : "+this.getUsername()+"  |  user password is : "+ this.getPassword());
		logger.debug("LogoutActionBean login forward to index.jsp........");
		context.getRequest().getSession().invalidate();
		SecurityContextHolder.clearContext();
		return new ForwardResolution("/index.jsp");
		 
	}
}
  • 大小: 50.9 KB
分享到:
评论

相关推荐

    stripes+spring+mybatis框架

    stripes1.5.7+spring3.1.1+MyBatis3.1.1完整框架 本工程代码已完成了Oracle,MySQL,MSSQL2005三种数据库物理分页方言,并测试可用。 本代码集成了xheditor-1.2.1在线编辑器远程抓取图片功能。 集成了excel导入...

    stripes+spring+mybatis项目源码下载

    本项目——"stripes+spring+mybatis项目源码下载",便是一个将条纹(Stripes)、Spring和MyBatis三大框架融合的实例,旨在实现一个简洁的网上宠物商店应用。接下来,我们将深入探讨这三个技术的核心概念以及它们在...

    mybatis3.0.5 and spring3.0.5jar

    总的来说,这个项目可能是在搭建一个基于Mybatis 3.0.5和Spring 3.0.5的Java Web应用,利用Mybatis进行数据库操作,Spring进行依赖管理和Web服务。通过这些库的组合,开发者可以构建出一个高效、可维护的系统。在...

    jsp网页布局利器框架stripes-1.5.6

    对于那些希望避免复杂的Spring或Struts等大型框架,但又需要MVC结构来组织项目的开发者来说,Stripes是一个很好的选择。 综上所述,Stripes 1.5.6是一个旨在提升JSP网页开发效率的轻量级MVC框架,其特点在于快速...

    mybatis3.0.5官方示范项目下载

    如何实现spring3.0.5与Stripes1.5.6(类似Struts框架)的整合。 如何使用mybatis3.0.5框架。 压缩包说明: 文件解压后有mybatis(可直接导入eclipse运行的项目)和mybatis-3.0.5-bundle.zip(官方压缩包) 官方压缩包里的...

    stripes包,内有例子程序和StripesResources.properties

    这个压缩包"stripes-1.5.6"包含了Stripes框架的一个版本以及相关的示例程序和配置文件,这对于学习和理解Stripes的工作原理非常有帮助。 首先,让我们深入了解一下Stripes框架的核心特性: 1. **请求驱动**:...

    Maven+jetty+jrebel+m2eclipse+eclipse搭建struts2开发环境

    本篇文章将详述如何使用Maven、Jetty、JRebel和m2eclipse插件在Eclipse集成开发环境中搭建一个Struts2的开发环境。这个环境能够帮助开发者快速迭代、调试和部署应用,提升开发效率。 首先,Maven是一个项目管理和...

    Stripes视图框架demo

    6. **Servlet集成**:Stripes是一个Servlet过滤器,可以与其他Servlet框架如Spring、Struts等无缝集成,扩展性强。 7. **国际化和本地化**:Stripes内置了对多语言的支持,方便创建面向全球用户的Web应用。 8. **...

    Java Web层框架之比较—比较JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket.doc

    本文将深入对比六种流行的Java Web层框架:JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket。 **JavaServer Faces (JSF)** JSF作为Java EE的一部分,拥有广泛的支持和市场需求。它的优点在于快速上手和丰富...

    stripes入门

    3. **依赖管理**:Stripes 对于依赖的管理更为灵活,它可以很好地与其他 Java 组件或框架协同工作,比如 Spring 和 Hibernate。 4. **学习曲线**:由于 Stripes 的设计理念更加注重简洁性和易用性,因此其学习曲线...

    在Stripes中下载excel表格

    相较于其他Java Web框架如Spring MVC或Struts,Stripes框架更加强调简洁性和易用性。它通过提供一系列简洁明了的API来帮助开发者快速构建高性能的Web应用。 #### 二、Stripes中的文件下载机制 在Stripes框架中,...

    Folio图书馆系统UI前端框架stripes-components-master

    Stripes-Components是Folio项目的一个子模块,主要负责提供一系列预先构建的UI组件,如按钮、表单、导航栏等,这些组件遵循一致的设计风格和交互模式,可以快速搭建出符合Folio系统规范的界面。由于其基于React,...

    轻量级mvc框架之:stripes (一、约定大于配置)

    Stripes是一个轻量级的Java MVC框架,它的核心设计理念是“约定大于配置”,这使得开发者可以更快地构建Web应用程序,而无需过多的配置文件。在本文中,我们将深入探讨Stripes框架的基础知识,以及它如何简化开发...

    stripes 和css 一些常用功能

    Stripes是一个Java Web应用框架,它是为了简化Java Web开发而设计的,提供了快速构建Web应用程序的能力。与传统的框架如Struts1和Struts2相比,Stripes有自己独特的优势。首先,Stripes提倡“约定优于配置”的开发...

    stripes英文文档(全部)

    Stripes 是一款用于快速开发Web程序的展示层框架,它的设计旨在简化Java Web应用开发流程。在介绍Stripes之前,我们需要了解它与传统框架(如 Struts 1、WebWork 和 Struts 2)的不同之处。传统框架通常要求开发者...

    基于Stripes框架的Ajax应用与研究.pdf

    最后,文中提出了一种整合Stripes+Ajax的架构,以便让开发人员以最快最简洁的方式进行Ajax开发,并提出了多种Ajax数据传输格式和方案。 知识点: 1. Web 2.0时代的特点和挑战:Web 2.0时代的到来,带来了更多的...

    Stripes 快速入门 pdf 中文版 下载

    ActionBean是Stripes框架的核心组件之一,它负责处理用户的请求,并返回一个表示下一步操作的Resolution对象。ActionBean接口定义了一些基本的方法,如`validate`和`execute`等。 #### 3.2. 处理请求事件 通过在...

    Spring集成Struts、JSF、WebWork2

    在Java Web开发中,Spring框架以其强大的依赖注入和面向切面编程能力,成为了许多开发者的选择。而Struts、JSF(JavaServer Faces)和WebWork2则是其他流行的MVC(Model-View-Controller)框架,它们各自有独特的...

    stripes快速入门教程

    和我们熟悉 Struts 1 和 Struts 2 类似,Stripes 同样是一种展示层框架,用于快速构建web程序。在使 用Struts 1,WebWork 和 Struts 2 等框架的时候,通常需要大量额外的 XML 配置,当一个项目达到 一定规模的的时候...

Global site tag (gtag.js) - Google Analytics