本文介绍: 是Spring MVC框架中的一个标签,它的主要作用是将所有静态资源的请求,如HTML、CSS、JavaScript文件、图片等,都交给默认的Servlet处理器(通常是Tomcat、Jetty等Web服务器自带的默认Servlet)来处理。

1、pom.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

package 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 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 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

package 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

package 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

package com.atguigu.schedule.service;
import com.atguigu.schedule.pojo.Schedule;
import java.util.List;
public interface ScheduleService {
    List<Schedule> getScheduleList();
}

8、ScheduleServiceImpl.java

package 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/>标签的示例:

        

<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/>标签可以确保在请求中的路径没有被映射到其他处理程序时,仍能够响应请求,使应用程序更加健壮和完整。

原文地址:https://blog.csdn.net/m0_65152767/article/details/134628101

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_236.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注