Spring MVC
Controller控制器,是MVC中的部分C,为什么是部分呢?因为此处的控制器主要负责功能处理部分:
收集、验证请求参数并绑定到命令对象;
将命令对象交给业务对象,由业务对象处理并返回模型数据;
返回ModelAndView(Model部分是业务对象返回的模型数据,视图部分为逻辑视图名)。
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 >
|
然后和下面的部分代码实现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等)和转发的一样,则直接可以使用
1
|
< bean id = "loginController" class = "org.springframework.web.servlet.mvc.UrlFilenameViewController" />
|
3 继承AbstractControlle 接口,并实现相应的方法,次方法和Controller相同,但是对于如果想封装表单请求,可以直接使用CommandController,-->AbstractCommandController(3.0以上版本废弃)
4. 注解@RequestMapping("/path") -->在类级别上定义注解时,那么再用此方法注解方法method时,那么method下的路径是与类路径相对。
@PathVariable 该注释是用来指明URL路径里面取参数,这个注解可以多个使用,下面时使用一种的代码片段
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