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

相关推荐
NiNg_1_2342 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
种树人202408192 小时前
如何在 Spring Boot 中启用定时任务
spring boot
苹果醋35 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
Wx-bishekaifayuan5 小时前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava
customer085 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
Yaml46 小时前
智能化健身房管理:Spring Boot与Vue的创新解决方案
前端·spring boot·后端·mysql·vue·健身房管理
LuckyLay6 小时前
Spring学习笔记_27——@EnableLoadTimeWeaving
java·spring boot·spring
佳佳_7 小时前
Spring Boot 应用启动时打印配置类信息
spring boot·后端
小灰灰__7 小时前
IDEA加载通义灵码插件及使用指南
java·ide·intellij-idea
程序媛小果8 小时前
基于java+SpringBoot+Vue的宠物咖啡馆平台设计与实现
java·vue.js·spring boot