SSI上手

目的:SpringMVC Spring Mybatis項目上手
方法:寫個小項目
要嚴格按照java項目結(jié)構(gòu)開發(fā)

推薦書籍:《javaWeb開發(fā)實戰(zhàn)經(jīng)典》

SSI由struts2理肺,spring以及ibatis組成

Struts目前主要負責數(shù)據(jù)傳遞和控制方面

spring則依靠其強大的依賴注入技術(shù)實現(xiàn)了類似bean托管和整合等功能

ibatis作為一種輕量級的OR Mapping框架饺窿,提供了半自動化對象關系映射的實現(xiàn)

參考構(gòu)架:


image.png

配置過程
1走芋、在java Resoures/src下新建文件struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!--  xml 編碼格式    -->
<!-- .dtd 引用智能感知 -->
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<!-- dev 指debug調(diào)試模式-->
<constant name="struts.devMode" value="true" />
<!-- struts 緩存大小--> 
    <constant name="struts.multipart.maxSize" value="15728640" />
<!-- 包 繼承json數(shù)據(jù)格式-->
    <package name="TEST" extends="json-default">
<!-- html頁面以json數(shù)據(jù)格式交互數(shù)據(jù)-->
        <result-types>
            <result-type name="json" class="org.apache.struts2.json.JSONResult" />
        </result-types>
<!-- 動作名稱    類名字  調(diào)用方法名  -->        
        <action name="logintest" class="loginAction" method="login">
            <result name="success"></result>
        </action>
    </package>
</struts>

再建一個applicationContext.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!--  xml 編碼格式    -->
<!--  xml 編碼格式控件引用    -->
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"
    xmlns:p="http://www.springframework.org/schema/p">
<!--  xml 編碼格式控件引用    -->       
<bean id="loginAction" class="cn.loginAction">
</bean>
</beans>

配置 web.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!-- xml 編碼格式 -->
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <!-- filter 攔截器 名字struts2 -->
    <filter>
    <filter-name>struts2</filter-name>
    <!-- filter 攔截器的類 -->
    <filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>
    <!-- 加載文件 /WEB-INF/classes/ 是tomcat的文件路徑-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
    </context-param>
    <!-- 監(jiān)聽-->
    <listener>
        <listener-class>
org.springframework.web.context.ContextLoaderListener
                </listener-class>
    </listener>
    <session-config>
        <session-timeout>60</session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
</web-app>

form 內(nèi)寫了 action

 <form action ="logintest.action">
UserName<input type="text"></br>password<input type="password">
<input id="btn" type="submit">
</form>

submit之后 發(fā)起url請求

strust 攔截器 攔截所有 action 以.action結(jié)尾的所有請求(web.xml內(nèi)配置filter)
然后轉(zhuǎn)strust 攔截器的類之后
把請求去struts的配置文件 struts.xml 去找name相同的action
然后去applicationContext.xml找 action 的java類的路徑

    username<input type="text" name="username"></br> 
    password<input type="password" name="password">

先給頁面元素加名字屬性

給類加頁面上同名字的變量
然后給類加get/set方法

public class loginAction {
    public String username;
    public String password;
    
    public void  login() {
        System.out.print("傳遞進來的用戶名是"+username);
        System.out.print("傳遞進來的密碼是"+password);
    }

    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;
    }
        
}

注意跳轉(zhuǎn)頁面的url是
http://localhost:8080/Exam/logintest.action?username=taoning&password=123456

下面實現(xiàn)登陸頁面的頁面跳轉(zhuǎn)
1.struts.xml文件
配置一個返回的名字以及變量
名字用于判斷是否使用跳轉(zhuǎn) 變量用于指向跳轉(zhuǎn)鏈接

<action name="logintest" class="loginAction" method="login">
<result name="success">${successPath}</result>
</action>

2.增加一個變量 String
增加set/get方法
給String 賦值 為跳轉(zhuǎn)鏈接

public String successPath;
    public String  login() {
        System.out.println("傳遞進來的用戶名是"+username+"  傳遞進來的密碼是"+password);
        setSuccessPath("success.jsp");
        return "success";
    }

3.頁面獲取值
歡迎您 ${username}
<result name="success">${successPath}</result>
這種方式可以讓頁面獲取到所有的get/set的方法

最后達到的目的:

HTML---------JAVA
Sturs2.xml---spring.xml

配置頁面動作與后臺類的互動
配置 struts 關于通配符的使用 以后 所有的Action 都可以套用 類名+方法名加.Action 注意大小不通用 struts的數(shù)組是用1開始的 只有struts的數(shù)組是從1開始的

    <action name="*_*" class="cn.{1}Action" method="{2}">   
            <result name="success">${successPath}</result>
            <result name="error">${errorPath}</result>
            <!-- 返回名稱 返回類型 有返回類型的 用于跳轉(zhuǎn) 跳轉(zhuǎn)場景用于 如登陸后跳轉(zhuǎn)至登陸前使用的頁面 type 是固定有限的 -->
            <result name="redirectAction" type="redirectAction">${redirectAction}</result>
            <!-- redirect是重定向 可以向其他網(wǎng)站的頁面跳轉(zhuǎn) 與本項目無關 -->
            <result name="redirect" type="redirect">${redirect}</result>
            <!-- 返回類型為json -->
            <result name="returnJson" type="json"></result>
            <!-- 返回類型為流文件 用于文件處理 -->
            <result name="fileStream" type="Stream"></result>
         </action>
在登陸頁面上 可以做2個按鈕 通過js 替換form的action內(nèi)容 指向不同的類
```
  $(document).ready(function() {
    $("#btn").click(function() {
        $("#form1").attr("action", "register_register.action");
        $("#form1").submit();
    })
})
```
注意 是form 不是 from!!
請區(qū)分大小寫
類名_方法名.Action

登陸失敗  彈出頁面
在body里面增加一個隱藏屬性

<input id="hid1" type="hidden" value="${loginerror}"/>
js文件中添加
如果頁面屬性 hid1 的值是是1 則彈出報錯彈層
注意判斷條件 要用兩個等于號7持堋做粤!

    var hid1value = $("#hid1").val();
    if (hid1value == "1") {
        layer.alert("您的用戶名/密碼錯誤", {
            icon : 2,
            skin : 'layer-ext-moon'
        })
    }

判斷用戶登陸是否正確 如果正確則返回登錄成功的頁面 失敗則展示原主頁面,且將 loginerror 數(shù)值置為1

    if (username.equals("AAA") && password.equals("123")) {
                    setLoginerror("0");
                    setSuccessPath("success.jsp");              
                    return "success";
                } else {
                    setLoginerror("1");
                    setSuccessPath("index.jsp");                
                    return "success";
                }

關于注入:

<bean id="loginAction" class="cn.loginAction">
<!--  a是cn.ipAddressAction類的實例化對象 ipAddress 是對象的一個屬性事秀,屬性必須有g(shù)et/set方法 -->
<property name ="a" ref ="ip"></property>
</bean>
<bean id="ip" class="cn.ipAddressAction">
<property name ="ipAddress"  value = "132.229.115.66"></property>
</bean>

如果配置完發(fā)現(xiàn)tomcat報錯 按行找問題 可能的問題
1彤断、單詞拼寫錯誤。
2易迹、沒有set和get方法導致無法注入數(shù)據(jù)宰衙。
3、類名寫錯 按CTRL無法出現(xiàn)下劃線睹欲。

鏈接數(shù)據(jù)庫

1供炼、數(shù)據(jù)庫IP
2、數(shù)據(jù)庫用戶名
3窘疮、數(shù)據(jù)庫密碼
配置 applicationContext.xml

1袋哼、定義一個接口

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市考余,隨后出現(xiàn)的幾起案子先嬉,更是在濱河造成了極大的恐慌,老刑警劉巖楚堤,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疫蔓,死亡現(xiàn)場離奇詭異,居然都是意外死亡身冬,警方通過查閱死者的電腦和手機衅胀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酥筝,“玉大人滚躯,你說我怎么就攤上這事。” “怎么了掸掏?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵茁影,是天一觀的道長。 經(jīng)常有香客問我丧凤,道長募闲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任愿待,我火速辦了婚禮浩螺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘仍侥。我一直安慰自己要出,他們只是感情好,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布农渊。 她就那樣靜靜地躺著患蹂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腿时。 梳的紋絲不亂的頭發(fā)上况脆,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音批糟,去河邊找鬼格了。 笑死,一個胖子當著我的面吹牛徽鼎,可吹牛的內(nèi)容都是我干的盛末。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼否淤,長吁一口氣:“原來是場噩夢啊……” “哼悄但!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起石抡,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤檐嚣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后啰扛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嚎京,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年隐解,在試婚紗的時候發(fā)現(xiàn)自己被綠了鞍帝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡煞茫,死狀恐怖帕涌,靈堂內(nèi)的尸體忽然破棺而出摄凡,到底是詐尸還是另有隱情,我是刑警寧澤蚓曼,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布亲澡,位于F島的核電站,受9級特大地震影響辟躏,放射性物質(zhì)發(fā)生泄漏谷扣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一捎琐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧裹匙,春花似錦瑞凑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惰匙,卻和暖如春技掏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背项鬼。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工哑梳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绘盟。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓鸠真,卻偏偏與公主長得像,于是被迫代替她去往敵國和親龄毡。 傳聞我的和親對象是個殘疾皇子吠卷,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)沦零,斷路器祭隔,智...
    卡卡羅2017閱讀 134,638評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,778評論 6 342
  • (一)Struts、Spring祭钉、Hibernate瞄沙、Mybatis框技術(shù) 1.Struts2.0有幾種標簽庫 【...
    獨云閱讀 3,235評論 0 62
  • 2016年9月27日 西安 陰天 睜不開的雙眼 仍在昨天的瘋癲里紀念 一份永遠不要拆的禮物 勾著思緒飛起來 頭腦很...
    鮮栗子閱讀 140評論 2 0
  • 對于大多數(shù)上班之后的人來說,幾乎是一種解放、以后終于不用再考試了距境。我上的心理學研究生在職課程申尼,本周日要考試了,考上...
    碼字者閱讀 247評論 0 1