🧸安清h:个人主页
🎥个人专栏:【计算机网络】【Mybatis篇】【Spring篇】
🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。
目录
🎯Spring MVC概述
🚦Spring MVC的核心特点
🎯Spring MVC入门程序
🚦创建项目
编辑 🚦引入Maven依赖
编辑 🚦配置前端服务器
🚦配置处理器映射信息和视图解析器
🚦创建处理器
🚦创建视图页面
🎯SpringMVC的核心类
🎯Spring MVC概述
Spring MVC是一个基于Java的实现了MVC(Model-View-Controller)设计模式的Web框架。它是Spring框架的一部分,专门用于构建Web应用程序。Spring MVC通过将应用程序分离成模型(Model)、视图(View)和控制器(Controller)三个核心组件,来帮助开发者构建可维护、可测试的Web应用程序。
🚦Spring MVC的核心特点
自动配置:在Spring Boot中,Spring MVC可以自动配置,大大简化了配置工作。
内容协商:Spring MVC支持内容协商,可以根据客户端的请求头来决定返回的数据格式,如JSON或XML。
模板引擎支持:Spring MVC支持多种模板引擎,如Thymeleaf、FreeMarker等,可以方便地生成动态内容。
过滤器支持:Spring MVC可以与Servlet过滤器(Filter)集成,提供额外的请求处理能力。
响应体和请求体处理:Spring MVC提供了
@ResponseBody
和@RequestBody
注解,可以轻松处理HTTP请求和响应的正文。依赖注入:Spring MVC支持依赖注入(DI),可以轻松地将Spring管理的bean注入到控制器中。
轻量级:Spring MVC是一个轻量级的Web框架,它的核心库只包含实现MVC模式所需的最小集合。
强大的数据绑定:Spring MVC提供了强大的数据绑定机制,可以自动将请求参数绑定到控制器方法的参数上。
🎯Spring MVC入门程序
🚦创建项目
新建一个项目:
点击左上角File->Project Structure->Modules,点左上角‘+’,出现以下界面:
点击图中标红框的Web标签,点击铅笔后出现以下界面:
将路径修改为src\main\webapp\WEB-INF\web.xml,修改后点击OK:
然后在该界面的下方找到Web Resource Directory,同样点击小铅笔,将路径改为src\main\webapp:
点击OK后,创建项目成功,项目的目录结构如下图:
🚦引入Maven依赖
<packaging>war</packaging><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.8.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.8.RELEASE</version></dependency><!-- 日志 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.5.6</version><scope>test</scope></dependency><!-- servlet依赖 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!-- JSP--><dependency><groupId>javax.servlet</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency>
<!-- SPring5和Thymeleaf整合包--><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>3.0.11.RELEASE</version></dependency></dependencies>
<!-- 以插件的形式配置tomcat服务器--><build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8080</port> <!-- 端口号--><path>/SpringMvcTest</path> <!-- 路径,以/开头--></configuration></plugin></plugins></build>
点击上方菜单栏的Run->Edit Configurations,出现以下界面,点击左上角的“+”,下拉选择Maven:
在Working directory输入项目在本地的路径,Command line中输入tomcat7:run,在此让项目在Tomcat中运行:
🚦配置前端服务器
Spring MVC通过前端控制器拦截客户端的请求并进行转发。
在以下代码中的<servlet-class>中的部分,可以通过项目目录打开External Libraries->找到webmvc->打开spring-webmvc->打开web.servlet->找到DispatcherServlet->右键Copy Reference
在web.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">
<!-- 配置SpringMVC前端控制器,对浏览器发送的请求进行统一处理--><servlet><servlet-name>SpringMVC_Test01</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置SpringMVC文件的位置和名称--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><!-- 将前端控制器DispatcherServlet的初始化时间提前到服务器启动时--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>SpringMVC_Test01</servlet-name>
<!-- 如果是/*,服务器内部跳转jsp的过程会被DispatcherServlet解析,当作Controller处理,所以使用/--><!-- 设置springMVC的核心控制器所能处理的请求的请求路径,/所匹配的请求可以是.html或.js或.css方式的请求路径,匹配不了.jsp请求路径的请求。/*代表的是所有请求--><url-pattern>/</url-pattern></servlet-mapping>
</web-app>
🚦配置处理器映射信息和视图解析器
在resources文件夹下创建Spring MVC的配置文件spring-mvc.xml,具体代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--配置Spring MVC要扫描的包--><context:component-scan base-package="com.haust.controller"/><!-- 配置视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 前缀 --><property name="prefix" value="/WEB-INF/config/"/><!-- 后缀 --><property name="suffix" value=".jsp"/></bean>
</beans>
🚦创建处理器
在com.haust.controller包中创建FirstController类,用于处理客户端的请求并指定响应时跳转的页面,具体代码如下:
@Controller
public class FirstController {@RequestMapping("/")public String sayHello(){System.out.println("访问到FirstController");return "welcome";}
}
🚦创建视图页面
在webapp中的WEB-INF中新建包config,在包中新建文件welcome.jsp,具体代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h2>Welcome</h2>
</body>
</html>
以上操作完成后,运行后的浏览器的跳转页面为:
🎯SpringMVC的核心类
DispatcherServlet是SpringMVC的核心类,也称为SpringMVC的前端控制器,可以拦截客户端的请求,它的本质上是一个Servlet,可以在文件web.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>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 配置SpringMVC配置文件的位置和名称--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><!-- 将前端控制器DispatcherServlet的初始化时间提前到服务器启动时--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><!-- 设置springMVC的核心控制器所能处理的请求的请求路径,/所匹配的请求可以是.html或.js或.css方式的请求路径,匹配不了.jsp请求路径的请求。/*代表的是所有请求--><url-pattern>/</url-pattern></servlet-mapping>
</web-app>
以上就是本期介绍的全部内容了,主要是关于初始SpringMVC。如果您感兴趣的话,可以订阅我的相关专栏。非常感谢您的阅读,如果这篇文章对您有帮助,那将是我的荣幸。我们下期再见啦🧸!