程序员人生 网站导航

Spring整合Struts2

栏目:互联网时间:2014-12-17 08:52:31

在之前的SpringDemo中,已将Spring和Hibernate整合到了1起,现在将Struts整合到SpringDemo中,这样就是1个完全的基于SSH的简单项目了。

在全部项目的构建进程,我基本是由内向外――先导入jar包、整理配置文件,再完成持久层和控制层的接口和类,最后建立表现层的jsp页面。这样的好处是:每完成1步即可以测1下,及时修改毛病;继续下1层的时候不用再操心前面的内容。

1、导入strut2的jar包:

commons-logging⑴.0.4.jar----------Jakarta的通用日志记录包

reemarker⑵.3.8.jar--------------------FreeMarker是1个模板引擎,1个基于模板生成文本输出的通用工具

ognl⑵.6.11.jar--------------------------支持ognl表达式

struts2-core⑵.0.12.jar----------------struts2的核心包

xwork⑵.06.jar--------------------------xwork的包由于Struts2是由xwork的延伸,有些类仍然关联着 xwork的类

commons-fileupload⑴.2.1.jar ------- struts的上传下载

(ognl是1种功能强大的表达式,通过它简单1致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历全部对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。)

添加struts2-spring整合的插件:struts2-spring-plugin⑵.0.12.jar

Struts2与Spring的集成要用到Spring插件包struts2-spring-plugin-x-x-x.jar是同Struts21起发布的。

Spring插件是通过覆盖(override)Struts2的ObjectFactory来增强核心框架对象的创建。当创建1个对象的时候,它会用Struts2配置文件中的class属性去和Spring配置文件中的id属性进行关联,如果能找到,则由 Spring创建,否则由Struts2框架本身创建,然后由Spring来装配。

如果不使用这个插件,则需要在struts.xml里面配置: 
Xml代码以下:

<constant name="struts.objectFactory" value="spring" /> <constant name="struts.objectFactory.spring.autoWire" value="name" />
struts2-spring插件具体有以下几个作用:

1.允许Spring创建Action、Interceptror和Result。

2. 由Struts创建的对象能够被Spring装配。

3.如果没有使用Spring ObjectFactory,提供了2个拦截器来自动装配action。


2、在web.xml里面配置struts2用到的核心过滤器。

<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3、在src目录下新建struts.xml文件来配置。

<?xml version="1.0" encoding="UTF⑻"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts⑵.0.dtd"> <struts> <constant name="struts.objectFactory" value="spring" /> <!-- struts2的action必须放在1个指定的包空间下定义 --> <package name="default" namespace="/" extends="struts-default"> <action name="login" class="loginAction" method="execute"> <result name="success">/WEB-INF/success.jsp</result> <result name="login">/WEB-INF/login.jsp</result> </action> </package> </struts>
4、建立LoginAction,采取@Autowried自动注入AccountService。

LoginAction.java代码以下:

package com.demo.action; import org.springframework.beans.factory.annotation.Autowired; import com.demo.service.AccountService; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { /** * */ private static final long serialVersionUID = ⑴438866827399732426L; @Autowired private AccountService accountService; private String username; private String password; @Override public String execute(){ System.out.println("run execute..."); if(accountService.hasMatchAccount(username, password)){ return SUCCESS; } return LOGIN; } public String getUsername(){ return username; } public void setUsername(String name){ this.username = name; } public String getPassword(){ return password; } public void setPassword(String password){ this.password = password; } }
5、修改login.jsp,添加success.jsp

login.jsp内容以下:

<%@ page language="java" contentType="text/html; charset=UTF⑻" pageEncoding="UTF⑻"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF⑻"> <title>Insert title here</title> </head> <body> <s:form action="login" method="post"> <s:label value="系统登陆"></s:label> <s:textfield name="username" label="账号" /> <s:password name="password" label="密码" /> <s:submit value="登录" /> </s:form> </body> </html>
success.jsp内容以下:

<%@ page language="java" contentType="text/html; charset=UTF⑻" pageEncoding="UTF⑻"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF⑻"> <title>Insert title here</title> </head> <body> <h2>欢迎<s:property value="username"/>!</h2> </body> </html>
6、这样我们就完成了对Struts2的简单整合,完成了1个简单的基于SSH框架的登陆Demo。对SSH有了1个基本的了解,接下来将进行更深入的学习。

由于在跟老师做项目的时候用过Spring,感觉还不错;因此在学习的进程中主要以Spring为核心,来拓展对其他框架的学习。

每一个框架都有其丰富的功能,任何1篇文章、1部书不可能穷尽其特性。需要在在实践进程中,边学边用,逐步熟习。



------分隔线----------------------------
------分隔线----------------------------

最新技术推荐