目的: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)架:
配置過程
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袋哼、定義一個接口