SpringMVC框架

1.SpringMVC

Spring MVC 是一个模型 - 视图 - 控制器(MVC)的Web框架建立在中央前端控制器。servlet(DispatcherServlet),它负责发送每个请求到合适的处理程序,使用视图来最终返回响应结果的概念。

2.请求-响应模型 :

 

 3.mvc模型:

 

 3.1 组件:

1.前端控制器DispatcherServlet(不需要程序员开发)
作用接收请求,响应结果,相当于转发器,中央处理器。
有了DispatcherServlet减少了其它组件之间的耦合度。

2.处理器映射器HandlerMapping(不需要程序员开发)
作用:根据请求的url查找Handler

3.处理器适配器HandlerAdapter
作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler

4.处理器Handler(需要程序员开发)
注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler

5.视图解析器View resolver(不需要程序员开发)
作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)

6.视图View(需要程序员开发jsp)
View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf…)

3.2 配置解析:

1.Dispatcherservlet

Dispatcherservlet是前置控制器,配置在web.xml文件中。拦截匹配的请求,Servlet拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controoler来处理,是配置springMVC的第一步。

2.InternalResourceViewResolver

视图名称解析器

3.SpringMVC常用注解

@Controller:标识这个类是一个控制器

@RequestMapping:给控制器方法绑定一个uri

@ResponseBody:将java对象转成json,并且发送给客户端

@RequestBody:将客户端请求过来的json转成java对象

@RequestParam:当表单参数和方法形参名字不一致时,做一个名字映射

@PathVarible:用于获取uri中的参数,比如user/1中1的值

Rest风格的新api

@RestController相当于@Controller+ @ResponseBody

@GetMapping@DeleteMapping@PostMapping@PutMapping

4.SpringMVC的入门程序

web.xml

 1 <web-app>
 2     <servlet>
 3         <!-- 加载前端控制器 -->
 4         <servlet-name>springmvc</servlet-name>
 5         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 6         <!-- 
 7              加载配置文件
 8              默认加载规范:
 9              * 文件命名:servlet-name-servlet.xml====springmvc-servlet.xml
10              * 路径规范:必须在WEB-INF目录下面
11              修改加载路径:
12         -->
13         <init-param>
14             <param-name>contextConfigLocation</param-name>
15             <param-value>classpath:springmvc.xml</param-value>   
16         </init-param>
17     </servlet>
18     <servlet-mapping>
19         <servlet-name>springmvc</servlet-name>
20         <url-pattern>*.do</url-pattern>
21     </servlet-mapping>
22 </web-app>

springmvc.xml

 1 <beans>
 2     <!-- 配置映射处理器:根据bean(自定义Controller)的name属性的url去寻找handler;springmvc默认的映射处理器是BeanNameUrlHandlerMapping-->
 3     <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
 4     
 5     <!-- 配置处理器适配器来执行Controller ,springmvc默认的是SimpleControllerHandlerAdapter
 6     -->
 7     <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
 8     
 9     <!-- 配置sprigmvc视图解析器:解析逻辑视图; 
10         后台返回逻辑视图:index
11         视图解析器解析出真正物理视图:前缀+逻辑视图+后缀====/WEB-INF/jsps/index.jsp
12     -->
13     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
14         <property name="prefix" value="/WEB-INF/jsps/"></property>
15         <property name="suffix" value=".jsp"></property>        
16     </bean>
17 </beans>

自定义处理器

 1 @Controller
 2 @RequestMapping("/mvc")
 3 public class MyController implements Controller{
 4  
 5     @PostMapping("/request")
 6     public ModelAndView handleRequest(HttpServletRequest arg0,
 7             HttpServletResponse arg1) throws Exception {
 8         ModelAndView mv = new ModelAndView();
 9         //设置页面回显数据
10         mv.addObject("hello", "欢迎学习springmvc!");
11         
12         //返回物理视图
13         //mv.setViewName("/WEB-INF/jsps/index.jsp");
14         
15         //返回逻辑视图
16         mv.setViewName("index");
17         return mv;
18     }
19 }    
原文地址:https://www.cnblogs.com/chensisi/p/13294089.html