`
flyer2010
  • 浏览: 358441 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts2整合spring实现拦截器

阅读更多
Struts 2框架整合Spring很简单
1.首先确定所需的包



2.WEB-INF目录下建立web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.FilterDispatcher
		</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<listener>
	   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>



3.建立struts2的action等类LoginAction.java
package com.struts2test;

import service.LoginService;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
	private String username;
	private String password;
	private LoginService loginService;
	public void setLoginService(LoginService loginService) {
		this.loginService = loginService;
	}
	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;
	}

	/**
	 * 默认执行execute方法
	 */
	public String execute() throws Exception {
		if (loginService.isLogin(username, password)) {
			return SUCCESS;
		} else {
			ActionContext.getContext().put("errorMess", "失败了!");
			return INPUT;
		}
	}
}

自定义struts2的拦截器MyInterceptor.java
package com.struts2test;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class MyInterceptor implements Interceptor {

	private static final long serialVersionUID = 1L;

	public void destroy() {

	}

	public void init() {
	}

	public String intercept(ActionInvocation invocation) throws Exception {
		System.out.println("进入Action前执行");
		// 执行目标方法 (调用下一个拦截器, 或执行Action)
		final String res = invocation.invoke();
		System.out.println("进入Action后执行");
		return res;
	}
}


登录表单的验证xml,LoginAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
"-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
    <field name="username">
        <field-validator type="requiredstring">
            <message>请输入用户名</message>
        </field-validator>
    </field>

    <field name="password">
        <field-validator type="requiredstring">
            <message>请输入密码</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minLength">6</param>
            <param name="maxLength">10</param>
            <message>密码长度只能在3 和 10 之间.</message>
        </field-validator>
    </field>
</validators>


接下来,列出处理登录业务逻辑的接口和实现类。
LoginService.java
package service;

public interface LoginService {
	public boolean isLogin(String username,String password);
}

5.LoginServiceImpl.java
package service.impl;

import service.LoginService;

public class LoginServiceImpl implements LoginService {

	public boolean isLogin(String username, String password) {
		if("admin".equalsIgnoreCase(username)&&"123456".equalsIgnoreCase(password))
		{
			return true;
		}
		return false;
	}

}

src目录下建立struts.xml和struts.properties文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name="mldn" namespace="" extends="struts-default">
<interceptors>
	<interceptor name="MyInterceptor" class="com.struts2test.MyInterceptor"></interceptor>
	<interceptor-stack name="myInterceptorStack">
		<interceptor-ref name="MyInterceptor"/>
		<interceptor-ref name="defaultStack"/>
	</interceptor-stack>
</interceptors>
	
		<action name="login">
		   <result name="success">/login.jsp</result>
		</action>
		
		<action name="checklogin" class="com.struts2test.LoginAction">
		   <result name="success">/success.jsp</result>
		   <result name="input">/login.jsp</result>
		   <interceptor-ref name="myInterceptorStack"></interceptor-ref>
		</action>
	</package>
</struts>


struts.properties
struts.action.extension=action
struts.tag.altSyntax=true
struts.devMode=true
struts.ui.theme=simple
struts.ui.templateDir=WEB-INF/d_template

WEB-INF/d_template是我将struts-core*中的template解出来,然后放到项目的WEB-INF下,在struts.properties中重新修改了simple下的fielderror.ftl文件,将该文件中的 <li>和 </li>删除了。
WEB-INF下增加applicationContext.xml,用来定义spring的注入类。
<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	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-2.5.xsd">

<bean id="loginService" class="service.impl.LoginServiceImpl"/></beans>


定义web页面login.jsp
<%@ page language="java" pageEncoding="UTF-8" isELIgnored="false"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
  <head>
    <title>登录系统</title>
  </head>
  <body>
  		<h2>登录系统   ${errorMess}</h2>
  		<hr>
  	  	<form action="checklogin.action" method="post">
  	  		用户名:<input type="text" name="username">
  	  		<s:fielderror cssStyle="color: red">
  	  		  <s:param>username</s:param>
            </s:fielderror><br>
  	  		密  码:<input type="text" name="password" >
  	  		<s:fielderror cssStyle="color: red">
  	  		  <s:param>password</s:param>
            </s:fielderror><br>
  	  		<input type="submit" value="发送">
  	  	</form>
  	  	<s:fielderror cssStyle="color: red"></s:fielderror>
  </body>
</html>



大概就是如此了,附件为完整文件。
  • 大小: 22.7 KB
分享到:
评论
2 楼 lz958942 2014-05-27  
您的是无用功
1 楼 qing878 2010-11-17  
  你这和SPRING有关系么 ···· 一堆 ╮(╯▽╰)╭

相关推荐

    整合struts2和spring

    在Struts2和Spring整合中,可以使用Spring提供的拦截器,例如`org.springframework.web.struts.DelegatingInterceptor`,它能让Spring容器处理Action的实例化。 7. **事务管理**:Spring提供了强大的事务管理功能。...

    Struts 2 整合Spring

    通过以上步骤,我们可以清晰地看到如何在 Struts 2 框架的基础上整合 Spring 技术,实现更高级的功能和服务。这种整合不仅可以提高代码的可维护性和扩展性,还能帮助开发者更加专注于业务逻辑的实现,而无需过多关注...

    Struts2, Spring与myBatis整合示例项目

    7. 配置Struts2和Spring的拦截器,以实现登录验证、权限控制等功能。 通过这些步骤,我们可以构建一个功能完善的SSM整合项目,有效地分层和解耦应用,提高开发效率和代码质量。这种整合方式广泛应用于大型企业级...

    struts2整合spring、hibernate的jar包

    1. **Struts2整合**:Struts2提供了强大的Action和拦截器机制,使得业务逻辑处理更加灵活。通过配置Struts2的核心jar包,如`struts2-core.jar`,我们可以定义Action类并配置相应的XML配置文件来指定Action与URL的...

    struts2+spring+mybatis+easyui的实现

    在Struts2中,Action类是业务逻辑的载体,配置在struts.xml文件中,通过拦截器链来处理请求和响应。Struts2还提供了丰富的结果类型,如dispatcher(转发)和stream(流式下载),以及强大的OGNL表达式语言,用于在...

    struts2整合Spring和hibernate案例

    Action是业务逻辑的载体,Result用于控制页面跳转,Interceptor则实现了拦截器链,可以进行预处理和后处理。在这个案例中,Action类通常会通过注解声明其方法与URL路径的映射。 2. **Hibernate3.1**:Hibernate3.1...

    spring与struts2整合

    5. **拦截器**:Struts2 中的拦截器可以用来实现通用的行为,如权限验证、日志记录等。通过在 `struts.xml` 文件中配置拦截器栈,可以将这些拦截器应用到所有的 Action 或特定的 Action。 6. **视图解析**:Struts2...

    struts2和spring和Hibernate整合的jar包

    在struts.xml配置文件中,定义全局配置,如拦截器栈和Action映射。 2. **配置Spring**:引入Spring的JAR包,包括Spring的核心、AOP、上下文、ORM等模块。在applicationContext.xml中配置bean,包括DAO、Service层...

    struts2和spring整合包

    1. **MVC模式实现**:通过拦截器和配置文件,Struts2能够将用户请求转发到相应的Action,然后由Action处理业务逻辑,最后将结果返回给视图。 2. **模板引擎**:如FreeMarker或Velocity,用于渲染视图。 3. **拦截器*...

    struts2 整合spring 必备包 s2sh

    6. **拦截器**:Struts2 通过拦截器实现对请求的处理,整合 Spring 后,可以使用 Spring 拦截器,如 `org.springframework.web.struts.DelegatingActionProxy`,它负责代理 Action 对象的调用。 7. **数据绑定和...

    开发者突击 struts2整合Spring 源码

    此外,Spring还可以管理Struts2的拦截器,例如,你可以将Spring的AOP通知作为拦截器使用,进一步增强Struts2的功能。同时,通过Spring的事务管理,可以在Struts2的Action中透明地处理数据库事务,确保数据的一致性。...

    struts2+spring+hibernate 整合的jar包

    5. **配置Struts2**:创建Struts2的配置文件(struts.xml),定义Action、结果类型和拦截器栈。 6. **整合Hibernate和Spring**:使用Spring的Hibernate支持,配置SessionFactory,可以通过`&lt;bean&gt;`标签创建...

    struts2整合spring+hibernate

    此例子包括struts2国际化、struts2验证、struts2拦截器、struts2整合spring、struts2+spring+hibernate整合而完成的登录例子。 下载后请先看readme文档。

    struts2整合Spring

    5. **拦截器**:Struts2的拦截器机制可以与Spring的AOP结合,通过定义Spring的Advisor或Aspect来实现业务逻辑的拦截。这样可以更好地控制和监控应用程序的行为。 6. **事务管理**:Spring提供了强大的事务管理能力...

    整合Struts2,Spring2.5,Hibernate3.3操作参考

    此外,Struts2支持拦截器,通过配置拦截器栈,可以实现如权限控制、日志记录等功能。 **2. Spring框架** Spring是一个全面的企业级应用开发框架,它的核心是依赖注入(DI)和面向切面编程(AOP)。在Spring2.5版本...

    Struts2与Spring2框架整合实例

    Struts2是一个用于构建MVC(模型-视图-控制器)架构的框架,它提供了丰富的动作和拦截器库,便于实现业务逻辑和控制层的解耦。而Spring2则是一个全面的企业级应用框架,它提供了依赖注入(DI)和面向切面编程(AOP)...

    Spring与Struts 2整合.zip

    5. **拦截器集成**:可以使用Spring的AOP拦截器与Struts 2的拦截器相结合,增强应用的功能。 6. **测试与调试**:整合完成后,进行单元测试和集成测试,确保所有组件协同工作。 整合Spring和Struts 2可以使开发...

    struts2+spring+hibernate整合步骤

    Struts2是基于Apache的开源框架,它在Struts1的基础上进行了改进,引入了拦截器模型,增强了Action类的功能,提供了更灵活的配置方式。xwork-core-2.1.6.jar是Struts2的核心库,包含Action、Interceptor等关键组件。...

    Struts2+spring+ibatis三大框架整合实例

    Struts2通过配置文件(如struts.xml)来定义Action和结果页面的映射关系,以及拦截器的使用,提供了强大的拦截器机制用于实现日志、权限校验等功能。 其次,Spring框架是企业级应用的核心,它提供依赖注入(DI)和...

Global site tag (gtag.js) - Google Analytics