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
分享到:
相关推荐
在Struts2和Spring整合中,可以使用Spring提供的拦截器,例如`org.springframework.web.struts.DelegatingInterceptor`,它能让Spring容器处理Action的实例化。 7. **事务管理**:Spring提供了强大的事务管理功能。...
通过以上步骤,我们可以清晰地看到如何在 Struts 2 框架的基础上整合 Spring 技术,实现更高级的功能和服务。这种整合不仅可以提高代码的可维护性和扩展性,还能帮助开发者更加专注于业务逻辑的实现,而无需过多关注...
7. 配置Struts2和Spring的拦截器,以实现登录验证、权限控制等功能。 通过这些步骤,我们可以构建一个功能完善的SSM整合项目,有效地分层和解耦应用,提高开发效率和代码质量。这种整合方式广泛应用于大型企业级...
1. **Struts2整合**:Struts2提供了强大的Action和拦截器机制,使得业务逻辑处理更加灵活。通过配置Struts2的核心jar包,如`struts2-core.jar`,我们可以定义Action类并配置相应的XML配置文件来指定Action与URL的...
在Struts2中,Action类是业务逻辑的载体,配置在struts.xml文件中,通过拦截器链来处理请求和响应。Struts2还提供了丰富的结果类型,如dispatcher(转发)和stream(流式下载),以及强大的OGNL表达式语言,用于在...
Action是业务逻辑的载体,Result用于控制页面跳转,Interceptor则实现了拦截器链,可以进行预处理和后处理。在这个案例中,Action类通常会通过注解声明其方法与URL路径的映射。 2. **Hibernate3.1**:Hibernate3.1...
5. **拦截器**:Struts2 中的拦截器可以用来实现通用的行为,如权限验证、日志记录等。通过在 `struts.xml` 文件中配置拦截器栈,可以将这些拦截器应用到所有的 Action 或特定的 Action。 6. **视图解析**:Struts2...
在struts.xml配置文件中,定义全局配置,如拦截器栈和Action映射。 2. **配置Spring**:引入Spring的JAR包,包括Spring的核心、AOP、上下文、ORM等模块。在applicationContext.xml中配置bean,包括DAO、Service层...
1. **MVC模式实现**:通过拦截器和配置文件,Struts2能够将用户请求转发到相应的Action,然后由Action处理业务逻辑,最后将结果返回给视图。 2. **模板引擎**:如FreeMarker或Velocity,用于渲染视图。 3. **拦截器*...
6. **拦截器**:Struts2 通过拦截器实现对请求的处理,整合 Spring 后,可以使用 Spring 拦截器,如 `org.springframework.web.struts.DelegatingActionProxy`,它负责代理 Action 对象的调用。 7. **数据绑定和...
此外,Spring还可以管理Struts2的拦截器,例如,你可以将Spring的AOP通知作为拦截器使用,进一步增强Struts2的功能。同时,通过Spring的事务管理,可以在Struts2的Action中透明地处理数据库事务,确保数据的一致性。...
5. **配置Struts2**:创建Struts2的配置文件(struts.xml),定义Action、结果类型和拦截器栈。 6. **整合Hibernate和Spring**:使用Spring的Hibernate支持,配置SessionFactory,可以通过`<bean>`标签创建...
此例子包括struts2国际化、struts2验证、struts2拦截器、struts2整合spring、struts2+spring+hibernate整合而完成的登录例子。 下载后请先看readme文档。
5. **拦截器**:Struts2的拦截器机制可以与Spring的AOP结合,通过定义Spring的Advisor或Aspect来实现业务逻辑的拦截。这样可以更好地控制和监控应用程序的行为。 6. **事务管理**:Spring提供了强大的事务管理能力...
此外,Struts2支持拦截器,通过配置拦截器栈,可以实现如权限控制、日志记录等功能。 **2. Spring框架** Spring是一个全面的企业级应用开发框架,它的核心是依赖注入(DI)和面向切面编程(AOP)。在Spring2.5版本...
Struts2是一个用于构建MVC(模型-视图-控制器)架构的框架,它提供了丰富的动作和拦截器库,便于实现业务逻辑和控制层的解耦。而Spring2则是一个全面的企业级应用框架,它提供了依赖注入(DI)和面向切面编程(AOP)...
5. **拦截器集成**:可以使用Spring的AOP拦截器与Struts 2的拦截器相结合,增强应用的功能。 6. **测试与调试**:整合完成后,进行单元测试和集成测试,确保所有组件协同工作。 整合Spring和Struts 2可以使开发...
Struts2是基于Apache的开源框架,它在Struts1的基础上进行了改进,引入了拦截器模型,增强了Action类的功能,提供了更灵活的配置方式。xwork-core-2.1.6.jar是Struts2的核心库,包含Action、Interceptor等关键组件。...
Struts2通过配置文件(如struts.xml)来定义Action和结果页面的映射关系,以及拦截器的使用,提供了强大的拦截器机制用于实现日志、权限校验等功能。 其次,Spring框架是企业级应用的核心,它提供依赖注入(DI)和...