心夢帆影Java技術博客
相信自己的人生有無限可能,把握每一個機會,全力以赴……
首頁
新隨筆
聯系
聚合
管理
隨筆-42 評論-578 文章-1 trackbacks-0
從Servlet到Struts 2.1.6
前段時間,朋友做了一個“基于MVC的JSP+Servlet+JavaBean整合開發的例子”,有老師質疑它這個是不是真正的MVC標準?至于這個問題,我們在這里不討論,本文目的是用Struts2.1.6來取代Servlet。經我這位朋友同意,我把他所做的那個“JSP+Servlet+JavaBean”的例子,發布給大家,大家可以跟著我的步驟,一步一步地,把這個Servlet的例子,改寫成Struts2.1.6的例子。
附件下載:
/Files/rongxh7/MvcModel.rar
。
這是我朋友的例子,大家先下載下來,導入Eclipse-jee,并把相應的數據庫文件導入SQL Server 2000,運行一下他這個小項目。如果出現什么問題,可以到他的技術博客給他留言。
http://m.tkk7.com/gdhqs
。
本文重點是如何把他這個Servlet的小項目改寫成Struts2.1.6的項目。首先,下載Struts2.1.6的類庫,
http://struts.apache.org/2.1.6/index.html
, 下載下來后是這個文件:struts-2.1.6-all.zip,解壓縮后,在lib目錄下,找到以下必需的jar包,把它們添加到我們項目的lib目錄下。這些jar有:
xwork-
2.1.2
.jar
struts2-core-
2.1.6
.jar
struts2-convention-plugin-
2.1.6
.jar
ognl-
2.6.11
.jar
freemarker-
2.3.13
.jar
commons-loggin-
1.0.4
.jar
commons-fileupload-
1.2.1
.jar
我還是在我朋友的項目基礎上做吧,先把“MvcModel”(他的項目名)項目下的web.xml修改一下。你可以把他配置的所有Servlet給刪除掉,然后,配置是Struts2的過濾器,代碼如下:
<
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
>
這樣,就簡潔了許多,比配置N個Servlet簡潔了。
接著,在項目的Web-INF目錄下,新建一個文件夾名為"content",這個目錄名要是這個,如果要改成其它名的話,還得在相應的配置文件中配置,但初學的時候,就按它默認的吧。我們編寫的JSP文件,就放在此目錄下。這樣做,目的之一為了提高安全性,因為在Web-INF下的所有文件,不能直接訪問的。
我們可以把我朋友的那個項目的主頁index.jsp文件移到content目錄下,或者,自己新建一個也可以。以下是index.jsp的代碼,注意,這個是我朋友項目中的有所不同了,編碼改成了UTF-8.
<%
@ page language
=
"
java
"
contentType
=
"
text/html; charset=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=ISO-8859-1"
>
<
title
>
MVC MODEL
</
title
>
</
head
>
<
body
>
<
h1
>
MVC MODEL
</
h1
>
<
ul
>
<
li
><
a
href
="people!input.action"
>
添加人員
</
a
></
li
>
<
li
><
a
href
="people.action"
>
人員列表
</
a
></
li
>
</
ul
>
</
body
>
</
html
>
我們在瀏覽器中輸入地址
http://localhost:8060/MvcModel/index
, 注意,我的端口號與你的可能不同,這個訪問路徑“index”不能帶".jsp"后綴,否則會報找不到action的錯誤。或者,你加個".action"的后綴也可以。Struts2.1.6與Struts2.0不同之處之一是,Struts2.1.6中的“xxx.action”可以沒有Action類與它對應,它如果找不到有相應的action類,它會去找xxx.jsp,xxx.htm等文件。
我們做到這一步,如果能夠通過上面的路徑預覽index.jsp的話,就說明,Struts2.1.6配置正確了。繼續下面的步驟吧。
來寫一個Struts的action類,命名為"PeopleAction",代碼如下:
package
cn.he.action;
import
java.util.List;
import
org.apache.struts2.convention.annotation.Result;
import
org.apache.struts2.convention.annotation.Results;
import
cn.he.manager.Manager;
import
cn.he.pojo.People;
import
com.opensymphony.xwork2.ActionSupport;
@Results(
{
@Result(name
=
"
reload
"
, location
=
"
people.action
"
, type
=
"
redirect
"
)
}
)
public
class
PeopleAction
extends
ActionSupport
{
private
static
final
long
serialVersionUID
=
1L
;
private
Manager manager
=
new
Manager();
private
int
id;
private
People people;
private
List
<
People
>
peoples;
//
默認的操作
@Override
public
String execute()
throws
Exception
{
return
list();
}
//
查詢列表的操作
public
String list()
throws
Exception
{
System.out.println(
"
list
"
);
peoples
=
manager.queryAllPeople();
System.out.println(
"
name =
"
+
peoples.size());
return
SUCCESS;
}
//
進入編輯頁面前的操作
public
String input()
throws
Exception
{
System.out.println(
"
input
"
);
return
INPUT;
}
//
保存操作
public
String save()
throws
Exception
{
manager.addPeople(people);
return
"
reload
"
;
}
//
刪除操作
public
String delete()
throws
Exception
{
manager.delPeople(id);
return
"
reload
"
;
}
//
自動生成相應的getter和setter方法
public
int
getId()
{
return
id;
}
public
void
setId(
int
id)
{
this
.id
=
id;
}
public
People getPeople()
{
return
people;
}
public
void
setPeople(People people)
{
this
.people
=
people;
}
public
List
<
People
>
getPeoples()
{
return
peoples;
}
public
void
setPeoples(List
<
People
>
peoples)
{
this
.peoples
=
peoples;
}
}
注意,這個類的包名“cn.he.action”,要有名為“action”或者"struts",或者"web"等,相關的命名規范請參考
struts2
采用convention-plugin
實現零配置
,Struts2.1.6默認會把這些包下或者這些包的子包下的類,納入自己的管理范圍之內。
接著在content目錄下,寫兩個JSP文件,一是查詢列表的JSP頁面:people.jsp,代碼如下:
<%
@ page language
=
"
java
"
contentType
=
"
text/html; charset=utf-8
"
pageEncoding
=
"
utf-8
"
%>
<%
@ taglib prefix
=
"
s
"
uri
=
"
/struts-tags
"
%>
<%
@ taglib prefix
=
"
c
"
uri
=
"
http://java.sun.com/jsp/jstl/core
"
%>
<!
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
>
People列表頁
</
title
>
</
head
>
<
body
>
<
table
>
<
tr
>
<
td
>
id
</
td
>
<
td
>
name
</
td
>
<
td
>
delete
</
td
>
</
tr
>
<
s:iterator
value
="peoples"
var
="peo"
>
<
tr
>
<
td
><
s:property
value
="people.id"
/>
</
td
>
<
td
>
${peo.name}
</
td
>
<
td
><
a
href
="people!delete.action?id=${peo.id}"
>
刪除
</
a
></
td
>
</
tr
>
</
s:iterator
>
</
table
>
</
body
>
</
html
>
另一個添加人員的頁面:people-input.jsp,代碼如下:
<%
@ page language
=
"
java
"
contentType
=
"
text/html; charset=utf-8
"
pageEncoding
=
"
utf-8
"
%>
<%
@ taglib prefix
=
"
s
"
uri
=
"
/struts-tags
"
%>
<!
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
>
People添加頁
</
title
>
</
head
>
<
body
>
<
form
action
="people!save.action"
method
="post"
>
名字:
<
input
type
="text"
name
="people.name"
/>
<
br
/>
<
input
type
="submit"
value
="添加"
/>
</
form
>
</
body
>
</
html
>
運行一下看看效果吧!
本文原創,轉載請注明出處,謝謝!
http://m.tkk7.com/rongxh7
(心夢帆影JavaEE技術博客)
posted on 2009-06-10 02:37
心夢帆影
閱讀(2899)
評論(4)
編輯
收藏
所屬分類:
Struts2.x
評論:
#
re: 從Servlet到Struts 2.1.6 2009-06-10 09:03 |
HiMagic!
servlet不是指xml中的那些定義,2.1.6的實現是為site弄了一個同一個的gate,相當于一個general controller。盡管JSP的本質就是servlet,似乎可以不再寫單獨的servlet類,但在具體業務上,其還是有存在的必要性的。
回復
更多評論
#
re: 從Servlet到Struts 2.1.6 2009-06-10 21:03 |
小人物
學習了!受益匪淺!
回復
更多評論
#
re: 從Servlet到Struts 2.1.6[未登錄] 2009-06-12 15:26 |
逍遙
Struts.xml 你沒有配置?
好像freemarker不用加載吧
回復
更多評論
#
re: 從Servlet到Struts 2.1.6
2009-07-03 00:04 |
心夢帆影
freemarker用于加載Struts2內部的配置文件struts-defualt.xml,如果沒有的話,就會拋異常.Struts2應用無法啟動.
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
從Servlet到Struts 2.1.6
Struts2導致eWebEditor上傳不了文件問題
也談Struts+Ajax+JSP中的中文亂碼問題
基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發 (3)
基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發 (2)
基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發 (1)
Hibernate+Spring+Struts2整合開發中的一個分頁顯示方案
Struts 2.0 整合 Hibernate 3.2 開發注冊登錄系統
歡迎光臨我的博客,本博客文章均為個人原創,歡迎提出寶貴的意見和建議!(容新華)
<
2009年6月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
隨筆分類
(61)
Eclipse(6)
EJB3(2)
Hibernate(8)
JavaSE(8)
JPA(2)
Jquery(1)
Spring(5)
Struts2.1.6系列教程(6)
Struts2.x(8)
WebService(3)
Web前端開發(3)
圖解教程(6)
心路歷程(2)
雜七雜八(1)
三人行
Springside開源項目
劉長炯的Blog
卡宴的Blog
周老師科研站
天堂露珠的Blog
江南白衣的Blog
銀河使者的Blog
常用網站
Apache軟件基地
IBM開發者
Java開源大全
搜索
積分與排名
積分 - 476081
排名 - 107
最新評論
1.?re: Struts 2.0 整合 Hibernate 3.2 開發注冊登錄系統
e
--11
2.?re: Hibernate+Spring+Struts2整合開發中的一個分頁顯示方案[未登錄]
可以給我發一份嗎 我郵箱:550400907@qq.com
--LEI
3.?re: Hibernate(JPA)多對多(ManyToMany)關聯映射不完美之處
只有兩個實體類都配置了joinColumns和inverseJoinColumns屬性,并且位置互相調換,就可以使用雙向維護
--coolcjava
4.?re: Struts 2.0 整合 Hibernate 3.2 開發注冊登錄系統
@zht
@加隆
能把源碼發我一份嗎?1746818597@qq.com,謝謝
--風華
5.?re: Struts 2.0 整合 Hibernate 3.2 開發注冊登錄系統
可以發我一份嗎?郵箱:1746818597@qq.com 謝謝!
--風華
閱讀排行榜
1.?CSS的position:fixed的使用(85013)
2.?[圖解教程] Axis2與Eclipse整合開發Web Service之一:簡單的計算服務例子(50031)
3.?[圖解教程]Axis2與Eclipse整合開發Web Service之二:WSDL逆向生成服務端(31814)
4.?Hibernate+Spring+Struts2整合開發中的一個分頁顯示方案(27061)
5.?Hibernate(JPA)多對多(ManyToMany)關聯映射不完美之處(26947)
6.?[圖解教程]Eclipse不可不知的用法之一:自動生成Getter、Setter和構造方法(16681)
7.?基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發 (1)(15663)
8.?[圖解教程]Eclipse不可不知的用法之二:自動生成接口和JUnit測試類(14896)
9.?[圖解教程]Eclipse不可不知的用法之三:定制視圖與New菜單項(13384)
10.?基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發 (2) (13169)
11.?Hibernate多對多關聯映射的HQL中的in條件查詢問題(12092)
12.?奮斗兩天,終于開發了自己的DAO層公共類(Spring+Hibernate實現)(10463)
13.?DIV+CSS布局中自適應高度和寬度(10312)
14.?今天到廣州天河軟件園面試Java實習生時的一些面試題(9540)
15.?Struts 2.1.6 精簡實例系列教程(6):重寫用戶登錄模塊(整合Jquery+JSON)(9459)
評論排行榜
1.?Hibernate+Spring+Struts2整合開發中的一個分頁顯示方案(114)
2.?Struts 2.0 整合 Hibernate 3.2 開發注冊登錄系統(58)
3.?基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發 (1)(38)
4.?基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發 (3) (37)
5.?今天到廣州天河軟件園面試Java實習生時的一些面試題(37)
6.?[圖解教程] Axis2與Eclipse整合開發Web Service之一:簡單的計算服務例子(28)
7.?CSS的position:fixed的使用(25)
8.?原創一道Java筆試面試題考考大家(24)
9.?基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發 (2) (24)
10.?奮斗兩天,終于開發了自己的DAO層公共類(Spring+Hibernate實現)(20)
11.?Hibernate(JPA)多對多(ManyToMany)關聯映射不完美之處(15)
12.?Struts2導致eWebEditor上傳不了文件問題(13)
13.?Struts 2.1.6 精簡實例系列教程(5):用戶注冊模塊(整合Jquery)(11)
14.?Struts 2.1.6 精簡實例系列教程(6):重寫用戶登錄模塊(整合Jquery+JSON)(10)
15.?Struts 2.1.6 精簡實例系列教程(1):環境的搭建與HelloSimple(10)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 心夢帆影
主站蜘蛛池模板:
亚洲精品国产精品国自产网站
|
亚洲伊人tv综合网色
|
羞羞视频免费网站日本
|
亚洲毛片一级带毛片基地
|
亚洲免费观看在线视频
|
亚洲理论在线观看
|
亚洲a一级免费视频
|
亚洲白色白色在线播放
|
99久久免费国产精品特黄
|
成年男女男精品免费视频网站
|
亚洲欧洲国产日韩精品
|
亚洲精品资源在线
|
亚洲免费观看在线视频
|
亚洲人成电影在线天堂
|
99精品国产成人a∨免费看
|
日韩高清免费观看
|
亚洲一区二区三区四区在线观看
|
永久在线免费观看
|
国产午夜亚洲精品
|
亚洲精品国产成人片
|
丝瓜app免费下载网址进入ios
|
亚洲精品在线电影
|
日日噜噜噜噜夜夜爽亚洲精品
|
一二三四免费观看在线视频中文版
|
**真实毛片免费观看
|
美女被免费网站在线视频免费
|
亚洲av无码不卡
|
四虎永久免费地址在线网站
|
1a级毛片免费观看
|
久久国产一片免费观看
|
亚洲精品乱码久久久久久蜜桃图片
|
亚洲精品和日本精品
|
成在人线AV无码免费
|
性xxxxx大片免费视频
|
日本一区二区三区免费高清在线
|
免费va人成视频网站全
|
91麻豆最新在线人成免费观看
|
在线观看免费黄网站
|
亚洲国产精品热久久
|
亚洲精品无码99在线观看
|
亚洲AV日韩AV高潮无码专区
|