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">
<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; @Controller public 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