Spring MVC
Controller控制器,是MVC中的部分C,為什么是部分呢?因為此處的控制器主要負責功能處理部分:
收集、驗證請求參數(shù)并綁定到命令對象;
將命令對象交給業(yè)務對象,由業(yè)務對象處理并返回模型數(shù)據(jù);
返回ModelAndView(Model部分是業(yè)務對象返回的模型數(shù)據(jù),視圖部分為邏輯視圖名)。
1. 繼承該接口 Controller接口,重寫對應方法,或者采用注解Controller,自定義映射文件
1
2
3
4
5
6
|
@Controller @RequestMapping ( "/flight" ) public class ControlFlight /*implements Controller*/ { } |
需要注意的是:
SimpleUrlHandlerMapping決定使用哪一個控制器。
其中對于prexf-servlet-.xml文件中使重定向方式:
1.第一種ModelAndView方式。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<!--基于URL映射器--> < bean class = "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" > < property name = "mappings" > < props > < prop key = "start1.do" >ControlFlight</ prop > < prop key = "buy.do" >ControlFlight</ prop > < prop key = "flight.do" >ControlFlight</ prop > < prop key = "result.do" >ControlFlight</ prop > <!--<prop key="start.do">loginController</prop>--> </ props > </ property > </ bean > <!-- <bean id="loginController" class="org.springframework.web.servlet.mvc.ParameterizableViewController"> <property name="viewName" value="buy"/> </bean>--> < bean id = "ControlFlight" class = "com.qunar.flight.control.ControlFlight" /> <!--ViewResolver映射--> < bean class = "org.springframework.web.servlet.view.UrlBasedViewResolver" > < property name = "viewClass" value = "org.springframework.web.servlet.view.JstlView" /> < property name = "prefix" value = "/WEB-INF/flight/" /> < property name = "suffix" value = ".jsp" /> < property name = "order" value = "1" /> </ bean > |
之后進入Controller中進行任務分派:
1
2
3
4
|
@RequestMapping (value = "/start.do" , method = RequestMethod.GET) public ModelAndView BuyAirTicket() { return new ModelAndView( "buy" ); } |
2 第二種采用
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<!--基于URL映射器--> < bean class = "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" > < property name = "mappings" > < props > < prop key = "start.do" >loginController</ prop > </ props > </ property > </ bean > < bean id = "loginController" class = "org.springframework.web.servlet.mvc.ParameterizableViewController" > < property name = "viewName" value = "buy" /> </ bean > |
然后和下面的部分代碼實現(xiàn)URL拼接
1
2
3
4
5
6
7
|
<!--ViewResolver映射--> < bean class = "org.springframework.web.servlet.view.UrlBasedViewResolver" > < property name = "viewClass" value = "org.springframework.web.servlet.view.JstlView" /> < property name = "prefix" value = "/WEB-INF/flight/" /> < property name = "suffix" value = ".jsp" /> < property name = "order" value = "1" /> </ bean > |
還有另一種方法:
就是直接使用這個命令,但是前提條件是,請求URI的前綴(過濾掉.vm,.htm等)和轉發(fā)的一樣,則直接可以使用
1
|
< bean id = "loginController" class = "org.springframework.web.servlet.mvc.UrlFilenameViewController" /> |
3 繼承AbstractControlle 接口,并實現(xiàn)相應的方法,次方法和Controller相同,但是對于如果想封裝表單請求,可以直接使用CommandController,-->AbstractCommandController(3.0以上版本廢棄)
4. 注解@RequestMapping("/path") -->在類級別上定義注解時,那么再用此方法注解方法method時,那么method下的路徑是與類路徑相對。
@PathVariable 該注釋是用來指明URL路徑里面取參數(shù),這個注解可以多個使用,下面時使用一種的代碼片段
1
2
3
4
5
6
|
@RequestMapping ( "/flight/{name}" ) public ModelAndView toAdd( @PathVariable ( "name" ) String name){ ModelAndView mav = new ModelAndView( "buy" ); return mav; } |
總結
以上就是本文關于Springmvc Controller接口代碼示例的全部內容,希望對大家有所幫助。如有不足之處,歡迎留言指出。
原文鏈接:https://www.cnblogs.com/gongxijun/p/5338104.html