SpringMVC第一个程序学习(使用xml配置的方式搭建SpringMVC)
一、SpringMVC和Struts2对比
二、SpringMVC框架搭建
1.引入jar包,需要的jar包如图所示
spring中相关的jar包必须是同一个版本的
maven项目中,pom.xml配置:
<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>cn.py</groupId> <artifactId>springMvcHello1</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.0.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>5.0.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.0.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.0.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.0.2.RELEASE</version> </dependency> <!-- <dependency> --> <!-- <groupId>commons-logging</groupId> --> <!-- <artifactId>commons-logging</artifactId> --> <!-- <version>1.1.1</version> --> <!-- </dependency> --> </dependencies> <build> <finalName>base</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <target>1.8</target> <source>1.8</source> </configuration> </plugin> </plugins> </build> </project>
解释一下:
1. commons-logging包是spring中必须依赖的jar包,但是如果通过maven项目管理我们的jar包,maven已经帮助我们将这个包自动引入,所以我们不需要再手动引入此jar包,解释如下图
2. 这个项目中使用的事spring5,spring5默认是jdk8支持,所以,我们的pom.xml中加入了如下的配置
<build> <finalName>base</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <target>1.8</target> <source>1.8</source> </configuration> </plugin> </plugins> </build>
2.配置前端控制器
补充:这个引入的命名空间的版本,上图是4.0,但是我本地测试的时候,用4.0的时候,点击alt+/ 没有提示,但是我换成2.5版本之后,有提示;(servlet3.0之后,提倡用注解的方式配置)
3.创建mvc.xml配置文件(这种创建方式是不是只在sts开发环境中才有)
这种创建方式,自动创建的mvc.xml文件中,将命名空间自动引入
4. 编写HelloController类
这里创建的Controller必须要继承Controller接口,且必须要实现handleRequest方法;
补充:在web.xml中,配置mvc.xml中时,使用
<init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:mvc.xml</param-value> </init-param>
其中,param-name的值必须为contextConfigLocation;param-value的值classpath:mvc.xml,这个classpath代表的是在src-main-resources资源目录中查找;
web项目的目录结构:(这里不理解会是个坑)
3. 总结:
4. 填坑:
<load-on-startup>1</load-on-startup>:在Tomcat启动的时候就初始化SpringMVC容器;这个值越低越优先启动
<url-pattern>/</url-pattern>:不能写成/*,可写成*.do
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:mvc.xml</param-value>
</init-param>:初始化参数,告诉DispatcherServlet去哪里找配置文件;如果不写这个配置,系统会报错,会有一个默认的路径,会到WEB-INF路径下寻找,名字默认为:<servlet-name>元素文本内容-servlet.xml文件