spring-webmvc练习-日程管理-后端展示日程列表功能实现

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

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 复制代码
<?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

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

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

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

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

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

相关推荐
丁总学Java10 个月前
spring-webmvc数据校验
max·min·email·springwebmvc·length·艾特符号validated·bindingresult
丁总学Java10 个月前
spring-webmvc练习-日程管理-修改功能实现以及增加新增按钮
object.assign·timeout·springwebmvc·axios.create·request.get·request.put·baseurl
丁总学Java10 个月前
spring-webmvc文件下载
servletcontext·springwebmvc·responseentity·byte[]·inputstream·httpheaders·attachment
丁总学Java10 个月前
spring-webmvc练习-日程管理-实现删除日程功能
element-plus·object.assign·springwebmvc·request.get·request.put·request.post·request.delete
丁总学Java10 个月前
spring-webmvc练习-日程管理-新增日程功能
object.assign·timeout·springwebmvc·axios.create·request.get·request.put·request.post