SSH框架之Struts

現(xiàn)在SSH有些過時(shí)了稍坯,目前是SSM的天下俊鱼。

當(dāng)做了解學(xué)習(xí)吧(主要是思想)。現(xiàn)在談SSH都是老油條了哈锹安。新出來工作的學(xué)弟學(xué)妹們短荐,幾乎都沒有接觸過它們的。

Struts是什么

簡(jiǎn)單來說Struts就是一個(gè)框架叹哭,它取代了傳統(tǒng)的 servlet忍宋。傳統(tǒng)使用 jsp + servlet 寫web頁面,struts主要是采用Servlet和JSP技術(shù)來實(shí)現(xiàn)的(這也是為啥叫它框架了)極大的改變了開發(fā)效率风罩。
Struts把Servlet糠排、JSP、自定義標(biāo)簽和信息資源(message resources)整合到一個(gè)統(tǒng)一的框架中超升,開發(fā)人員利用其進(jìn)行開發(fā)時(shí)不用再自己編碼實(shí)現(xiàn)全套MVC模式入宦。

Structs2 是處理訪問服務(wù)器的請(qǐng)求,取代servlet室琢。

當(dāng)然:后面當(dāng)你接觸了 Spring Boot或者 Spring全家桶的話乾闰,這些你將不會(huì)接觸這玩意了。就像前端:當(dāng)年你使用JQ寫頁面研乒,后來出現(xiàn)了VUE汹忠、React等,你機(jī)會(huì)不在使用JQ了雹熬。
例如:

SpringData JPA幫你寫SQL語句~~
Gradle幫你管理項(xiàng)目~
Thymeleaf幫你扔掉Jsp
H2幫你把內(nèi)存變?yōu)閿?shù)據(jù)庫

我們要安裝 傳送門

1宽菜、接下來:小試牛刀 -- 搭建環(huán)境

登錄功能demo:


簡(jiǎn)單的登陸.png

例如配置Structs入口,導(dǎo)入剛下載的Structs包竿报,然后配置入口:

1铅乡、拖入依賴包到 WEB-INF下的lib文件夾下,全選剛導(dǎo)入的包jar,鼠標(biāo)右擊烈菌,Build path 選第一個(gè)此時(shí)阵幸,
工程多了這個(gè).png
...
  </welcome-file-list>
  <filter>
        <filter-name>structs這個(gè)名字隨意</filter-name>
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
  </filter-mapping>

這樣就配置好了入口花履。

2、接下來:小試牛刀 -- 書寫Action和封裝參數(shù)

首先:創(chuàng)建包


創(chuàng)建包.png

登陸的 Action挚赊,和對(duì)應(yīng)的 User 包含賬號(hào)密碼诡壁。
1、學(xué)會(huì)使用快捷鍵 筆者的是 Mac荠割,對(duì)于的創(chuàng)建快捷鍵是 Ctrl + alt + s


快捷鍵效果.png
package com.test.domain;

public class User {
    
    private String username;
    private String password;
    
//  快捷鍵:Ctrl + alt + s
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

2妹卿、創(chuàng)建Action并繼承Structs的 ActionSupport,因?yàn)橐庋b參數(shù)蔑鹦,所以后面還需要一個(gè)泛型來實(shí)現(xiàn)接口夺克。

package com.test.web;

import java.nio.file.attribute.UserPrincipalLookupService;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.test.domain.User;

// ctrl + alt + s 
//extends 繼承類;implements 實(shí)現(xiàn)接口嚎朽。
//1铺纽、創(chuàng)建一個(gè)action,并繼承 ActionSupport (Structs封裝好的)
//2哟忍、封裝參數(shù)的時(shí)候狡门,實(shí)現(xiàn)一個(gè)接口 ModelDriven
public class UserAction extends ActionSupport implements ModelDriven<User>{

    public User user = new User();
//  使用Structs的 execute
    public String execute() throws Exception {
        
        UserService userService = new UserService();
        boolean success = userService.findUser(user);
        if (success) {
            return "success";
        } else {
            return "error";
        }
    }
@Override
public User getModel() {
    // TODO Auto-generated method stub
    return user;
}

}

Struts與Action的區(qū)別?

啟動(dòng):

servlet:無
struts:配置filter

創(chuàng)建:

servlet:繼承HttpServlet,實(shí)現(xiàn)doget,dopost,
添加注解,或者配置web.xml
struts:繼承ActionSupport,寫一個(gè)帶有String返回值且拋出一個(gè)異常的函數(shù)
配置struts.xml

封裝參數(shù):

servlet:導(dǎo)入包BeanUtils,根據(jù)name屬性自動(dòng)封裝
struts:實(shí)現(xiàn)ModelDriven接口,實(shí)現(xiàn)getModel方法

轉(zhuǎn)發(fā)與重定向:

servlet:
轉(zhuǎn)發(fā):request.getRequestDispatcher("/login.jsp").forward(request, response);;
重定向:response.sendRedirect(request.getContextPath()+"/index.html");
struts:
轉(zhuǎn)發(fā):
package
action
result默認(rèn)為轉(zhuǎn)發(fā),
重定向
package
aciton
result中type="redirect"

PS:不定期更新...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锅很,一起剝皮案震驚了整個(gè)濱河市融撞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌粗蔚,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饶火,死亡現(xiàn)場(chǎng)離奇詭異鹏控,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)肤寝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門当辐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鲤看,你說我怎么就攤上這事缘揪。” “怎么了义桂?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵找筝,是天一觀的道長。 經(jīng)常有香客問我慷吊,道長袖裕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任溉瓶,我火速辦了婚禮急鳄,結(jié)果婚禮上谤民,老公的妹妹穿的比我還像新娘。我一直安慰自己疾宏,他們只是感情好张足,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坎藐,像睡著了一般为牍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顺饮,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天吵聪,我揣著相機(jī)與錄音,去河邊找鬼兼雄。 笑死吟逝,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赦肋。 我是一名探鬼主播块攒,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼佃乘!你這毒婦竟也來了囱井?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤趣避,失蹤者是張志新(化名)和其女友劉穎庞呕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體程帕,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡住练,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了愁拭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讲逛。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖岭埠,靈堂內(nèi)的尸體忽然破棺而出盏混,到底是詐尸還是另有隱情,我是刑警寧澤惜论,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布许赃,位于F島的核電站,受9級(jí)特大地震影響来涨,放射性物質(zhì)發(fā)生泄漏图焰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一蹦掐、第九天 我趴在偏房一處隱蔽的房頂上張望技羔。 院中可真熱鬧僵闯,春花似錦、人聲如沸藤滥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拙绊。三九已至向图,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間标沪,已是汗流浹背榄攀。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留金句,地道東北人檩赢。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像违寞,于是被迫代替她去往敵國和親贞瞒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容