- 浏览: 95551 次
- 性别:
- 来自: 上海
最新评论
-
mthhk:
彩笔写上面博客
jquery dataTable ajax -
liuweihug:
推荐这个博客看看。Jquery DataTable基于Twit ...
jquery dataTable ajax -
dfwang:
daxiaoli123 写道ant 怎么搞代码统计啊需要使用第 ...
可持续集成测试 -
daxiaoli123:
ant 怎么搞代码统计啊
可持续集成测试 -
dfwang:
daxiaoli123 写道楼主如果包有依赖怎么办啊你的意思是 ...
可持续集成测试
该部分的环境搭建基于Spring Security URL的拦截方式
stripes-1.5.6
spring-framework-3.0.5.RELEASE
spring-security-3.0.5.RELEASE
登陆页面:index.jsp
登陆成功后跳转的页面:
web.xml
messages_zh_CN.properties
commons-logging.properties
log4j.properties
config/applicationContext-common.xml
User.java
LoginActionBean
LogoutActionBean
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"); } }
发表评论
-
configuration
2012-04-26 15:10 978无聊写点sample,供以后抄袭 JNDI方式 1、Spr ... -
可持续集成测试
2012-04-24 13:26 2436最近在搞可持续集成测试,顺便写个小例子以后方便参考 目录结构 ... -
运用RUP 4+1视图方法进行软件架构设计
2012-02-07 13:54 1110http://www.ibm.com/developerwor ... -
代理模式,动态代理
2011-12-09 16:31 1010一、先看个普通代理模式的例子: 1.接口类 package ... -
jqGrid ajax 互搞,json object 互搞
2011-11-29 16:52 4809今天玩了玩jqGrid,贴点代码出来,以后方便copy jqG ... -
读properties文件
2011-11-24 11:25 1174太无聊了,写个读properties文件的类方便以后直接cop ... -
TOMCAT 配置及性能优化
2011-11-15 11:05 1138参考资料:1.http://blog.sina.com.cn/ ... -
AOP面向切面编程
2011-11-11 13:40 943转载: http://wayfarer.cnblogs.com ... -
ThreadPool
2011-11-07 17:07 1059最近面试被问到这个问题,正好找个线程池的实现代码,温习一下 ... -
Spring 事务管理
2011-10-26 09:31 1026文章转自:【http://blog.c ... -
HttpServletRequestWrapper 学习
2011-10-20 09:17 1580使用过滤器不能改变HttpServletRequest对象的参 ... -
JNDI Sample
2011-10-13 09:06 950public class TestJb ... -
Build an Apache Wink REST service(一)
2011-10-12 09:30 1291Apache Wink service configurati ... -
jquery dataTable ajax
2011-09-16 15:32 15630dataTable 插件的相关api: http://www. ... -
BodyTagSupport 学习
2011-09-15 10:52 1283BodyTagSupport类的方法: 编写标签对应的实现类时 ... -
DataTables Ajax 回调函数
2011-09-08 12:53 7104<!DOCTYPE HTML PUBLIC &quo ... -
Mybatis 学习转
2011-09-07 14:46 1910Mybatis缓存系列 在sqlMap文件中加入cacheMo ... -
Spring3MVC+ajax
2011-07-11 17:03 821随便玩了玩springMVC3 + ajax 帖下代码和目录结 ... -
quartz的时间设置
2011-06-22 15:52 1243格式: [秒] [分] [小时] [日] [月] [周] [年 ... -
转:解决 java.util.MissingResourceException: Can't find bundle for base name com...c
2011-05-10 14:25 2443转:解决 java.util.MissingResourceE ...
相关推荐
stripes1.5.7+spring3.1.1+MyBatis3.1.1完整框架 本工程代码已完成了Oracle,MySQL,MSSQL2005三种数据库物理分页方言,并测试可用。 本代码集成了xheditor-1.2.1在线编辑器远程抓取图片功能。 集成了excel导入...
本项目——"stripes+spring+mybatis项目源码下载",便是一个将条纹(Stripes)、Spring和MyBatis三大框架融合的实例,旨在实现一个简洁的网上宠物商店应用。接下来,我们将深入探讨这三个技术的核心概念以及它们在...
总的来说,这个项目可能是在搭建一个基于Mybatis 3.0.5和Spring 3.0.5的Java Web应用,利用Mybatis进行数据库操作,Spring进行依赖管理和Web服务。通过这些库的组合,开发者可以构建出一个高效、可维护的系统。在...
对于那些希望避免复杂的Spring或Struts等大型框架,但又需要MVC结构来组织项目的开发者来说,Stripes是一个很好的选择。 综上所述,Stripes 1.5.6是一个旨在提升JSP网页开发效率的轻量级MVC框架,其特点在于快速...
如何实现spring3.0.5与Stripes1.5.6(类似Struts框架)的整合。 如何使用mybatis3.0.5框架。 压缩包说明: 文件解压后有mybatis(可直接导入eclipse运行的项目)和mybatis-3.0.5-bundle.zip(官方压缩包) 官方压缩包里的...
这个压缩包"stripes-1.5.6"包含了Stripes框架的一个版本以及相关的示例程序和配置文件,这对于学习和理解Stripes的工作原理非常有帮助。 首先,让我们深入了解一下Stripes框架的核心特性: 1. **请求驱动**:...
本篇文章将详述如何使用Maven、Jetty、JRebel和m2eclipse插件在Eclipse集成开发环境中搭建一个Struts2的开发环境。这个环境能够帮助开发者快速迭代、调试和部署应用,提升开发效率。 首先,Maven是一个项目管理和...
6. **Servlet集成**:Stripes是一个Servlet过滤器,可以与其他Servlet框架如Spring、Struts等无缝集成,扩展性强。 7. **国际化和本地化**:Stripes内置了对多语言的支持,方便创建面向全球用户的Web应用。 8. **...
本文将深入对比六种流行的Java Web层框架:JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket。 **JavaServer Faces (JSF)** JSF作为Java EE的一部分,拥有广泛的支持和市场需求。它的优点在于快速上手和丰富...
3. **依赖管理**:Stripes 对于依赖的管理更为灵活,它可以很好地与其他 Java 组件或框架协同工作,比如 Spring 和 Hibernate。 4. **学习曲线**:由于 Stripes 的设计理念更加注重简洁性和易用性,因此其学习曲线...
相较于其他Java Web框架如Spring MVC或Struts,Stripes框架更加强调简洁性和易用性。它通过提供一系列简洁明了的API来帮助开发者快速构建高性能的Web应用。 #### 二、Stripes中的文件下载机制 在Stripes框架中,...
Stripes-Components是Folio项目的一个子模块,主要负责提供一系列预先构建的UI组件,如按钮、表单、导航栏等,这些组件遵循一致的设计风格和交互模式,可以快速搭建出符合Folio系统规范的界面。由于其基于React,...
Stripes是一个轻量级的Java MVC框架,它的核心设计理念是“约定大于配置”,这使得开发者可以更快地构建Web应用程序,而无需过多的配置文件。在本文中,我们将深入探讨Stripes框架的基础知识,以及它如何简化开发...
Stripes是一个Java Web应用框架,它是为了简化Java Web开发而设计的,提供了快速构建Web应用程序的能力。与传统的框架如Struts1和Struts2相比,Stripes有自己独特的优势。首先,Stripes提倡“约定优于配置”的开发...
Stripes 是一款用于快速开发Web程序的展示层框架,它的设计旨在简化Java Web应用开发流程。在介绍Stripes之前,我们需要了解它与传统框架(如 Struts 1、WebWork 和 Struts 2)的不同之处。传统框架通常要求开发者...
最后,文中提出了一种整合Stripes+Ajax的架构,以便让开发人员以最快最简洁的方式进行Ajax开发,并提出了多种Ajax数据传输格式和方案。 知识点: 1. Web 2.0时代的特点和挑战:Web 2.0时代的到来,带来了更多的...
ActionBean是Stripes框架的核心组件之一,它负责处理用户的请求,并返回一个表示下一步操作的Resolution对象。ActionBean接口定义了一些基本的方法,如`validate`和`execute`等。 #### 3.2. 处理请求事件 通过在...
在Java Web开发中,Spring框架以其强大的依赖注入和面向切面编程能力,成为了许多开发者的选择。而Struts、JSF(JavaServer Faces)和WebWork2则是其他流行的MVC(Model-View-Controller)框架,它们各自有独特的...
和我们熟悉 Struts 1 和 Struts 2 类似,Stripes 同样是一种展示层框架,用于快速构建web程序。在使 用Struts 1,WebWork 和 Struts 2 等框架的时候,通常需要大量额外的 XML 配置,当一个项目达到 一定规模的的时候...