Spring整合Struts2
來源:程序員人生 發(fā)布時間:2014-12-17 08:52:31 閱讀次數(shù):2498次
在之前的SpringDemo中,已將Spring和Hibernate整合到了1起,現(xiàn)在將Struts整合到SpringDemo中,這樣就是1個完全的基于SSH的簡單項目了。
在全部項目的構(gòu)建進(jìn)程,我基本是由內(nèi)向外――先導(dǎo)入jar包、整理配置文件,再完成持久層和控制層的接口和類,最后建立表現(xiàn)層的jsp頁面。這樣的好處是:每完成1步即可以測1下,及時修改毛??;繼續(xù)下1層的時候不用再操心前面的內(nèi)容。
1、導(dǎo)入strut2的jar包:
commons-logging⑴.0.4.jar----------Jakarta的通用日志記錄包
reemarker⑵.3.8.jar--------------------FreeMarker是1個模板引擎,1個基于模板生成文本輸出的通用工具
ognl⑵.6.11.jar--------------------------支持ognl表達(dá)式
struts2-core⑵.0.12.jar----------------struts2的核心包
xwork⑵.06.jar--------------------------xwork的包由于Struts2是由xwork的延伸,有些類仍然關(guān)聯(lián)著 xwork的類
commons-fileupload⑴.2.1.jar ------- struts的上傳下載
(ognl是1種功能強(qiáng)大的表達(dá)式,通過它簡單1致的表達(dá)式語法,可以存取對象的任意屬性,調(diào)用對象的方法,遍歷全部對象的結(jié)構(gòu)圖,實現(xiàn)字段類型轉(zhuǎn)化等功能。它使用相同的表達(dá)式去存取對象的屬性。)
添加struts2-spring整合的插件:struts2-spring-plugin⑵.0.12.jar
Struts2與Spring的集成要用到Spring插件包struts2-spring-plugin-x-x-x.jar是同Struts21起發(fā)布的。
Spring插件是通過覆蓋(override)Struts2的ObjectFactory來增強(qiáng)核心框架對象的創(chuàng)建。當(dāng)創(chuàng)建1個對象的時候,它會用Struts2配置文件中的class屬性去和Spring配置文件中的id屬性進(jìn)行關(guān)聯(lián),如果能找到,則由 Spring創(chuàng)建,否則由Struts2框架本身創(chuàng)建,然后由Spring來裝配。
如果不使用這個插件,則需要在struts.xml里面配置:
Xml代碼以下:
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.objectFactory.spring.autoWire" value="name" />
struts2-spring插件具體有以下幾個作用:
1.允許Spring創(chuàng)建Action、Interceptror和Result。
2. 由Struts創(chuàng)建的對象能夠被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內(nèi)容以下:
<%@ 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="系統(tǒng)登陸"></s:label>
<s:textfield name="username" label="賬號" />
<s:password name="password" label="密碼" />
<s:submit value="登錄" />
</s:form>
</body>
</html>
success.jsp內(nèi)容以下:
<%@ 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個基本的了解,接下來將進(jìn)行更深入的學(xué)習(xí)。
由于在跟老師做項目的時候用過Spring,感覺還不錯;因此在學(xué)習(xí)的進(jìn)程中主要以Spring為核心,來拓展對其他框架的學(xué)習(xí)。
每一個框架都有其豐富的功能,任何1篇文章、1部書不可能窮盡其特性。需要在在實踐進(jìn)程中,邊學(xué)邊用,逐步熟習(xí)。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈