首页 > 其他分享 >SpringMVC快速入门与详解

SpringMVC快速入门与详解

时间:2023-03-25 17:44:24浏览次数:30  
标签:控制器 入门 SpringMVC 前端 视图 详解 处理器 DispatcherServlet

一、SpringMVC简介

1. 概念

 Spring MVC 是一种基于 Java 的实现 MVC 设计模式的 Web 框架,该框架通过将 Web 应用程序划分为模型、视图和控制器来简化 Web 应用程序的开发。Spring MVC 通过基于注解或 XML 配置的方式实现 Web 控制器,使得开发者能够更加灵活地定制和控制 Web 应用程序的行为和外观。

2. 核心组件

 Spring MVC 的核心组件包括:前端控制器(DispatcherServlet)、处理器映射器(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)以及处理器(Controller)等。在 Spring MVC 中,用户发送的请求首先会被前端控制器接收,并根据配置文件中定义的处理器映射器来找到相应的处理器,然后由处理器适配器对处理器进行适配,并将处理结果返回给前端控制器。最后,前端控制器根据配置文件中定义的视图解析器将处理结果解析成相应的视图并返回给用户。

Spring MVC 的生命周期主要包括以下阶段:

  • 前端控制器的初始化:前端控制器(DispatcherServlet)在容器启动时进行初始化,通过加载配置文件来获取 HandlerMapping、HandlerAdapter、ViewResolver 等组件,并对它们进行初始化。

  • 请求的接收和处理:当用户发送请求时,请求首先被前端控制器(DispatcherServlet)接收。前端控制器将请求转发给处理器映射器(HandlerMapping)进行处理器映射,找到与请求相匹配的处理器(Controller)。

  • 处理器适配器的调用:前端控制器通过处理器适配器(HandlerAdapter)对处理器进行适配,将请求信息传递给处理器,并调用处理器的相应方法进行处理。

  • 视图解析器的解析:处理器将处理结果返回给前端控制器,前端控制器通过视图解析器(ViewResolver)将处理结果解析成相应的视图,并返回给用户。

  • 视图的渲染:前端控制器将解析出的视图返回给用户,用户可以看到相应的页面效果。

  • 后置处理器的执行:在整个处理过程中,Spring MVC 还提供了一些后置处理器(例如拦截器),这些后置处理器可以在请求的各个阶段进行拦截并进行一些自定义的处理。

  • 前端控制器的销毁:当 Web 应用程序关闭时,前端控制器会被销毁,同时会调用处理器适配器、处理器、视图解析器等组件的销毁方法。

二、使用步骤

  1. 引入SpringMVC相关依赖包
    在Maven项目中,可以通过添加以下依赖项来引入SpringMVC:
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
</dependency>
  1. 配置SpringMVC的DispatcherServlet
    在web.xml中配置DispatcherServlet,将所有请求转发到SpringMVC中:
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-mvc-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

  1. 配置SpringMVC的上下文
    在spring-mvc-config.xml中配置SpringMVC的上下文,包括视图解析器、控制器、拦截器等。
  2. 编写控制器
    编写控制器类,处理请求并返回响应:
@Controller
public class HelloWorldController {

    @RequestMapping(value = "/hello")
    public ModelAndView helloWorld() {
        ModelAndView mav = new ModelAndView("hello");
        mav.addObject("message", "Hello World!");
        return mav;
    }

}
  1. 编写视图
    在webapp/WEB-INF/views目录下,编写JSP视图:

  2. 运行程序
    启动Web服务器,并在浏览器中访问http://localhost:8080/hello,即可看到Hello World页面。

三、示例

  1. 在 web.xml 文件中配置 DispatcherServlet:
<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-mvc.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>

  1. 在 /WEB-INF/spring-mvc.xml 文件中配置 SpringMVC:
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <context:component-scan base-package="com.example.controller"/>

    <mvc:annotation-driven/>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>
  1. 创建一个简单的 Controller:
@Controller
@RequestMapping("/")
public class HelloController {

    @GetMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello World!");
        return "hello";
    }

}
  1. 在 /WEB-INF/views/hello.jsp 中创建视图:
  2. 最后在浏览器中访问 http://localhost:8080/hello 即可看到 "Hello World" 字样的页面

标签:控制器,入门,SpringMVC,前端,视图,详解,处理器,DispatcherServlet
From: https://www.cnblogs.com/arek/p/17255230.html

相关文章

  • MongDB语法与快速入门
    一、MongDB简介1.概念 MongoDB是一个开源的文档型NoSQL数据库,它支持的数据模型是面向文档的,使用了类似JSON的BSON(二进制JSON)格式来存储数据,且提供了动态查询和索引功能......
  • Kafka快速使用与详解
    一、Kafka简介1.概念 Kafka是一个分布式的、基于发布/订阅的消息队列,最初由LinkedIn开发,并于2011年成为Apache项目的一部分。Kafka具有高吞吐量、可扩展性、持久性和容......
  • Nginx快速入门与详解
    一、Nginx简介1.概念 Nginx是一款高性能的HTTP和反向代理服务器,常用于静态资源的访问、负载均衡、HTTP缓存和反向代理等。以下是Nginx的常用功能和配置介绍:以下是常用......
  • Oracle入门6(plsql语言)
    游标,触发器,plsql存储过程,存储函数,包plsql编程语言--普通用户需要获取编程权限grantcreateprocedureto用户名;grantexecuteanyprocedureto用户名;grant......
  • 【入门】Go语言常量详解
    1、什么是常量?程序运行期间不可以变的量使用const定义不能修改常量的值不能打印常量的地址常量在定义时候必须赋值2、常量于变量的区别?变量的值是可以变的,常量......
  • Zookeeper快速使用与详解
    一、Zookeeper简介1.概念 Zookeeper是一个开源的分布式协调服务,用于管理大型集群中的资源、配置信息和命名服务等;也是一个高性能的、可靠的、分布式的、开放源代码的协......
  • 【入门】Go语言变量详解
    目录一、变量赋值的几种方式1.1声明单个变量1.2声明多个变量1.3初始化变量1.4变量赋值1.5自动推导类型方式声明变量二、输出输入格式控制2.1输出格式2.1输入格式2.3......
  • linux三剑客之grep详解
    1.什么是Grepgrep(GolobalRegularExpressionprint)是Linux系统中一个强大的文本搜索工具,也是俗称的搜索三兄弟之一,其他两个是awk和sed,grep可以把搜索到的内容打印到屏......
  • MySQl学习(从入门到精通11)
    https://blog.csdn.net/qq_42055933/article/details/128935615?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~AD_ESQUERY~ylj......
  • dos从入门到菜鸟
    第一章 批处理基础第一节、常用批处理内部命令简介批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD。这些命......