1、pom.xml
XML<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-web-api</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies>
2、Schedule.java
javapackage com.atguigu.schedule.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor @AllArgsConstructor public class Schedule { private Integer id; private String title; private boolean completed; }
3、web.xml
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>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
4、springmvc.xml
XML<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="com.atguigu.schedule"/> <mvc:default-servlet-handler/> <mvc:annotation-driven/> </beans>
5、ScheduleController.java
javapackage com.atguigu.schedule; import com.atguigu.schedule.controller.Result; import com.atguigu.schedule.service.ScheduleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/schedule") public class ScheduleController { @Autowired private ScheduleService scheduleService; @GetMapping public Result list() { return Result.ok(scheduleService.getScheduleList()); } }
6、Result.java
javapackage com.atguigu.schedule.controller; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor @AllArgsConstructor public class Result { private Integer code; private boolean flag; private Object data; private String msg; public static Result ok(Object data) { Result result = new Result(); result.setFlag(true); result.setCode(200); result.setData(data); return result; } }
7、ScheduleService.java
javapackage com.atguigu.schedule.service; import com.atguigu.schedule.pojo.Schedule; import java.util.List; public interface ScheduleService { List<Schedule> getScheduleList(); }
8、ScheduleServiceImpl.java
javapackage com.atguigu.schedule.service.impl; import com.atguigu.schedule.pojo.Schedule; import com.atguigu.schedule.service.ScheduleService; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Service public class ScheduleServiceImpl implements ScheduleService { //准备假数据 private static Map<Integer,Schedule> scheduleMap; private static int maxId = 5; static { scheduleMap = new HashMap<>(); Schedule schedule = null; schedule = new Schedule(1, "学习Java", false); scheduleMap.put(1, schedule); schedule = new Schedule(2, "学习H5", true); scheduleMap.put(2, schedule); schedule = new Schedule(3, "学习Css", false); scheduleMap.put(3, schedule); schedule = new Schedule(4, "学习JavaScript", false); scheduleMap.put(4, schedule); schedule = new Schedule(5, "学习Spring", true); scheduleMap.put(5, schedule); } @Override public List<Schedule> getScheduleList() { return new ArrayList<>(scheduleMap.values()); } }
9、<mvc:default-servlet-handler>
<mvc:default-servlet-handler/>
是Spring MVC框架中的一个标签,它的主要作用是将所有静态资源的请求,如HTML、CSS、JavaScript文件、图片等,都交给默认的Servlet处理器(通常是Tomcat、Jetty等Web服务器自带的默认Servlet)来处理。这个标签在Spring MVC的配置文件中使用,其主要的目的是为了解决静态资源的访问问题。在一个基于Spring MVC的Web应用程序中,所有的请求默认都会被Spring MVC的DispatcherServlet截获并处理。然而,对于静态资源的请求,我们通常不需要Spring MVC进行任何处理,而是直接交给Web服务器来处理即可。这样可以提高静态资源的访问效率,减轻Spring MVC的处理负担。
当在Spring MVC的配置文件中添加了
<mvc:default-servlet-handler/>
标签后,Spring MVC会自动将所有静态资源的请求转发给默认的Servlet处理器处理。这意味着,当你在浏览器中请求一个静态资源时,Spring MVC不会对该请求进行任何处理,而是直接将该请求转发给Web服务器默认的Servlet处理器来处理。这样,你就可以在Web应用程序中直接访问静态资源了,而不需要任何额外的配置。总之,
<mvc:default-servlet-handler/>
标签是Spring MVC中一个非常有用的配置工具,它可以帮助开发人员解决静态资源的访问问题,提高Web应用程序的性能和效率。
<mvc:default-servlet-handler/>
是Spring MVC中的一个标签,用于配置默认的Servlet处理器。当Spring MVC无法找到与请求相匹配的处理器时,该标签可以指定一个默认的Servlet来处理请求。该标签通常在Spring MVC的配置文件中使用,用于配置默认的Servlet处理器。下面是一个示例配置:
在上面的示例中,`<mvc:default-servlet-handler/>`标签没有指定任何属性,它只是简单地启用默认的Servlet处理器。当Spring MVC无法找到与请求相匹配的处理器时,它会使用默认的Servlet来处理请求。
需要注意的是,
<mvc:default-servlet-handler/>
标签只适用于基于Servlet的部署环境,例如在Web应用程序中使用Servlet容器(如Tomcat)进行部署。在基于Spring Boot的部署环境中,通常不需要使用该标签,因为Spring Boot会自动配置默认的Servlet处理器。此外,如果你需要更细粒度的控制,可以通过实现
HandlerInterceptor
接口或使用其他拦截器来拦截请求并自定义处理逻辑。`<mvc:default-servlet-handler/>` 是 Spring MVC 中的一个配置标签,它的作用是将请求转发到 Servlet 容器的默认 Servlet,通常用于处理静态资源(如:图片、CSS、JavaScript 等)。
在 Spring MVC 中,DispatcherServlet 默认会处理所有请求,并将请求分发给相应的处理器(Controller)进行处理。但对于一些静态资源,由于这些资源不需要经过 Spring MVC 的处理,因此可以直接由 Servlet 容器(如:Tomcat)提供支持。
在使用 `<mvc:default-servlet-handler/>` 标签后,Spring MVC 框架会自动将所有未被处理的请求转发给 Servlet 容器的默认 Servlet 进行处理。这可以提高性能,避免不必要的处理和请求转发。
<mvc:default-servlet-handler/>
是Spring MVC中的一个标签,用于配置默认的Servlet处理器。它可以将未匹配到其他处理器的请求交给默认的Servlet处理器处理。使用
<mvc:default-servlet-handler/>
标签时,可以指定以下属性:
location
:指定默认Servlet处理器的位置,即Servlet的URL映射路径。servlet-name
:指定默认Servlet处理器的Servlet名称。servlet-class
:指定默认Servlet处理器的Servlet类名。下面是一个使用
<mvc:default-servlet-handler/>
标签的示例:
XML<mvc:default-servlet-handler/>
上述配置将启用默认的Servlet处理器,并将未匹配到其他处理器的请求交给默认的Servlet处理器处理。默认Servlet处理器的位置为根路径("/"),可以使用`location`属性进行修改。
<mvc:default-servlet-handler/> 用于配置一个用于处理静态资源(如图像、CSS、JavaScript 等)的默认 Servlet。当 DispatcherServlet 接收到一个请求并且无法匹配到控制器时,它会将该请求转发给默认 Servlet 进行处理。此标签还可以指定默认 Servlet 处理的请求路径前缀。
通常,我们会将静态资源放到 Web 应用程序的 WEB-INF 目录之外,这些资源可以被客户端直接访问。但是,在使用 Spring MVC 框架时,我们需要通过控制器来处理这些请求,这样会增加控制器的负担。
使用 <mvc:default-servlet-handler/> 可以避免这种情况,即当 DispatcherServlet 接收到静态资源的请求时,请求将直接转发给默认 Servlet 处理。这样,就可以减轻控制器的负担,使应用程序更加高效、稳定。
<mvc:default-servlet-handler/>标签用于将所有请求都映射到默认的Servlet上,这个Servlet通常是Web容器中的默认Servlet,即tomcat中的org.apache.catalina.servlets.DefaultServlet。当请求中的路径没有被映射到其他任何处理程序时,它将被传递给默认的Servlet进行处理。通常情况下,如果没有使用<mvc:default-servlet-handler/>标签,如果请求中的路径没有被映射到任何处理程序,将返回404错误。因此,使用<mvc:default-servlet-handler/>标签可以确保在请求中的路径没有被映射到其他处理程序时,仍能够响应请求,使应用程序更加健壮和完整。