创建一个SpringMVC项目

用maven创建好模块后,改成Web框架支持

1. 导入依赖

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework</groupId>
  4. <artifactId>spring-webmvc</artifactId>
  5. <version>5.2.0.RELEASE</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>junit</groupId>
  9. <artifactId>junit</artifactId>
  10. <version>4.12</version>
  11. <scope>test</scope>
  12. </dependency>
  13. <dependency>
  14. <groupId>org.aspectj</groupId>
  15. <artifactId>aspectjweaver</artifactId>
  16. <version>1.9.1</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>javax.servlet</groupId>
  20. <artifactId>javax.servlet-api</artifactId>
  21. <version>3.1.0</version>
  22. </dependency>
  23. </dependencies>

2. 项目目录

image.png

3. 配置web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  5. version="4.0">
  6. <!--配置DispatchServlet:这个是SpringMVC的核心,请求分发器,前端控制器-->
  7. <servlet>
  8. <servlet-name>springmvc</servlet-name>
  9. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  10. <!--DispatcherServlet要绑定Spring的配置文件-->
  11. <init-param>
  12. <param-name>contextConfigLocation</param-name>
  13. <param-value>classpath:springmvc-servlet.xml</param-value>
  14. </init-param>
  15. <!--启动级别:1.服务器一启动它就自己启动-->
  16. <load-on-startup>1</load-on-startup>
  17. </servlet>
  18. <!--
  19. 所有的请求都会去走上面的servlet
  20. 在SpringMVC中 /和/*的区别
  21. /:只会匹配所有的请求,不会去匹配jsp页面
  22. /*:匹配所有的请求,包括jsp
  23. 本来访问的是hello请求,springmvc会主动追加前缀和后缀,比如变成index/hello.jsp,
  24. 如果设置了/*,在 访问请求hello.jsp,然后又要被springmvc追加一个前后缀,hello.jsp.jsp
  25. -->
  26. <servlet-mapping>
  27. <servlet-name>springmvc</servlet-name>
  28. <url-pattern>/</url-pattern>
  29. </servlet-mapping>
  30. </web-app>

4. 配置Spring配置文件springmvc-servlet.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:aop="http://www.springframework.org/schema/aop"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. https://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/aop
  8. https://www.springframework.org/schema/aop/spring-aop.xsd">
  9. <!--处理器映射器-->
  10. <bean class ="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
  11. <!--处理器适配器-->
  12. <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
  13. <!--视图解析器-->
  14. <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
  15. <!--加上前后缀,就只用访问名字就行了,会主动拼接上前后缀的-->
  16. <!--前缀-->
  17. <property name="prefix" value="/WEB-INF/jsp/"/>
  18. <!--后缀-->
  19. <property name="suffix" value=".jsp"/>
  20. </bean>
  21. <!--
  22. 下面的就是自己配置的映射路径了
  23. 当访问/hello时,就去找HelloController控制器
  24. -->
  25. <bean id="/hello" class="com.lyd.controller.HelloController"/>
  26. </beans>

5. 创建控制器Controller

  1. package com.lyd.controller;
  2. import org.springframework.web.servlet.ModelAndView;
  3. import org.springframework.web.servlet.mvc.Controller;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. //需要实现Controller接口,实现了接口,它就是控制器了
  7. public class HelloController implements Controller {
  8. @Override
  9. public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
  10. ModelAndView mv =new ModelAndView();
  11. //业务代码
  12. String result ="HelloSpringMVC";
  13. mv.addObject("msg",result);
  14. //视图跳转
  15. mv.setViewName("test");
  16. return mv;
  17. }
  18. }

6. 启动tomcat运行项目

看这里
Tomcat
在浏览器上,就能访问到结果了。jsp里面我只写了一个显示msg值
image.png

7. 可能发生404错误

有可能访问/hello出现404,有种可能是没有生成对应的lib,自己手动去添加
打开项目结构
image.png
右键lib目录,最后全选加进去
image.png

使用注解开发SpringMVC

和上面创建步骤差不多,不同的就是spring配置文件

目录结构

image.png

升级springmvc-servlet.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. https://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context
  9. https://www.springframework.org/schema/context/spring-context.xsd
  10. http://www.springframework.org/schema/mvc
  11. https://www.springframework.org/schema/mvc/spring-mvc.xsd">
  12. <!--自动扫描包,让指定包下的注解生效,由IOC容器统一管理-->
  13. <context:component-scan base-package="com.lyd.controller"/>
  14. <!--让SpringMVC不处理静态资源 .css .js .html .mp3 .mp4等-->
  15. <mvc:default-servlet-handler/>
  16. <!--
  17. 支持mvc注解驱动
  18. 在spring中一般采用@RequestMapping注解来完成映射关系
  19. 要想使@RequestMapping注解生效
  20. 必须向上下文中注册DefaultAnnotationHandlerMapping
  21. 和一个AnnotationMethodHandlerAdapter实例
  22. 这两个实例分别在类级别和方法级别处理
  23. 而annotation-driven配置帮助我们自动完成上述两个实例的注入
  24. -->
  25. <mvc:annotation-driven/>
  26. <!--视图解析器-->
  27. <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
  28. <!--加上前后缀,就只用访问名字就行了,会主动拼接上前后缀的-->
  29. <!--前缀-->
  30. <property name="prefix" value="/WEB-INF/jsp/"/>
  31. <!--后缀-->
  32. <property name="suffix" value=".jsp"/>
  33. </bean>
  34. </beans>

升级Controller注解写法

  1. package com.lyd.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.ui.Model;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. //用注解就是把他变成了一个控制器了,这个是之前Spring文章里面讲到的衍生组件
  6. //被这个注解的类中的所有方法,如果返回值是String,并且有具体的页面可以跳转,那么就会被视图解析器解析
  7. @Controller
  8. //@RequestMapping可以写在类上面,也可以写在方法上
  9. //写在类上表示通过这个路径就能映射到这个控制器,就不用向之前那样在spring配置文件里面一直加bean映射
  10. @RequestMapping("hello")
  11. public class HelloController {
  12. //方法上的RequestMapping直接通过子路径返回到对应的视图
  13. //这里的访问路径是 localhost:8080/hello/h1
  14. //不写类上面的RequestMapping,这里的访问路径是localhost:8080/h1
  15. @RequestMapping("/h1")
  16. public String hello(Model model){
  17. //封装数据
  18. model.addAttribute("msg","这是用注解实现的SpringMVC");
  19. //这个return的结果会被视图解析器处理
  20. return "hello";
  21. }
  22. //路径 /hello/index
  23. @RequestMapping("index")
  24. public String index(Model model){
  25. model.addAttribute("msg","这个是index.jsp页面");
  26. return "index";
  27. }
  28. }

运行tomcat,在浏览器输入地址就能看到了
image.pngimage.png

传参

普通传参

QueryStringForm Data方式都可以

默认传参

写一个控制器,test.jsp页面就显示这个msg参数

  1. @Controller
  2. public class RestFulController {
  3. @RequestMapping("/add/test1")
  4. public String test1(int a,int b , Model model){
  5. int res=a+b;
  6. model.addAttribute("msg","结果为"+res);
  7. return "test";
  8. }
  9. }

test1()方法的参数a,b就是请求要传的参数,前端参数名字不能错,要和java代码里面的参数一样。
image.png

@RequestParam

在参数前指定@RequestParam,取个名字,前段就用这个取得名字进行传参,前端传值最好都要加上这个,约定好习惯

  1. @Controller
  2. public class RestFulController {
  3. @GetMapping("/add/test1")
  4. public String test1(@RequestParam("a") int a, @RequestParam("a") int b , Model model){
  5. int res=a+b;
  6. model.addAttribute("msg","结果为"+res);
  7. return "test";
  8. }
  9. }

传参是一个对象

前端的参数名要和对象的属性名一致,如果不一致,要用@RequestParam

  1. package com.lyd.pojo;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. @Data
  6. @AllArgsConstructor
  7. @NoArgsConstructor
  8. public class User {
  9. private int id;
  10. private String name;
  11. private int age;
  12. }
  1. @Controller
  2. public class RestFulController {
  3. @GetMapping("/add/test1")
  4. public String test1(User user){
  5. System.out.println(user);
  6. return "test";
  7. }
  8. }

image.png
image.png

RESTful风格传参

  1. @Controller
  2. public class RestFulController {
  3. //用PathVariable注解放在参数前面,作为路径变量
  4. //这样就可以通过URL路径传参了,要在RequestMapping里面的路径上用{参数名},用/隔开参数与路径
  5. @RequestMapping("/add/test1/{a}/{b}")
  6. public String test1(@PathVariable int a, @PathVariable int b , Model model){
  7. int res=a+b;
  8. model.addAttribute("msg","结果为"+res);
  9. return "test";
  10. }
  11. }

这时候访问之前的地址就找不到了
image.png
用RESTful风格访问
image.png

请求方法Get,Post……

  1. @Controller
  2. public class RestFulController {
  3. //RequestMapping注解有多个参数,method参数可以指定求情方法
  4. @RequestMapping(name="/add/test1/{a}/{b}",method = RequestMethod.POST)
  5. public String test1(@PathVariable int a, @PathVariable int b , Model model){
  6. int res=a+b;
  7. model.addAttribute("msg","结果为"+res);
  8. return "test";
  9. }
  10. }

简便方式

  1. @Controller
  2. public class RestFulController {
  3. //@RequestMapping(name="/add/test1/{a}/{b}",method = RequestMethod.POST)
  4. //可以用下面这种拓展注解进行不同方法的请求
  5. @GetMapping("/add/test1/{a}/{b}")
  6. //@PostMapping("/add/test1/{a}/{b}")
  7. //@DeleteMapping("/add/test1/{a}/{b}")
  8. //每个请求方式都有一个对应的Mapping
  9. public String test1(@PathVariable int a, @PathVariable int b , Model model){
  10. int res=a+b;
  11. model.addAttribute("msg","结果为"+res);
  12. return "test";
  13. }
  14. }

返回参数给前端

如上代码,在方法形参加上一个参数,用这个参数就能携带东西到前端了,有如下三种类型可以选择

  • Model:精简版本,只有几个方法适合用于存储数据
  • ModelMap:继承了LinkedMap,除了实现自身的一些方法,同样的继承了LinkedMap的方法和特性
  • ModelAndView:可以在存储数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转

    Json传参

    接收json

    RequestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容。
    RequestBody的作用是将前端传来的json格式的数据转为自己定义好的javabean对象,需要注意的是传入数据的属性名称要和后端javabean中定义的一致。大小写都要一致
    1. @RequestMapping("/addbook")
    2. //加上@RequestBody注解表示,前端传过来的json值映射成这个对象,json值得键要和对象的属性名一致,大小写都要一致
    3. public int add(@RequestBody BookList booklist){
    4. return bookserv.addBook(booklist);
    5. }

    Jackson

    导依赖 ```xml com.fasterxml.jackson.core jackson-databind 2.13.1
  1. ```java
  2. package com.lyd.controller;
  3. import com.fasterxml.jackson.core.JsonProcessingException;
  4. import com.fasterxml.jackson.databind.ObjectMapper;
  5. import com.lyd.pojo.User;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import org.springframework.web.bind.annotation.ResponseBody;
  9. import org.springframework.web.bind.annotation.RestController;
  10. @RestController //这个注解表示这个类里面的所有方法都不走视图解析器,会全部返回字符串
  11. //@Controller
  12. @RequestMapping("/user")
  13. public class UserController {
  14. @RequestMapping("/ujson")
  15. //@ResponseBody //加了这个注解,这个方法就不会走视图解析器,会直接返回一个字符串
  16. public String json1() throws JsonProcessingException {
  17. User user =new User(1,"张三",34);
  18. //使用Jackson里面的方法把Java对象转换成json字符串
  19. ObjectMapper objm =new ObjectMapper();
  20. String jsonstr = objm.writeValueAsString(user);
  21. return jsonstr;
  22. }
  23. }

Fastjson

导依赖

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>fastjson</artifactId>
  4. <version>1.2.80</version>
  5. </dependency>
  1. @RestController //这个注解表示这个类里面的所有方法藕不走视图解析器,会全部返回一个字符串
  2. @RequestMapping("/user")
  3. public class UserController {
  4. @RequestMapping("/ujson")
  5. public String json1() throws JsonProcessingException {
  6. User user =new User(1,"张三",34);
  7. //JSON.parseXxxxx 此类方法就是把前段发过来的东西解析成xxx的
  8. return JSON.toJSONString(user);
  9. }
  10. }

Json乱码问题

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. https://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context
  9. https://www.springframework.org/schema/context/spring-context.xsd
  10. http://www.springframework.org/schema/mvc
  11. https://www.springframework.org/schema/mvc/spring-mvc.xsd">
  12. <!--自动扫描包,让指定包下的注解生效,由IOC容器统一管理-->
  13. <context:component-scan base-package="com.lyd.controller"/>
  14. <!--让SpringMVC不处理静态资源 .css .js .html .mp3 .mp4等-->
  15. <mvc:default-servlet-handler/>
  16. <!--
  17. 支持mvc注解驱动
  18. 在spring中一般采用@RequestMapping注解来完成映射关系
  19. 要想使@RequestMapping注解生效
  20. 必须向上下文中注册DefaultAnnotationHandlerMapping
  21. 和一个AnnotationMethodHandlerAdapter实例
  22. 这两个实例分别在类级别和方法级别处理
  23. 而annotation-driven配置帮助我们自动完成上述两个实例的注入
  24. -->
  25. <!--配置JSON乱码问题-->
  26. <mvc:annotation-driven>
  27. <mvc:message-converters>
  28. <bean class="org.springframework.http.converter.StringHttpMessageConverter">
  29. <constructor-arg value="UTF-8"/>
  30. </bean>
  31. <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
  32. <property name="objectMapper">
  33. <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
  34. <property name="failOnEmptyBeans" value="false"/>
  35. </bean>
  36. </property>
  37. </bean>
  38. </mvc:message-converters>
  39. </mvc:annotation-driven>
  40. <!--视图解析器-->
  41. <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
  42. <!--加上前后缀,就只用访问名字就行了,会主动拼接上前后缀的-->
  43. <!--前缀-->
  44. <property name="prefix" value="/WEB-INF/jsp/"/>
  45. <!--后缀-->
  46. <property name="suffix" value=".jsp"/>
  47. </bean>
  48. </beans>

上传文件

MultipartFile类型接收文件,前端传的文件名要和file对应,当然也可以写@RequestParam

  1. @RestController
  2. @RequestMapping("/upload")
  3. public class UploadController {
  4. @Autowired
  5. private UploadService uploadService;
  6. @PostMapping("")
  7. public ResponseResult upload(MultipartFile file){
  8. return uploadService.upload(file);
  9. }
  10. }

这个文件对象里面可以转换成流和字节数组等,方便操作。
image.png
前端上传请求头里面得包含
Content-Type:multipart/form-data;

重定向和转发

  1. @Controller
  2. public class RestFulController {
  3. @GetMapping("/add/test1/{a}/{b}")
  4. public String test1(@PathVariable int a, @PathVariable int b , Model model){
  5. int res=a+b;
  6. model.addAttribute("msg","结果为"+res);
  7. //默认转发
  8. //return "test";
  9. //重定向
  10. return "redirect:/index.jsp";
  11. }
  12. }

乱码问题

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  5. version="4.0">
  6. <!--配置DispatchServlet:这个是SpringMVC的核心,请求分发器,前端控制器-->
  7. <servlet>
  8. <servlet-name>springmvc</servlet-name>
  9. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  10. <!--DispatcherServlet要绑定Spring的配置文件-->
  11. <init-param>
  12. <param-name>contextConfigLocation</param-name>
  13. <param-value>classpath:springmvc-servlet.xml</param-value>
  14. </init-param>
  15. <!--启动级别:1.服务器一启动它就自己启动-->
  16. <load-on-startup>1</load-on-startup>
  17. </servlet>
  18. <!--
  19. 所有的请求都会去走上面的servlet
  20. 在SpringMVC中 /和/*的区别
  21. /:只会匹配所有的请求,不会去匹配jsp页面
  22. /*:匹配所有的请求,包括jsp
  23. 本来访问的是hello请求,springmvc会主动追加前缀和后缀,比如变成index/hello.jsp,
  24. 如果设置了/*,在 访问请求hello.jsp,然后又要被springmvc追加一个前后缀,hello.jsp.jsp
  25. -->
  26. <servlet-mapping>
  27. <servlet-name>springmvc</servlet-name>
  28. <url-pattern>/</url-pattern>
  29. </servlet-mapping>
  30. <!--配置SpingMVC的乱码过滤器-->
  31. <filter>
  32. <filter-name>encoding</filter-name>
  33. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  34. <init-param>
  35. <param-name>encoding</param-name>
  36. <param-value>utf-8</param-value>
  37. </init-param>
  38. </filter>
  39. <filter-mapping>
  40. <filter-name>encoding</filter-name>
  41. <url-pattern>/*</url-pattern>
  42. </filter-mapping>
  43. </web-app>

拦截器

拦截请求,当请求一个xxx地址时,如果配置了拦截器,请求会先被拦截器拦截,拦截器判断这个请求要不要通过,不通过的话,请求都到不了控制器。拦截器通过了才会到控制器。
新建一个java文件作为拦截器。
拦截器有HttpServletRequest和HttpServletResponse,可以做的事很多,比如登陆,在拦截器里面发现没有sessionid,就通过HttpServletResponse重定向到登陆页面

  1. package com.lyd.config;
  2. import org.springframework.lang.Nullable;
  3. import org.springframework.web.servlet.HandlerInterceptor;
  4. import org.springframework.web.servlet.ModelAndView;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. //需要实现HandlerInterceptor接口
  8. public class MyInterceptor implements HandlerInterceptor {
  9. //return true;执行下一个拦截器,放行
  10. //return false;不执行下一个拦截器
  11. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  12. System.out.println("==============拦截前============");
  13. return true;
  14. }
  15. public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
  16. System.out.println("==============拦截后============");
  17. }
  18. public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
  19. System.out.println("==============清理============");
  20. }
  21. }

配置spring配置里面的mvc拦截器

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:mvc="http://www.springframework.org/schema/mvc"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. https://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/mvc
  9. http://www.springframework.org/schema/mvc/spring-mvc.xsd
  10. http://www.springframework.org/schema/context
  11. https://www.springframework.org/schema/context/spring-context.xsd">
  12. <!--1.注解驱动,配置JSON乱码问题-->
  13. <mvc:annotation-driven>
  14. <mvc:message-converters>
  15. <bean class="org.springframework.http.converter.StringHttpMessageConverter">
  16. <constructor-arg value="UTF-8"/>
  17. </bean>
  18. <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
  19. <property name="objectMapper">
  20. <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
  21. <property name="failOnEmptyBeans" value="false"/>
  22. </bean>
  23. </property>
  24. </bean>
  25. </mvc:message-converters>
  26. </mvc:annotation-driven>
  27. <!--2.静态资源过滤-->
  28. <mvc:default-servlet-handler/>
  29. <!--3.扫描包-->
  30. <context:component-scan base-package="com.lyd.*"/>
  31. <!--4.视图解析器-->
  32. <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
  33. <!--加上前后缀,就只用访问名字就行了,会主动拼接上前后缀的-->
  34. <!--前缀-->
  35. <property name="prefix" value="/WEB-INF/jsp/"/>
  36. <!--后缀-->
  37. <property name="suffix" value=".jsp"/>
  38. </bean>
  39. <!--5.拦截器配置-->
  40. <mvc:interceptors>
  41. <mvc:interceptor>
  42. <!--包括这个请求下面的所有的请求-->
  43. <mvc:mapping path="/**"/>
  44. <!--配置写的拦截器-->
  45. <bean class="com.lyd.config.MyInterceptor"/>
  46. </mvc:interceptor>
  47. </mvc:interceptors>
  48. </beans>