SpringMVC的介绍与第一个程序的开发步骤
1. 介绍
SpringMVC是一个实现了MVC架构模式的Web框架,底层基于Servlet实现。
SpringMVC已经将MVC架构模式实现了,因此只要我们是基于SpringMVC框架写代码,编写的程序就是符合MVC架构模式的。(MVC的架子搭好了,我们只需要添添补补)
SpringMVC帮我们做了什么
SpringMVC框架帮我们做了什么,与纯粹的Servlet开发有什么区别?
- 入口控制:
SpringMVC框架通过DispatcherServlet作为入口控制器,负责接收请求和分发请求。
而在Servlet开发中,需要自己编写Servlet程序,并在web.xml中进行配置,才能接受和处理请求。 - 在SpringMVC中,
表单提交时可以自动将表单数据绑定到相应的JavaBean对象中,只需要在控制器方法的参数列表中声明该JavaBean对象即可,无需手动获取和赋值表单数据。
而在纯粹的Servlet开发中,这些都是需要自己手动完成的。 - IoC容器:
SpringMVC框架通过IoC容器管理对象,只需要在配置文件中进行相应的配置即可获取实例对象
,而在Servlet开发中需要手动创建对象实例。 - 统一处理请求:
SpringMVC框架提供了拦截器、异常处理器等统一处理请求的机制,并且可以灵活地配置这些处理器。
而在Servlet开发中,需要自行编写过滤器、异常处理器等,增加了代码的复杂度和开发难度。 - 视图解析:
SpringMVC框架提供了多种视图模板,如JSP、Freemarker、Velocity等,并且支持国际化、主题等特性。
而在Servlet开发中需要手动处理视图层,增加了代码的复杂度。
总之,与Servlet开发相比,SpringMVC框架可以帮我们节省很多时间和精力,减少代码的复杂度,更加专注于业务开发。同时,也提供了更多的功能和扩展性,可以更好地满足企业级应用的开发需求。
2. 创建第一个SpringMVC程序
下面仅以最基础的程序创建步骤作为示例,并且使用清晰的语言说明过程:
步骤 1: 创建项目
- 打开 IDEA 或 Eclipse,新建一个 Maven Web 项目。
- 引入 SpringMVC 的依赖,在
pom.xml
中添加:<!-- 打包方式--><packaging>war</packaging><!-- 依赖--><!-- 依赖 --><dependencies><!-- Spring MVC 依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.1.4</version></dependency><!-- Logback 依赖 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.5.3</version></dependency><!-- Servlet API 依赖 --><dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>6.0.0</version><!-- 指定该依赖的范围,provided表示这三个依赖由第三方容器来提供--><!-- 打包war包的时候,这个依赖不会打入war包类。因为这个依赖由其他容器来提供--><scope>provided</scope></dependency><!-- Thymeleaf 和 Spring6 整合的依赖 --><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring6</artifactId><version>3.1.2.RELEASE</version></dependency></dependencies>
步骤 2: 配置 SpringMVC
- 在
webapp/WEB-INF
目录下创建springmvc.xml
,设置配置文件,配置控制器和路由配置:
<!-- 组件扫描 --><context:component-scan base-package="Springmvc.Controller"/><!-- 静态资源的映射 --><!-- <mvc:resources mapping="/static/**" location="/static/"/>--><!-- 视图解析器 --><bean id="thymeleafViewResolver" class="org.thymeleaf.spring6.view.ThymeleafViewResolver"><!-- 作用于视图渲染的过程中,可以设置视图渲染后输出时采用的编码字符集 --><property name="characterEncoding" value="UTF-8"/><!-- 如果配置多个视图解析器,它来决定优先使用哪个视图解析器,它的值越小优先级越高 --><property name="order" value="1"/><!-- 当 ThymeleafViewResolver 渲染模板时,会使用该模板引擎来解析、编译和渲染模板 --><property name="templateEngine"><bean class="org.thymeleaf.spring6.SpringTemplateEngine"><!-- 用于指定 Thymeleaf 模板引擎使用的模板解析器。模板解析器负责根据模板位置、模板资源名称、文件编码等信息,加载模板并对其进行解析 --><property name="templateResolver">![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4be0fbe97bb340ac8fe8be205e154a78.png)<bean class="org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver"><!-- 设置模板文件的位置(前缀) --><property name="prefix" value="/WEB-INF/templates/"/><!-- 设置模板文件后缀(后缀),Thymeleaf文件扩展名不一定是html,也可以是其他,例如txt,大部分都是html --><property name="suffix" value=".html"/><!-- 设置模板类型,例如:HTML,TEXT,JAVASCRIPT,CSS等 --><property name="templateMode" value="HTML"/><!-- 用于模板文件在读取和解析过程中采用的编码字符集 --><property name="characterEncoding" value="UTF-8"/></bean></property></bean></property></bean>
步骤 3: 配置网页渲染器和控制器
- 在
web.xml
中配置 SpringMVC 的 DispatcherServlet:<!--前端控制器--><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--通过初始化参数来指定springmvc配置文件的路径和名字。--><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/springmvc.xml</param-value></init-param><!--在服务器启动的时候初始化DispatcherServlet,提高第一次访问的效率--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern> <!--/表示除了.jsp的请求路径之外,其他请求都能匹配 --></servlet-mapping>
步骤 4: 创建控制器
- 在
Springmvc.Controller
包中新建一个 Java 类,例如FirstController
,并使用@Controller
和@RequestMapping
注解:package Springmvc.Controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class FirstController {@RequestMapping("/test")public String toRegisterPage(){// 处理业务逻辑return "first";}@RequestMapping("/love")public String lovePage(){// 处理业务逻辑return "love";}@RequestMapping("/")public String indexPage(){// 处理业务逻辑return "index";}}
步骤 5: 运行项目
- 启动 Tomcat 服务器,进入网页地址:
http://localhost:8080/your_project_name/test