Spring Web MVC是一种基于Java的实现了MVC设计模式的、请求驱动类型的、轻量级Web框架。
ssm:即springmvc, spring, mybatis
视图层 | 业务层 | 持久层 | |
---|---|---|---|
ssm | springmvc | spring | mybatis |
ssh2 | struts2 | spring | hibernate |
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- JSTL依赖 原因:org.springframework.web.servlet.view.JstlView在视图解析时需要这二个jar包-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
将spring-mvc.xml放入WEB-INF目录下,详细信息见配置文件中的注释。
注:关于注解扫描的优化:
web.xml放入WEB-INF目录,替换原来的配置文件。需要理解配置文件的各个部分的作用。
EncodingFiter.java,将入项目并在web.xml中配置,以便于处理中文编码。
注: 示例中用到的注解:
使用浏览器测试,如果服务后台输出了提示字符串,则说明配置成功,现在页面上会显示错误,因为目前还没有配置页面。
注: 如果是前后端分离的开发方式则不需要配置。
示例:
为了方便配置可以将所有的静态资源放置在static目录中,具体配置如图所示:
注: 如果加该配置,则不能正常显示图片, 可以注释掉测试看看。
1)编写一个测试页面
2)修改controller的配置
1)转发: “forward:path”
2)重定向: “redirect:path”
注: 因为页面文件放置在了WEB-INF目录下,所以不能直接重定向到页面,注意看示例。
主要组件
1 首先用户发送请求-->DispatherServlet
2 DispatcherServlet-->HandlerMapping
3 DispatcherServlet-->HandlerAdapter
4 HandlerAdapter-->处理器功能处理方法的调用
5 ModelAndView的逻辑视图名-->ViewRecolver
6 View-->渲染
7 返回控制权给DispatcherServlet,由DispatcherServlet返回呼应给用户,流程结束
处理流程示意图:
Spring工作流程描述
@Controller:用于标识处理器类
@RestController注解相当于@ResponseBody + @Controller合在一起的作用
@RequestMapping:请求到处理器功能方法的映射规则,可定义到类和方法,常用参数:value、method
@RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定,常用参数:value、required、defaultValue, (required设置成false的参数类型必须是引用类型,因为基本数据类型是不能为null的)
@ModelAttribute:请求参数到命令对象的绑定。
可用@ModelAttribute标注方法参数,方法参数会被添加到Model对象中(作用:向视图层传数据)
可用@ModelAttribute标注一个非请求处理方法,此方法会在每次调用请求处理方法前被调用(作用:数据初始化)
可用@ModelAttribute标注方法,方法返回值会被添加到Model对象中(作用:向视图层传数据)
@RequestBody:用于目前比较流行的ajax开发的数据绑定(即提交数据的类型为json格式)