什么是Structs2?它就是在Struts1的基礎(chǔ)上演化而來的,是一種MVC模式的框架,其實它的功能很簡單,就是將View和邏輯處理層分開。本人才疏學(xué)淺,以前都是用Spring做項目,由于要畢業(yè),所以需要進(jìn)行轉(zhuǎn)行(暫且這么說吧),公司都是用的Structs框架,木有辦法,從頭開始學(xué)吧!
所需軟件-Eclipse、TomCat7.0、Struts-2.3.1.2(源碼自己下載),下面以具體小項目來說明。
首先是Struts2的工作原理:首先Tomcat對用戶所輸入的URL進(jìn)行解析,將其中的項目名稱解析出,然后程序查找所啟動的項目,然后直接到配置文件web.xml中,根據(jù)web.xml文件的配置即filter查找到struts2的配置文件--struts.xml,然后根據(jù)其中的namespace,查找到用戶所訪問的action,然后跳轉(zhuǎn)到用戶所需的action界面。
也許看著上面的比較麻煩,下面用一個典型的小項目來說明:
1、打開Eclipse(注本Eclipse不是經(jīng)典的而是下載的IDE版本,用于Web開發(fā)非常方便),新建一個Web Project,注意要按照next的方式進(jìn)行,這樣在最后一步可以選擇到web.xml一項,省掉了手動添加的步驟。
2、添加jar包,將下載的structs源碼包解壓,然后將其中的lib文件下你所用到的jar包添加進(jìn)去,添加的位置WebContent-WEB-INF下的lib文件夾。
3、添加struts.xml文件,最簡單的struts.xml文件在所下載的struts源碼的app中,可以從其中尋找一份,也可按以下方式自己寫一份(最簡單的),直接放到src的根目錄下:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="front" namespace="/" extends="struts-default">
<action name="index" class="com.myservice.web.Action02">
<result name="success">/Index.jsp</result>
</action>
</package>
</struts>
對以上內(nèi)容做下說明:第6行的struts.devMode配置的是是否采用開發(fā)模式,開發(fā)模式的意思就是動態(tài)修改可以動態(tài)演示,無需重啟server,它默認(rèn)是false;第7行的package如同java的包一樣,用于分類;namespace非常重要,是用于分割url的,如上所述,要打開的url為:......./index,其中的/代表namespcae,index則代表了action的name屬性。action中的class是類,用于一些邏輯處理的普通java類;result則是轉(zhuǎn)入的jsp(View)界面,上述的jsp界面放在WebContent根目錄下。
4、編寫Java類-Action02,新建一個包c(diǎn)om.myservice.web,然后新建一個Java類Action02,其內(nèi)容很簡單,
import com.opensymphony.xwork2.ActionSupport;
public class Action02 extends ActionSupport{
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return "success";
}
}
就是覆寫execute方法,直接返回了一個字符串success,這個字符串是和action中result的那么屬性所對應(yīng)的。
另還有兩種方法可以完成class的功能,但是都不常用,一種是不繼承任何的類和接口,直接寫一個execute方法,也是返回String;另外一種則是寫一個class實現(xiàn)Action接口,然后覆寫Action的execute方法,其實ActionSupport也是實現(xiàn)了Action接口,但是它還另外實現(xiàn)了很多方法,可以非常方便的使用,因此在開發(fā)中都采用繼承ActionSupport類的方式。
5、編寫JSP文件,在WebContent根目錄下新建一個jsp文件,注意要將其語言設(shè)置為utf-8,,如:
pageEncoding="utf-8"%>
<!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-8">
<title>MyWeb02</title>
</head>
<body>
<h1>明日復(fù)明日,明日何其多</h1>
</body>
</html>
通過上述工作,就完成了最簡單的編寫,然后就可以啟動server(Tomcat7.0)了,在瀏覽器中輸入http://localhost:8080/xxx/index,其中的xxx代表的是項目名。