Spring MVC之DispatcherServlet_动力节点Java学院整理

Spring MVC之DispatcherServlet_动力节点Java学院整理

概述

Spring MVC 是 Spring Framework 的一个模块,它使用了模型-视图-控制器(MVC)架构模式,使 Web 架构上变得更加清晰。Spring MVC 需要一个前端控制器来作为入口点,这个控制器称为 DispatcherServlet

在本文中,我们将对 Spring MVC 的 DispatcherServlet 进行详细讲解。

DispatcherServlet 认识

DispatcherServlet 是 Spring MVC 的核心组件之一,是前置控制器,负责请求的转发、请求参数的解析和视图的渲染。它起到了桥梁的作用,将所有请求和处理分派给其他 Spring MVC 组件(例如处理器映射器和视图解析器)进行处理。

DispatcherServlet 原理

当客户端发来请求之后,DispatcherServlet 会按照指定的规则,将请求转发给对应的控制器进行处理,处理完成后再通过 ViewResolver 渲染结果视图,并将结果返回给客户端。

具体流程如下:

  1. 客户端发起请求,请求被 DispatcherServlet 捕获。
  2. DispatcherServlet 根据请求 URL 调用 HandlerMapping 获得匹配的处理器 Controller 以及处理器拦截器 HandlerInterceptor
  3. DispatcherServlet 调用 HandlerAdapter 执行处理器 Controller
  4. Controller 执行完毕后返回 ModelAndView
  5. DispatcherServlet 进行视图解析 ViewResolver,将结果视图渲染后返回给客户端。

DispatcherServlet 配置

在 Spring MVC 中配置 DispatcherServlet 主要有两种方式:

  1. 使用 web.xml 进行配置。
<web-app>
    <servlet>
        <servlet-name>dispatcherServletConfig</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/applicationContext-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcherServletConfig</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>
  1. 使用 Java 配置。
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.web.controller")
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        registry.viewResolver(viewResolver);
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

示例一:简单的 HelloWorld

  1. 创建一个名为 HelloWorldController.java 的类:
@Controller
public class HelloWorldController {

    @RequestMapping("/")
    public String hello() {
        return "hello";
    }
}
  1. 在 webapp/WEB-INF/views/ 目录下创建一个名为 hello.jsp 的 JSP 页面:
<!DOCTYPE html>
<html>
<head>
    <title>Hello World</title>
</head>
<body>
    <h2>Hello, World!</h2>
</body>
</html>
  1. 配置 DispatcherServlet。使用 Java 配置方式,在 WebConfig 类的 configureDefaultServletHandling() 方法中添加如下代码:
@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("hello");
}

访问 http://localhost:8080/ 将打印出 Hello, World!

示例二:数据传递

  1. 创建一个名为 DataModelController.java 的类:
@Controller
public class DataModelController {

    @RequestMapping("/user")
    public String userInfo(Map<String, Object> model) {
        User user = new User();
        user.setUsername("Alice");
        user.setAge(20);
        model.put("user", user);
        return "user";
    }
}
  1. 在 webapp/WEB-INF/views/ 目录下创建一个名为 user.jsp 的 JSP 页面:
<!DOCTYPE html>
<html>
<head>
    <title>User Info</title>
</head>
<body>
    <h2>User Info</h2>
    <ul>
        <li>Username: ${user.username}</li>
        <li>Age: ${user.age}</li>
    </ul>
</body>
</html>
  1. 配置 DispatcherServlet。使用 Java 配置方式,在 WebConfig 类的 configureDefaultServletHandling() 方法中添加如下代码:
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setPrefix("/WEB-INF/views/");
    viewResolver.setSuffix(".jsp");
    registry.viewResolver(viewResolver);
}

访问 http://localhost:8080/user 将打印出用户信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring MVC之DispatcherServlet_动力节点Java学院整理 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • 一文带你入门SpringMVC的配置与使用

    以下是关于“一文带你入门SpringMVC的配置与使用”的完整攻略,其中包含两个示例。 1. 前言 SpringMVC是一种常用的Java Web开发框架,它可以帮助开发者快速构建Web应用程序。本攻略将详细讲解SpringMVC的配置与使用,帮助读者快速入门SpringMVC框架。 2. SpringMVC的配置 以下是SpringMVC的配置步骤: 配置…

    Java 2023年5月16日
    00
  • JSP实现文件上传功能

    下面就是使用JSP实现文件上传功能的攻略。 1. 前置准备 在进行文件上传的操作时,需要使用到Web容器提供的Servlet API和一些第三方的类库,所以在开始实现前,需要进行一些前置准备。 1.1. 导入第三方类库 上传文件过程中,需要用到Apache的常用文件上传组件commons-fileupload,所以需要下载并导入到项目中。在项目中创建一个名叫…

    Java 2023年6月15日
    00
  • java Date获取年月日时分秒的实现方法

    获取当前时间 Java中的Date类可以获取当前系统时间,包含年月日时分秒等信息。获取当前时间的代码如下: import java.util.Date; public class DateUtils { public static void main(String[] args) { Date now = new Date(); System.out.pri…

    Java 2023年5月20日
    00
  • Java Apache Commons报错“ObjectNotFoundException”的原因与解决方法

    “BaseRuntimeException”是Java的Struts框架中的一个异常,通常由以下原因之一引起: 无效的操作:如果操作无效,则可能会出现此错误。在这种情况下,需要检查操作以解决此问题。 无效的配置:如果配置无效,则可能会出现此错误。在这种情况下,需要检查配置以解决此问题。 以下是两个实例: 例1 如果操作无效,则可以尝试检查操作以解决此问题。例…

    Java 2023年5月5日
    00
  • Tomcat配置必备的10个小技巧用法总结

    Tomcat配置必备的10个小技巧用法总结 Tomcat是一个常用的Java Web服务器,本文将介绍10个Tomcat配置小技巧,帮助优化Tomcat的性能和使用。 1. 调整Tomcat的内存使用 Tomcat启动时会分配一定的内存,可以通过JAVA_OPTS环境变量调整。例如,将最大内存设置为512MB,最小内存设置为128MB: export CAT…

    Java 2023年5月19日
    00
  • SpringBoot配置MyBatis-Plus实现增删查改

    下面我将详细讲解“SpringBoot配置MyBatis-Plus实现增删查改”的完整攻略。 步骤一:引入依赖 在pom.xml文件中添加MyBatis-Plus和MySQL的依赖: <dependencies> <dependency> <groupId>com.baomidou</groupId> <…

    Java 2023年5月20日
    00
  • java Spring 5 新特性函数式Web框架详细介绍

    Java Spring 5 新特性函数式Web框架详细介绍 什么是函数式Web框架? 在Spring 5中,引入了函数式编程范式来创建Web应用程序,这就是函数式Web框架。在传统的Web应用程序中,我们需要使用Controller类和XML文件来定义路由和处理程序,而函数式Web框架允许我们使用函数式编程范式来定义路由和处理程序。 为什么使用函数式Web框…

    Java 2023年5月19日
    00
  • SpringBoot集成整合JWT与Shiro流程详解

    下面是对于“SpringBoot集成整合JWT与Shiro流程详解”的完整攻略。 概述 在传统的Web应用中,我们通常采用用户名和密码进行身份认证,但这种方式很容易受到各种攻击,例如:暴力破解、钓鱼等。为了解决这些问题,我们可以采用JWT的方式进行身份认证,并使用Shiro进行授权管理。本文将详细介绍SpringBoot集成整合JWT与Shiro的流程。 J…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部