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 }