1)問題:spring項目中有多個配置文件mvc.xml dao.xmlweb
2)解決:在web.xml中spring
<init-param>服務器
<param-name>contextConfigLocation</param-name>mvc
<param-value>/WEB-INF/xxx/*.xml</param-value> app
xxx表示xml文件路徑 *.xml表示後綴名爲xml的任意文件jsp
</init-param> post
3)可使用 逗號分隔spa
二:controllercomponent
1:spring mvc 中將 controller 認爲是 MVC中的C --控制層xml
2:規範命名 類名 xxxController
3:若是不基於註解: 該類須要繼承 CommandController 或者 其餘不少 參見 spring幫助
若是基於註解:在類名前 加上 @controller
4:補充:將類名前加上該註解,當spring啓動 或者web服務啓動 spring會自動掃描全部包(固然,這個能夠設置)
做用: 就是告訴服務器 這個類是MVC中的C 這個類能夠接收用戶請求 處理用戶請求
三:問題:如何接收用戶請求
1:假設用戶請求URL 是: http://localhost:8080/項目名/xxx.do do不do都同樣 無論這個do 你用什麼均可以
2:這個時候,spring開始在全部的 C 中,找對應的處理請求的方法
3:在任意的能夠C的類中,在你想要處理此請求的方法定義的前面
@RequestMapping("/xxx") 這個時候的xxx 就是用戶請求的xxx 無論do
public String 方法名()
{
return 「aaa」;
返回一個字符串,很是有用 要注意 用來決定要顯示的MVC的 V 視圖層 是哪一個
}
四:上面 配置好了 MVC的 C 也就是 控制層 在方法中返回字符串 用來決定MVC的V 視圖層
問題:如何讓spring 去掃描類 創建關聯
1:在配置文件中 (spring)的 假設是 mvc.xml 中
2:加入 <context:component-scan base-package="包路徑"/>
五:問題 如何返回到視圖層 V
1: 解決:此時,須要在配置文件中,加入視圖解析器 有不少種 ,太多了
2:這裏用基於jsp/jstl 視圖
3:在web.xml 中加入bean 配置
<bean class="org.s...f....web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views"/> 前綴
<property name="suffix" value=".jsp"/> 後綴
</bean>
小結:經過上述5步 ,基本完成 C V 的配置
1:spring 中的C 通常起類名 XXXController 在這個類裏面 須要加入@controller 標誌這個類能夠做爲請求處理類 也就是 控制類
2:這個控制類裏面能夠有不少方法,哪一個方法用來處理用戶請求,就在那個方法前面 加 @RequestMapping(「/xxxxx請求路徑」)
3;當請求處理完畢後 返回值 決定了 該處理完畢後 用戶將跳轉到那個頁面 這個很重要
4:例如
@RequestMapping("/xxx") 這個時候的xxx 就是用戶請求的xxx 無論do
public String 方法名()
{
return 「aaa」;
返回一個字符串,很是有用 要注意 用來決定要顯示的MVC的 V 視圖層 是哪一個
}
返回 aaa 根據配置文件中的 視圖處理器配置 加入前綴 後綴
頁面將跳轉到 /WEB-INF/views/aaa.jsp
6、 問題:有多個 @RequestMapping
@controller
@RequestMapping("/aaa") ----------------->類級別 能夠不須要 若是要了 下面全部的請求路徑前 都須要加入 /aaa
public class ccccontroller{
@RequestMapping("/bbb") --------------------->方法級別 必須有 決定這個方法處理哪一個請求 若是有類級別 /aaa/bbb
public String xxx(){ 若是沒有 /bbb
retrun
}
}
七:問題:接收用戶請求參數 值
1)請求1: /test/start.do?name=zhangsan
請求2: /test/start/zhangsan.do
在請求2中 將參數做爲請求URL 傳遞 感受用的不習慣
採用 URL模板
2)@RequestMapping("/start/{name}") 這個name 隨便 啥均可以
public String start(@PathVariable("name") string name){ 反正和上面的對應
return 方法體裏面就能夠直接得到參數
}
3)包含多個 @RequestMapping ("/start/{name}/{age}")
八 問題 不一樣請求方法 用不一樣處理方法 get post
@RequestMapping (value="/start" ,method=RequestMethod.GET) 處理post 就換成 POST