为什么要使用SpringMVC?
SpringMVC作为SSM三剑客中的一个S,其盛行有着以下几方面原因:
- Struts2的没落。
在SSM之前,我们经常说SSH - Struts2、Spring、Hibernate;而现在谈SSM,是指SpringMVC、Spring、MyBatis。SpringMVC是活生生的把Struts2挤下了神坛。Struts2没落的原因有很多,有其重大安全漏洞导致的客户流失,也有框架使用繁琐不适合当代快速开发趋势的原因。 - 与Spring的血缘关系。
SpringMVC与Spring之间有着天然的血缘关系,因此SpringMVC与Spring的结合更紧密,兼容性更好,整合也更容易。 - 开发更高效。
当代程序语言除了“拼性能”外,还要“拼优美”。SpringMVC相较于Struts2而言其程序架构更加优美,开发时代码也更加优美。
说了这么多,还是让我们写一个最简单的SpringMVC程序,看看他的优美之处在哪里?
撰写第一个SpringMVC程序
第一步:添加依赖。
我们依然是基于Maven开发,运行SpringMVC程序的最小依赖如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
这个不用记忆,固定模式。
第二步:配置web.xml
然后配置下WEB-INF目录下的web.xml,这些内容也不用记忆,也是固定模式。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
第三步:编写Controller
创建Controller包,并在下面建立UserController.java
扫盲一下:
struts和SpringMVC本质上都是对Java Servlet功能的封装和集成。
struts2地址习惯以.action结尾,控制器名字习惯以XxxAction方式命名。
SpringMVC地址习惯以.do结尾,控制器名字习惯以XxxController方式命名。
package com.royotech.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller //作用:将当前类的对象交给Spring工厂创建
@RequestMapping("user") //请求路径
public class UserController {
@RequestMapping("select") //请求路径
public String select() {
return "forward:/list.jsp"; //forward转发到的位置
}
}
第四步:配置mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置SpringMVC启用注解,哪个包下的内容要使用SpringMVC,就在这里写哪个包的位置 -->
<context:component-scan base-package="com.royotech.controller"></context:component-scan>
</beans>
第五步:大功告成,测试一下!
新建userController跳转到的list.jsp文件:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Welcome!</title>
</head>
<body>
Hello!SpringMVC!
</body>
</html>
在浏览器中输入:
http://localhost:8080/JAVA_ALL/user/select.do
注意:
- JAVA_ALL是项目名称,区分大小写。
- SpringMVC的Controller默认以.do结尾,不加.do访问不到。
运行结果如下: