SpringBoot2:学SpringBoot前的知识准备-用IDEA创建传统的webapp工程,并整合SpringMVC

1、IDEA创建工程

基于Maven模板创建的SpringMVC工程

工程创建好后,只有webapp目录

这里,我们需要手动创建java目录和resources配置文件目录

创建好后,配置下目录属性

最终结构

至此,工程就创建好了

2、配置Tomcat

参考:IDEA配置Tomcat

3、整合SpringMVC

pom.xml

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>

<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>mvcweb</groupId>
  <artifactId>mvcweb</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>mvcweb Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

    <!-- spring版本号 -->
    <spring.version>4.2.5.RELEASE</spring.version>
    <!-- mybatis版本号 -->
    <mybatis.version>3.2.8</mybatis.version>
    <!-- mysql驱动版本号 -->
    <mysql-driver.version>5.1.29</mysql-driver.version>
    <!-- log4j日志包版本号 -->
    <slf4j.version>1.7.18</slf4j.version>
    <log4j.version>1.2.17</log4j.version>

  </properties>

  <dependencies>

    <!-- 添加spring核心依赖 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>8.0</version>
    </dependency>

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.1.41</version>
    </dependency>

  </dependencies>


  <build>
    <finalName>mvcweb</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.4.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.3.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.13.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.4.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.1.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.1.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

web.xml

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app
    version="4.0"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xml="http://www.w3.org/XML/1998/namespace"
    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">
  <display-name>Archetype Created Web Application</display-name>

  <!-- springMVC核心配置 -->
  <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:conf/spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

创建jsp页面

页面位置:E:\workspace\mvcweb\src\main\webapp\hello.jsp

html 复制代码
<html>
<head>
    <title>Test SpringMVC</title>
</head>
<body>
<h2>Hello SpringMVC</h2>
</body>
</html>

创建hello controller

我这里用的最原始的springmvc接口方式,继承controller类的方式写一个测试接口

java 复制代码
package com.mvc.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloController implements Controller {
	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
		ModelAndView mv = new ModelAndView("hello.jsp");
		return mv;
	}
}

创建spring-mvc.xml

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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="/hello.do" class="com.mvc.controller.HelloController"/>
</beans>

启动工程,并测试hello.do接口

可以正常访问接口,说明成功整合springmvc

4、比对SpringBoot

我们知道spring的核心就是IOC、AOP、DI,三大特性。
IOC容器的作用就是管理bean实例,默认是单例模式

以往的springmvc工程,创建bean,需要在spring-xxx.xml文件中,通过<bean/>标签来管理。

相当繁琐。

后来,在spring-xxx.xml文件中,配置基础包的扫描路径,这样,通过扫描注解,将相应的Java类注入到IOC容器中
webapp项目打包后,都是war包,通过外部的Tomcat进行部署。

到了SpringBoot就更爽了,xml配置文件直接省去,直接通过注解来实现配置。

并且,Tomcat也内置了。

直接生成jar包,通过命令行启动。

补充文献:

1、springmvc与springboot的优劣比较

2、浅谈springmvc的配置文件的理解

3、SpringMVC的理解

4、web.xml里面的配置加载顺序

5、IDEA配置Tomcat

5、带着问题和目标学习SpringBoot

依赖注入,DI特性,是完全继承的。所以,无需特别关注。

问题1:
xml配置方式取消了,springboot中如何实现配置?

问题2:
web.xml中配置的listener、servlet、filter、context-paramspringboot中怎么实现?

问题3:
springmvc中,通过不同的spring-xxx.xml文件来管理不同的spring容器。
springboot中容器怎么划分的?

参考:spring中容器分类

问题4:
springboot怎么实现AOP切面管理的?

问题5:
springmvc中,整合mybatisdruid、文件的上传下载、定时任务等第三方组件的整合是在spring-xxx.xml文件中配置的,springboot中,怎么实现?

相关推荐
摇滚侠8 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 使用 JdbcTemplate 阅读笔记 32
spring boot·笔记·后端
sunshine22 girl9 小时前
Java学习一 环境配置2 安装和基本使用Idea
java·学习·intellij-idea
策案案案12 小时前
YOLO: 将AI Agents嵌入到IntelliJ IDEA
java·大数据·人工智能·笔记·yolo·microsoft·intellij-idea
卓怡学长16 小时前
w210基于springboot反诈平台设计与实现
java·spring boot·spring·intellij-idea
大模型丫丫17 小时前
如何提升单体 Spring Boot 应用的并发数?
java·spring boot·后端
RuoyiOffice18 小时前
SpringBoot3+Vue3 最推荐的开源 OA 系统 2026:流程驱动、资源闭环、多端互通
spring boot·vue3·flowable·oa·协同办公·spring boot 3·开源oa
计算机毕设定制辅导-无忧学长18 小时前
基于Spring Boot的玄幻小说个性化推荐平台设计与实现
java·vue.js·spring boot·后端·mysql·推荐算法
Harry Lei18 小时前
长期记忆系统的设计与实现
spring boot·postgresql·embedding
卓怡学长20 小时前
w156一周穿搭App的设计与实现
java·spring boot·spring·maven·intellij-idea
步行cgn21 小时前
Spring Boot 绑定简单 Bean 详解
java·spring boot·后端