SpringMVC-Controller配置详解(二)
2019-08-16 12:09:11来源:博客园 阅读 ()
SpringMVC-Controller配置详解(二)
1.通过控制器的实现方式
SpringMVC中,对于Controller的配置方式有很多种;
Controller是一个接口,在org.springframework.web.servlet.mvc包下,接口中只有一个方法;
我们需要一个参数 ModelAndView 模型视图解析器.来解析我们的视图并作出处理.
在springMVC-servlet.xml的配置文件中需要加入:
处理映射器
<!--处理映射器--> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
处理适配器
<!--处理适配器--> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
视图解析器
<bean id="InternalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>
controller编写
public class helloController { public ModelAndView hello(){ ModelAndView mv = new ModelAndView(); mv.addObject("msg","hello,springmvc"); mv.setViewName("hello"); return mv; } }
2.通过注解的实现方式
我们需要在springmvc-servlet.xml的配置文件中加入:
注解扫描
Spring可以使用扫描机制来找到应用程序中所有基于注解的控制器类,为了保证Spring能找到你的控制器,需要在配置文件中声明组件扫描。
<!--扫描指定包下的注解,让指定的类能够被IOC容器管理--> <context:component-scan base-package="org.west.controller"/>
静态资源过滤
<!--静态资源过滤--> <mvc:default-servlet-handler/>
支持注解驱动
<!--annotation-driven:支持MVC注解驱动 --> <mvc:annotation-driven/>
视图解析器
<bean id="InternalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>
我们controller的实现需要经过这三层的处理(模型,视图,控制器)配置缺一不可.
controller的编写
@Controller public class HelloWorldController { //请求映射("路径") @RequestMapping("/hello") public String hi(Model model){ model.addAttribute("msg","Hello,SpringMVC"); System.out.println("进入HELLO"); return "hello"; //WEB-INF/jsp/hello.jsp } }
注解Controller类似于声明Spring类的实例,是一个控制器.
不同的请求都可以指向一个视图,但是页面结果的结果是不一样的,视图是被复用的,而控制器与视图之间是弱偶合的关系。
3.Restful风格
Restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
通俗的来讲在我的理解来说Restful风格的传参不需要在像传统的请求一样通过"?"来传参了,我们只需要"/"就可以了.
传统方式: https://........add?p1=1&p2=2
Restful风格: https://........add/p1/p2
接下来编写一个controller看看吧!
controller编写
@Controller public class HelloWorldController { //请求映射("路径") @RequestMapping("/hello/{p1}/{p2}") public String hi(@PathVariable int p1,@PathVariable int p2, Model model){ int sum=p1+p2; model.addAttribute("msg",sum); return "hello"; //WEB-INF/jsp/hello.jsp } }
注意: 我们需要一个注解PathVariable把我们的值映射上去.
我们传的传输类型要对应一致,否则访问不到对应的请求方法.
使用路径变量的好处:使路径变得更加简洁;获得参数更加方便,框架会自动进行类型转换。通过路径变量的类型可以约束访问参数,如果类型不一样,则访问不到对应的请求方法.
原文链接:https://www.cnblogs.com/xiaoqiqistudy/p/11320288.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Java 动态代理类的实现
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- 数据源管理 | Kafka集群环境搭建,消息存储机制详解 2020-06-11
- Java--Stream流详解 2020-06-10
- nacos~配置中心功能~springboot的支持 2020-06-10
- Maven安装与配置 2020-06-09
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash