一:配置web.xml
1)問題:spring項目中有多個配置文件mvc.xml dao.xml
2)解決:在web.xml中
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/xxx/*.xml</param-value>
xxx表示xml文件路徑 *.xml表示後綴名爲xml的任意文件
</init-param>
3)可以使用逗號分隔
二:controller
1:spring mvc 中將 controller 認爲是 MVC中的C --控制層
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
六、 問題:有多個@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
本文出處:http://ttaale.iteye.com/blog/761864