springmvc知识点总结
什么是springmvc
Spring家族中应用于Web应用的一个模块,是Spring提供的一个基于MVC设计模式的Web开发框架,可以将它理解为Servlet。在MVC模式中,Spring MVC作为控制器(Controller)来建立模型与视图的数据交互,是结构最清晰的JSP Model2实现,可以说是一个典型的MVC框架。
除此之外,Spring MVC框架采用松耦合、可插拔的组件结构,具有高度可配置性,比起其他的MVC框架更具有扩展性和灵活性。并且它本身就是Spring家族的一部分,与Spring框架整合更是天衣无缝。
在Spring MVC框架中,Controller替换Servlet来担负控制器的职责。Controller接收请求,调用相应的Model进行处理,Model处理完之后将结果返回给Controller,Conreoller再指派相应的View对处理结果进行渲染,最终响应给客户端进行展示。
springmvc的好处
DispatcherServlet必须能做如下事情
- 根据URI调用相应的action.
- 实例化正确的控制器类。
- 根据请求参数值来构造表单bean。
- 调用控制器对象的相应方法。
- 转向到一个视图(JSP 页面)。
Spring MVC是一个包含 了Dispatcher servlet 的MVC框架。它调用控制器方法并转发到视图。这是使用Spring MVC的第一个好处: 不需要编写Dispatcher servlet.以下是Spring MVC具有的能加速开发的功能列表。
- Spring MVC中提供了一个Dispatcher Servlet,无需额外开发。
- Spring MVC中使用基于XML的配置文件,可以编辑,而无需重新编译应用程序。
- Spring MVC实例化控制器,并根据用户输入来构造bean。
- Spring MVC可以自动绑定用户输入,并正确地转换数据类型。例如,Spring MVC能自动解析字符串,并设置float或decimal类型的属性。
- Spring MVC可以校验用户输入,若校验不通过,则重定向回输入表单。输入校验是可选的,支持编程方式以及声明。关于这一点,Spring MVC内置了常见的校验器。
- Spring MVC是Spring框架的一部分。 可以利用Spring提供的其他能力。
- Spring MVC支持国际化和本地化。支持根据用户区域显示多国语言。
- Spring MVC支持多种视图技术。最常见的JSP技术以及其他技术包括Velocity 和FreeMarker。
IDEA中创建一个简单的springMVC工程
1:用maven创建项目
在maven下载插件的过程中非常浪费时间,我们可以增加一个参数来进行优化:
archetypeCatalog internal
2:配置pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.suda</groupId>
<artifactId>UserManagement</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>UserManagement Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!--版本锁定-->
<spring.version>5.2.5.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${
spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${
spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${
spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${
spring.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>UserManagement</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>