ToB企服应用市场:ToB评测及商务社交产业平台

标题: Spring MVC学习随笔-第一个Spring MVC程序(父子项目结构、Tomcat配置、Vie [打印本页]

作者: 水军大提督    时间: 2024-1-12 04:06
标题: Spring MVC学习随笔-第一个Spring MVC程序(父子项目结构、Tomcat配置、Vie
学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅
第二章、第一个SpringMVC程序的开发

2.1开发版本

按照父子项目的结构,管理和创建项目,创建一个空Project作为父项目,pom文件如下
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.     <modelVersion>4.0.0</modelVersion>
  6.     <groupId>com.baizhi</groupId>
  7.     <artifactId>baizhi-mvc-parent</artifactId>
  8.     <packaging>pom</packaging>
  9.     <version>1.0-SNAPSHOT</version>
  10.     <modules>
  11.         <module>baizhi-mvc-01</module>
  12.     </modules>
  13.     <properties>
  14.         <maven.compiler.source>8</maven.compiler.source>
  15.         <maven.compiler.target>8</maven.compiler.target>
  16.     </properties>
  17. </project>
复制代码
创建子项目Module:

子项目pom文件:
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3.     <parent>
  4.         <artifactId>baizhi-mvc-parent</artifactId>
  5.         <groupId>com.baizhi</groupId>
  6.         <version>1.0-SNAPSHOT</version>
  7.     </parent>
  8.     <modelVersion>4.0.0</modelVersion>
  9.     <artifactId>baizhi-mvc-01</artifactId>
  10.     <packaging>war</packaging>
复制代码
注意:初次创建web项目时,WEB-INF包下的web.xml引入的servlet规范的版本还是2.3,而我们使用的tomcat8至少需要3.0以上的规范,所以需要修复,删除此文件后在Project Settings设置,如图:

Tomcat配置


2.2 环境搭建

2.2.1 引入相关jar
  1. <dependencies>
  2.     <dependency>
  3.         <groupId>org.springframework</groupId>
  4.         <artifactId>spring-webmvc</artifactId>
  5.         <version>5.3.27</version>
  6.     </dependency>
  7.     <dependency>
  8.         <groupId>javax.servlet</groupId>
  9.         <artifactId>javax.servlet-api</artifactId>
  10.         <version>3.1.0</version>
  11.     </dependency>
  12.     <dependency>
  13.         <groupId>javax.servlet</groupId>
  14.         <artifactId>jstl</artifactId>
  15.         <version>1.2</version>
  16.     </dependency>
  17.     <dependency>
  18.         <groupId>javax.servlet.jsp</groupId>
  19.         <artifactId>javax.servlet.jsp-api</artifactId>
  20.         <version>2.3.1</version>
  21.     </dependency>
  22.     <dependency>
  23.         <groupId>org.springframework</groupId>
  24.         <artifactId>spring-web</artifactId>
  25.         <version>5.3.27</version>
  26.     </dependency>
  27.     <dependency>
  28.         <groupId>org.springframework</groupId>
  29.         <artifactId>spring-core</artifactId>
  30.         <version>5.3.27</version>
  31.     </dependency>
  32.     <dependency>
  33.         <groupId>org.springframework</groupId>
  34.         <artifactId>spring-beans</artifactId>
  35.         <version>5.3.27</version>
  36.     </dependency>
  37.     <dependency>
  38.         <groupId>org.springframework</groupId>
  39.         <artifactId>spring-test</artifactId>
  40.         <version>5.3.27</version>
  41.     </dependency>
  42.     <dependency>
  43.         <groupId>org.springframework</groupId>
  44.         <artifactId>spring-tx</artifactId>
  45.         <version>5.3.27</version>
  46.     </dependency>
  47.     <dependency>
  48.         <groupId>org.springframework</groupId>
  49.         <artifactId>spring-jdbc</artifactId>
  50.         <version>5.3.27</version>
  51.     </dependency>
  52.     <dependency>
  53.         <groupId>org.mybatis</groupId>
  54.         <artifactId>mybatis-spring</artifactId>
  55.         <version>2.1.1</version>
  56.     </dependency>
  57.     <dependency>
  58.         <groupId>com.alibaba</groupId>
  59.         <artifactId>druid</artifactId>
  60.         <version>1.1.19</version>
  61.     </dependency>
  62.     <dependency>
  63.         <groupId>mysql</groupId>
  64.         <artifactId>mysql-connector-java</artifactId>
  65.         <version>5.1.47</version>
  66.     </dependency>
  67.     <dependency>
  68.         <groupId>org.mybatis</groupId>
  69.         <artifactId>mybatis</artifactId>
  70.         <version>3.5.13</version>
  71.     </dependency>
  72.     <dependency>
  73.         <groupId>junit</groupId>
  74.         <artifactId>junit</artifactId>
  75.         <version>4.11</version>
  76.         <scope>test</scope>
  77.     </dependency>
  78.     <dependency>
  79.         <groupId>org.springframework</groupId>
  80.         <artifactId>spring-context</artifactId>
  81.         <version>5.3.27</version>
  82.     </dependency>
  83.     <dependency>
  84.         <groupId>org.springframework</groupId>
  85.         <artifactId>spring-aop</artifactId>
  86.         <version>5.3.27</version>
  87.     </dependency>
  88.     <dependency>
  89.         <groupId>org.aspectj</groupId>
  90.         <artifactId>aspectjrt</artifactId>
  91.         <version>1.8.8</version>
  92.     </dependency>
  93.     <dependency>
  94.         <groupId>org.aspectj</groupId>
  95.         <artifactId>aspectjweaver</artifactId>
  96.         <version>1.8.3</version>
  97.     </dependency>
  98.     <dependency>
  99.         <groupId>org.slf4j</groupId>
  100.         <artifactId>slf4j-api</artifactId>
  101.         <version>1.7.36</version>
  102.     </dependency>
  103.     <dependency>
  104.         <groupId>ch.qos.logback</groupId>
  105.         <artifactId>logback-classic</artifactId>
  106.         <version>1.2.12</version>
  107.     </dependency>
  108.     <dependency>
  109.         <groupId>ch.qos.logback</groupId>
  110.         <artifactId>logback-core</artifactId>
  111.         <version>1.2.12</version>
  112.     </dependency>
  113.     <dependency>
  114.         <groupId>org.logback-extensions</groupId>
  115.         <artifactId>logback-ext-spring</artifactId>
  116.         <version>0.1.5</version>
  117.     </dependency>
  118.     <dependency>
  119.         <groupId>org.yaml</groupId>
  120.         <artifactId>snakeyaml</artifactId>
  121.         <version>1.30</version>
  122.     </dependency>
  123. </dependencies>
复制代码
注意:SpringMVC比前面所学习的Spring,就多引入了一个jar包,叫做spring-webmvc.jar
2.2.2 配置文件

SpringMVC的配置文件,就是Spring的配置文件
注意事项:
2.2.3 初始化配置

  1. <servlet>
  2.     <servlet-name>dispatcherServlet</servlet-name>
  3.    
  4.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  5.    
  6.     <init-param>
  7.         <param-name>contextConfigLocation</param-name>
  8.         <param-value>classpath:dispatcher.xml</param-value>
  9.     </init-param>
  10.    
  11.     <load-on-startup>1</load-on-startup>
  12. </servlet>
  13. <servlet-mapping>
  14.     <servlet-name>dispatcherServlet</servlet-name>
  15.     <url-pattern>/</url-pattern>
  16. </servlet-mapping>
复制代码
SpringMVC的配置文件dispatcher.xml
  1.     <context:component-scan base-package="com.baizhi"/>
  2.    
  3.     <mvc:annotation-driven/>
复制代码

mvc:annotaion-driven这段配置的主要作用:引入SpringMVC的核心功能
主要引入了2个核心类型:1.RequestMappingHandlerMapping 2.RequestMappingHandlerAdapter
SpringMVC对mvc:annotaion-driven的封装

context:component-scan
2.3编程思路

2.3.1 思路分析


基本流程
2.3.2 编码
  1. @Controller
  2. public class FirstController {
  3.     @RequestMapping("/first")
  4.     public String first(HttpServletRequest request, HttpServletResponse response) {
  5.         System.out.println("FirstController.first");
  6.         return "/result.jsp";
  7.     }
  8. }
  9. 必须要进行@Controller注解的扫描,配置文件中:<context:component-scan base-package="com.baizhi"/>
复制代码
2.3.3 一个控制器中,提供多个服务方法

2.3.4 注意

SpringMVC中我们开发的Controller,也称之为Handler(SpringMVC内部的叫法)
2.4 第一个程序的细节分析

2.4.1 一种类型的SpringMVC控制器被创建几次?

2.4.2@RequestMapping注解

核心作用:为控制器方法提供外部访问的url路径
http://localhost:8989/basic/first
@RequestMappring(”/first”)
public String first(HttpServletRequest request, HttpServletResponse response)
设计目的

满足单一职能原则,可以更好的按照功能,进行不同模块的区分,有利于项目的管理。
两种请求发起方式的区别


2.4.3 控制器方法参数

SpringMVC在控制器方法参数设计的过程中,非常灵活,可以支持多种参数的设置方式,非常强大,它也把这种设计,叫做数据绑定。可以设置无参,也可以设置多个参数
2.4.4 视图解析器(页面跳转)



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4