Struts的起源 Struts是作為Apache Jakarta項目的組成部分
該項目的目標是為建立Java web 應用程序而提供的一個開源框架
目前大家一般使用的版本為
但也出現了
通過使用struts 框架可以改進和提高Java Server Pages (JSPs)
Servlet
標簽庫以及面向對象的技術在web應用程序中的應用
應用Struts框架可以減少你應用MVC(Model
View
Controller)設計模式的開發時間
從而提高開發效率
把Struts應用於J
ee客戶端
應該是一個不錯的選擇
Struts的工作原理 談到Struts
我們就不得不提到MVC設計模式
MVC即Model
View
Controller的縮寫
它是web應用當中的常用的設計模式
MVC 減弱了業務邏輯接口和數據接口之間的耦合
以及讓視圖層更富於變化
Struts是MVC的一種實現
它很好的結合了Jsp
Java Servlet
Java Bean
Taglib等技術
那麼我們來看看Struts框架的工作原理
控制
在Struts中
ActionServlet起著一個控制器(Controller)的作用
ActionServlet是一個通用的控制組件
這個控制組件提供了處理所有發送到Struts的HTTP請求的入口點
它截取和分發這些請求到相應的動作類(這些動作類都是Action類的子類)
另外控制組件也負責用相應的請求參數填充 Action Form(通常稱之為FromBean)
並傳給動作類(通常稱之為ActionBean)
動作類實現核心商業邏輯
它可以訪問java bean 或調用EJB
所有這些控制邏輯利用Struts
config
xml文件來配置
視圖
主要是由Jsp來控制頁面輸出的
它接收到Action Form中的數據
利用html
taglib
bean
logic等顯示數據
模型
在Struts中
主要存在三種bean
分別是
Action
ActionForm
EJB或者Java Bean
ActionForm用來封裝客戶請求信息
Action取得ActionForm中的數據
再由EJB或者Java Bean進行處理
Struts 優點與缺點 優點
利用Struts提供的taglib可以大大節約開發時間
表現與邏輯分離
維護擴展比較方便
便於團隊開發
缺點
大量的使用標簽
對於初學者難度較大
Struts 安裝 安裝Struts
比較簡單
假設我們使用的是Tomcat
並且安裝在D:\tomcat下
首先
請到 下載Struts
解壓縮後
可以看到jakarta
struts
目錄
在這個目錄下面
你可以看到這樣一個目錄
webapps
該目錄下面有多個*
war
我們copy struts
blank
war 文件到D:\tomcat\webapps下
restart Tomcat
在Tomcat 的webapps下就會生成一個struts
blank空白Struts開發環境
另外
在你解壓縮的目錄下的webapps中 struts
example
war 是一個很好的struts學習教程
如果你想深入學習請訪問 或者 下載 《Struts in Action》 E 文版
一個簡單的例子 Logon
jsp
<%@ taglib uri=
/WEB
INF/struts
html
tld
prefix=
html
%>
<%@ page contentType=
text/html; charset=gb
%>
<%
/**
* This page shows Logon interface
* Title: LOGON SYSTEM
* Description: Logon Page
* Copyright: Copyright (c)
* Company:
* @author bluesunny <>
* @version
*/
response
setHeader(
Pragma
No
cache
);
response
setHeader(
Cache
Control
no
cache
);
response
setDateHeader(
Expires
);
%>
<html>
<head>
<title>Logon</title>
</head>
<body>
<html:errors/>
<html:form action=
/Logon
focus=
username
>
username:<html:text property=
username
size=
/>
password:<html:password property=
password
size=
/>
<html:submit property=
submit
/>
</html:form>
</body>
</html>
頁面為用戶登陸頁面
應用到Struts的html標簽
LogonForm
java
package com
logon
app;
import javax
servlet
http
*;
import org
apache
struts
action
*;
/**
* This page shows LogonForm
java
* Title: LOGON SYSTEM
* Description: LogonForm Page
* Copyright: Copyright (c)
* Company:
* @author bluesunny
* @version
*/
public class LogonForm extends ActionForm{
private String username;
private String password;
public LoginForm() {
username = null;
password = null;
}
public void setUsername(String username){
this
username = username;
}
public String getUsername() {
return this
username;
}
public void setPassword(String password){
this
password = password;
}
public String getPassword(){
return this
password;
}
public void reset(ActionMapping mapping
HttpServletRequest request)
{
username = null;
password = null;
}
}
這個頁面為ActionForm bean
主要是用來封裝客戶端的用戶名與密碼
LogonAction
java
package com
logon
app;
import java
io
*;
import java
sql
*;
import org
apache
struts
action
Action;
import org
apache
struts
action
ActionForward;
import org
apache
struts
action
ActionMapping;
import org
apache
struts
action
ActionForm;
import javax
servlet
*;
import javax
servlet
http
*;
import org
apache
struts
action
*;
/**
* This page shows LogonAction
java
* Title: LOGON SYSTEM
* Description: LogonAction Page
* Copyright: Copyright (c)
* Company:
* @author bluesunny
* @version
*/
public class LogonAction extends Action{
public ActionForward execute(ActionMapping actionMapping
ActionForm actionForm
HttpServletRequest request
HttpServletResponse response)throws Exception{
LogonForm form = (LogonForm)actionForm;
ActionErrors errors = new ActionErrors();
String username = form
getUsername();
String password = form
getPassword();
If(username
equals(
bluesunny
) && password
equals(
bluesunny
)){
return actionMapping
findForward(
success
);
}else{
errors
add(
login
new ActionError(
Logon
failed
));
saveErrors(request
errors);
return actionMapping
findForward(
failed
);
}
}
}
取得ActionForm中的數據
進行處理
處理結果返回到Jsp頁面
web
xml
<?xml version=
encoding=
ISO
?>
<!DOCTYPE web
app
PUBLIC
//Sun Microsystems
Inc
//DTD Web Application
//EN
app_
_
dtd
;>
<web
app>
<display
name>Struts Logon Application</display
name>
<!
Standard Action Servlet Configuration (with debugging)
>
<servlet>
<servlet
name>action</servlet
name>
<servlet
class>org
apache
struts
action
ActionServlet</servlet
class>
<init
param>
<param
name>config</param
name>
<param
value>/WEB
INF/struts
config
xml</param
value>
</init
param>
<init
param>
<param
name>debug</param
name>
<param
value>
</param
value>
</init
param>
<init
param>
<param
name>detail</param
name>
<param
value>
</param
value>
</init
param>
<load
on
startup>
</load
on
startup>
</servlet>
<!
Standard Action Servlet Mapping
>
<servlet
mapping>
<servlet
name>action</servlet
name>
<url
pattern>*
do</url
pattern>
</servlet
mapping>
<!
The Welcome File List
>
<welcome
file
list>
<welcome
file>logon
jsp</welcome
file>
</welcome
file
list>
<!
Struts Tag Library Descriptors
>
<taglib>
<taglib
uri>/tags/struts
bean</taglib
uri>
<taglib
location>/WEB
INF/struts
bean
tld</taglib
location>
</taglib>
<taglib>
<taglib
uri>/tags/struts
html</taglib
uri>
<taglib
location>/WEB
INF/struts
html
tld</taglib
location>
</taglib>
<taglib>
<taglib
uri>/tags/struts
logic</taglib
uri>
<taglib
location>/WEB
INF/struts
logic
tld</taglib
location>
</taglib>
<tagli
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27855.html