一、SpringMVC中的组件
1、springMVC中的重要组件
1.1 前端控制器(DispatchServlet):中央处理器,所有的操作都由前端控制器进行分配
1.2 控制器映射器(HandlerMapping):根据请求,找到对应的后端控制器
1.3 控制器适配器(HandlerAdapter):负责执行Controller中的方法
1.4 后端控制器(自己定义的Controller对象):可以定义多个方法,每个方法都可以配置自己 的资源路径(URL)
2、其他组件
2.1 视图解析器(ViewResolver)
2.2 拦截器(Interceptor)
2.3 异常处理器(ExceptionResolver)
二、SpringMVC的执行流程
1、前端发起请求,前端控制器接到该请求
2、将请求交给控制器映射器,控制器映射器根据请求找到对应的后端控制器(可执行 链),将该后端控制器返回给前端控制器
3、前端控制器将可执行链交给控制适配器,控制适配器执行对应的可执行链,将执行结果返回给前端控制器
4、前端控制器将执行结果交给视图解析器,视图解析器找到对应的视图,将该视图返回给前端控制器
5、前端控制器将数据渲染到视图上,将视图响应给前端
三、相关操作
1、导入mvc依赖
在pom.xml文件中导入mvc依赖
<!--spring的web框架-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.24</version>
</dependency>
2、配置前端配置
在web.xml中配置前端控制器
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--配置前端控制器-->
<servlet>
<servlet-name>dispatch</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!--springMVC的配置文件所在位置
在tomcat容器加载时,会根据此配置文件创建WebApplication对象-->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--tomcat容器加载时,就创建Servlet对象-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatch</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
3、给参数值
3.1 从路径中获取参数值
//@PathVariable:从路径中获取参数值
@RequestMapping("path/{id}/{name}")
public String test3(@PathVariable Integer id,
@PathVariable String name){
System.out.println("id="+id);
System.out.println("name="+name);
return "index";
}
3.2 使用Servlet的API
/*使用Servlet的API,将相关的对象作为方法的参数
*/
@RequestMapping("/req")
public String test4(HttpServletRequest request){
String id=request.getParameter("id");
System.out.println("id="+id);
return "index";
}
3.3 通过方法的参数来接收请求参数
@RequestMapping("add")
//默认情况下,参数名就是请求参数名
//SpringMVC内置了类型转换器,不需要我们转换类型
/*
@RequestParam:修饰方法的形参,可以设置请求参数名等信息
value:请求参数名
required:是否必须,默认值为true true代表必须,如果前端不提交此参数,就会报错
*/
public String add(Integer id,String name,@RequestParam(value = "class",required = true) String clazz){
System.out.println("id="+id);
System.out.println("name="+name);
System.out.println("class="+clazz);
return "index";
}
4、获取前端数据
//接收json数据
//@RequestBody:接收到的数据为json格式
@PostMapping("/getjson")
public String getJson(@RequestBody Person person){
System.out.println("person="+person);
return "success";
}
5、获取静态资源
在springMVC.xml中配置
第一种方法:
<!--静态资源的处理
mapping:静态资源的访问路径
location:静态资源在服务器上的存放路径
mvc:resources可以配置多个-->
<mvc:resources mapping="/img/**" location="/img/"></mvc:resources>
第二种自动处理静态资源:
<mvc:default-servlet-handler></mvc:default-servlet-handler>