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中,怎么实现?

相关推荐
图南随笔1 小时前
Spring Boot(二十二):RedisTemplate的List类型操作
windows·spring boot·list
匆匆整棹还6 小时前
关于tomcat乱码和idea中控制台乱码的问题
java·tomcat·intellij-idea
牛角挣扎录7 小时前
Spring事件监听:无法接收List<event>?
spring boot·spring
小样vvv7 小时前
【AI】IDEA 集成 AI 工具的背景与意义
java·人工智能·intellij-idea
sg_knight8 小时前
Spring Cloud 2024.x智能运维:AI驱动的故障预测与自愈
java·运维·人工智能·spring boot·spring cloud
冒泡的肥皂8 小时前
JAVA-WEB系统问题排查闲扯
java·spring boot·后端
茂桑9 小时前
Idea集成AI:CodeGeeX开发
java·ai·intellij-idea
只会AI搜索得coder9 小时前
sqlite3 sqlcipher加密,解密,集成springboot,读取sqlcipher加密工具
java·spring boot·sqlite
kinlon.liu9 小时前
SpringBoot整合Redis限流
spring boot·redis·后端
努力的搬砖人.12 小时前
Spring Boot集成MinIO的详细步骤
java·spring boot·后端