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的三层架构
java·开发语言·spring boot·后端·spring
荆州克莱10 分钟前
springcloud整合nacos、sentinal、springcloud-gateway,springboot security、oauth2总结
spring boot·spring·spring cloud·css3·技术
serve the people11 分钟前
springboot 单独新建一个文件实时写数据,当文件大于100M时按照日期时间做文件名进行归档
java·spring boot·后端
罗政6 小时前
[附源码]超简洁个人博客网站搭建+SpringBoot+Vue前后端分离
vue.js·spring boot·后端
Java小白笔记9 小时前
关于使用Mybatis-Plus 自动填充功能失效问题
spring boot·后端·mybatis
小哇6669 小时前
Spring Boot,在应用程序启动后执行某些 SQL 语句
数据库·spring boot·sql
luoluoal11 小时前
java项目之企业级工位管理系统源码(springboot)
java·开发语言·spring boot
蜜桃小阿雯11 小时前
JAVA开源项目 校园美食分享平台 计算机毕业设计
java·jvm·spring boot·spring cloud·intellij-idea·美食
重生之我在20年代敲代码12 小时前
HTML讲解(二)head部分
前端·笔记·html·web app
计算机学姐12 小时前
基于SpringBoot+Vue的篮球馆会员信息管理系统
java·vue.js·spring boot·后端·mysql·spring·mybatis