目的:SpringMVC初步了解
一、 先来带伙伴们先了解一下什么是SpringMVC
SpringMVC 其实是Spring提供的一个基于MVC设计模式的轻量级的Web 开发框架,本质上相当于一个Servlet,其实可以说他就是一个Servlet
由于SpringMVC 本身就是Spring框架的一部分,所有与Spring框架可以无缝集成。是当今业内界最主流的Web开发框架。
二、两个入门案例带你走进SpringMVC
注:在模拟这两个案例时,切记不可放在同一个项目下进行演示。因为两个案例都需要启动扫描核心配置文件,虽其方式不同,但不可放在同一项目下运行,xml配置版要和注解配置版分开!
2.1 入门案例:基于xml配置文件
--------- 图集导航
2.1.1 搭建环境
- 创建maven项目【2种方法开去我的主页面查询详情】
- 可根据导入webapp框架进行搭建项目
- 也可先创建一个普通的maven项目,在将其转换为web项目
配置Tomcat
拷贝相关坐标
<packaging>war</packaging> <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> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>5.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.4.RELEASE</version> </dependency> <!-- 事务 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.4.RELEASE</version> </dependency> <!-- mysql驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.24</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.4</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>3.7.5</version> </dependency> <!--整合--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.5</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <!-- mvc json --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.10.2</version> </dependency> <!--swagger2--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency> <!--文件上传--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency> <!--jsp相关--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.10</version> </dependency> </dependencies>
2.1.2 编写Controller
- 业务处理入口,UserController
- 图集导航
注:在创建各种配置包或者业务处理包的时候要注意这些包一定要放在一个大包下,不可分包放在java的根目录下,必须放在java下的一个包的根目录下。因为到时候扫描配置类时要扫描的是一个包,必须放在一个包下。
----------- UserController类
@Controller //将当前类添加到spring容器中 @RequestMapping("/user") //给当前类中所有功能,设置一个路径访问前缀 public class UserController { @RequestMapping("/selectAll") //给当功能方法,设置一个访问路径 //定义一个方法 public String selectAll(){ //返回一个页面 return "/pages/list.jsp"; } } //最终访问路径 /user/selectAll.action 类路径/方法路径.action 【action是在web.xml中配置的一个后缀】
2.1.3 编写list.jsp页面:显示内容
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> 大家好呀!我是路遥叶子,欢迎来到叶子的空间!!! </body> </html>
2.1.4 编写核心配置文件springmvc:
----------用于扫描controller包
注:该springmvc文件要放在resources包下
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" 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/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 以上约束不需要我们写,直接复制即可 --> <!-- 扫描注解包 @ComponentScan --> <!-- base-package 后面的路径为:我们写业务处理类所在的包的全路径 --> <context:component-scan base-package="com.czxy.day01_xml_mvc.controller"/> </beans>
2.1.5 在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> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- 设置访问的路径后缀为.action --> <url-pattern>*.action</url-pattern> </servlet-mapping> </web-app>
2.1.6 编写首页index.jsp
--- 部署项目,链接跳转到list.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <%-- 在href路径写明我们的定义的路径: 类名/方法名/web.xml配置的路径后缀 .action--%> <a href="${pageContext.request.contextPath}/user/selectAll.action">入门案例---基于xml</a><br/> </body> </html>
2.1.7 启动访问及结果
2.2 入门案例:基于注解配置类
------- 图集导航
2.2.1 搭建环境
- 创建项目
- 拷贝导入坐标
- 配置Tomcat
------- 该步骤和以上xml配置文件一样,这里就不多写了,可翻找按照上面步骤进行
2.2.2 编写Controller 类
- 业务处理入口,StudentController类
@Configuration //将当前类添加到spring容器中 @RequestMapping("/student") //给当前类中所有功能,设置一个路径访问前缀 public class StudentController { /** * 最终访问路径 /student/selectAll.action * @return */ @RequestMapping("/selectAll") //给当前功能方法,设置一个访问路径 public String selectAll(){ return "/pages/list.jsp"; } }
2.2.3 拷贝核心配置类
—— 拷贝核心配置类:MvcConfiguration1用于扫描controller包(取代了xml配置文件springmvc.xml)【可自行根据需要添加修改扫描的包路径】
@Configuration //注解标明这是一个配置类 @ComponentScan(basePackages = "com.czxy.controller") // 设置需要扫描的指定包controller,可自行根据需要添加包路径 public class MvcConfiguration1 { }
—— 拷贝核心配置类: webInitializer1(取代web.xml配置) 【直接拷贝即可】
public class WebInitializer1 implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletContext) throws ServletException { //1 配置spring工厂 AnnotationConfigWebApplicationContext application = new AnnotationConfigWebApplicationContext(); // 注册所有的配置类 application.register(MvcConfiguration1.class); //2 post中文乱码 FilterRegistration.Dynamic encodingFilter = servletContext.addFilter("encoding", new CharacterEncodingFilter("UTF-8")); encodingFilter.addMappingForUrlPatterns(null, true, "/*"); //3 核心控制器 ServletRegistration.Dynamic mvcServlet = servletContext.addServlet("springmvc", new DispatcherServlet(application)); mvcServlet.addMapping("*.action"); mvcServlet.setLoadOnStartup(2); //tomcat启动时,执行servlet的初始化方法 } }
2.2.4 编写jsp页面,部署项目
- 显示内容
----- index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <a href="${pageContext.request.contextPath}/student/selectAll.action">入门案例---基于注解</a> </body> </html>
----- /pages/list.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> 大家好!欢迎来到路遥叶子的空间。<br/> 现在我们来测试一下通过扫描注解配置类访问的页面吧! </body> </html>
2.2.5 启动项目及结果
三、对比总结
区别:基于xml配置文件 ---以及---- 基于注解配置类,两者的区别就在于注解配置类中的2个核心配置类取代了xml配置文件中对springmvc.xml以及web.xml的配置
效率:基于注解配置类的方式较xml配置文件来说,注解版更加的便捷,方便,易于开发者开发。现阶段大部分开发者都是使用的注解开发,只有极少数的或者必须要用xml方式开发的人在使用。
建议:2种方式各位都可以学习一下,建议将注解版敲的烂熟于心。多使用注解版,xml版可以学习了解一下。当然能掌握2种方式就更棒了。
裁决:作为本期裁判,我宣布,本轮【SpringMVC注解版 --PK-- xml版】比赛,最后的胜利者为注解小朋友。












