Spring mvc是基于Spring的一个模块,专门做web开发,可以理解为是Servlet的升级
在Spring MVC框架当中,Controller替代Servlet担负控制器的职能,
M:模型层,指工程中的JavaBean,作用是处理数据
V:View 视图层指项目当中的html或jsp等页面,作用是与用户进程交互,展示数据
C:Contoller,控制层,指工程当中的servlet,作用是接受请求和响应数据
以最少的耦合协同工作,从而提高了应用的可拓展性和维护性
主要原因是想通过servlet-name作为纽带,将servlet-class和url-pattern构成联系,从而使URL映射到类servlet-class所指定的类中!
<?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>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:SpringMVC.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
其中的url-parttern是拦截相应地址,放到统一dispatcherServlet中并进行分发
后端中的
相当于位置,加不加.do都行,因为已经将请求拦截,这个相当于是分发的地址
SpringMVC的入门
1、搭建spring MVC
①:创建WEB工程,引入开发的jar包
②:具体的坐标如下
<!--版本锁定--> <properties> <spring.version>5.0.2.RELEASE</spring.version> </properties> <dependencies> <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> <!--SpringMVC--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!--servlet API--> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> <!--日志--> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> </dependencies>
③:添加web模块
④:配置DispatcheServlet
Spring MVC是基于原生的servlet,通过强大的前端控制器DispatcheServlet,对请求和响应进行统一处理。
Spring MVC的本质就是一个servlet,是对原生的servlet进行了封装。在以前我们浏览器的每一次请求都需要我们写一个对应的servlet,现在我们只需要将浏览器的请求和响应交给DispatcheServlet进行统一的处理。
<!‐‐配置前端控制器,对浏览器发送的请求进行统一处理‐‐> <servlet> <servlet‐name>dispatcherServlet</servlet‐name> <servlet‐class>org.springframework.web.servlet.DispatcherServlet</servlet‐class> <!‐‐加载springmvc.xml配置文件的位置和名称,配置的是Spring配置‐‐> <init‐param> <!--contextConfigLocation:上下文配置路径,固定值--> <param‐name>contextConfigLocation</param‐name> <!--classpath:类路径,值得是Java和resources文件夹--> <!--springmvc.xml:指的是配置文件的名称:需要配置springmvc.xml,在下面--> <param‐value>classpath:springmvc.xml</param‐value> </init‐param> <!‐‐配置启动加载‐‐> <load‐on‐startup>1</load‐on‐startup> </servlet> <servlet‐mapping> <servlet‐name>dispatcherServlet</servlet‐name> <url‐pattern>*.do</url‐pattern> </servlet‐mapping>
⑥:配置springmvc.xml
编写index.html页面
<html> <head> <meta charset="utf-8"> <title>入门程序</title> </head> <body> <h3>入门</h3><a href="/hello.do" >入门程序</a> </body> </html>
编写suc.html页面 INF/pages/suc.jsp
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>成功</title> </head> <body> <h3>入门成功了2...</h3> </body> </html>
编写Controller类和方法
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; // 把当前类交给IOC容器进行管理 @Controller public class HelloController { /** * 处理超链接发送出来的请求 * @return */ // 配置映射的配置 @RequestMapping(path = "/hello.do") public String sayHello(){ System.out.println("入门方法执行了2..."); // 跳转的JSP页面的路径,默认使用的是请求的转发 // return "/WEB‐INF/pages/suc.jsp"; // 配置了视图解析器后,写法 return "suc"; } }
编写springmvc.xml的配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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"> <!‐‐ 配置spring创建容器时要扫描的包 ‐‐> <context:component‐scan base‐package="cn.tx"></context:component‐scan> <!‐‐ 配置视图解析器 ‐‐> <!-- 定义跳转的文件的前后缀 ,视图模式配置--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> <property name="prefix" value="/html/" /> <property name="suffix" value=".html" /> </bean> <!-- 配置spring开启注解mvc的支持 默认就是开启的 ,要想让其他组件(不包含映射器、适配器、处理器)生效就必须需要配置了--> <mvc:annotation-driven></mvc:annotation-driven> </beans>