Javaweb——使用 Maven 搭建 SpringMVC

一、Maven 简介

1、何为 Maven

  • Maven 指的是 Apache Maven,是一个软件项目管理工具,基于对象模型(Project Object Model,POM)的概念,Maven 可用来管理项目的依赖、编译、文档等信息。

2、下载和安装 Maven

  • 下载 Maven 直接到 Maven 官网即可,Maven 官网,点击链接即可访问官网,如下图:
    在这里插入图片描述
  • 点击 下载 连接进入下载页面,选择如下的文件:
    在这里插入图片描述
  • 下载完成后将压缩包解压到适当位置,文件目录下的内容如下:
    在这里插入图片描述

3、配置 Maven

  • 主要配置 Maven 的环境变量,就像配置 Java 一样,到控制面板-系统-高级系统设置-环境变量,添加两个系统变量,如下图:
    在这里插入图片描述
  • 然后选择编辑 path 变量,增加如下两个变量值:
    在这里插入图片描述
  • 然后点击确定,到 cmd 窗口输入:mvn -version 回车,配置成功则应当是如下界面:
    在这里插入图片描述
  • 最后一步修改 Maven 软件目录下 conf/setting.xml 文件,修改 localRepository 标签的值,该标签位于文件的 53 行,将值修改为自定义的仓库目录,我的如下:
    <!-- localRepository
    | The path to the local repository maven will use to store artifacts.
    |
    | Default: ${user.home}/.m2/repository-->
    <localRepository>D:/users/lenovo/Maven库</localRepository>
    
  • 至此 Maven 配置完成,不过使用 IDEA 的话,可以不用另外下载安装 Maven,IDEA 本身内置 Maven 插件,直接修改 Maven 库路径即可
    在这里插入图片描述

二、搭建 Maven 项目

1、新建 Maven 项目

  • 我这里用的编辑器是 IDEA,所以 Maven 用的是 IDEA 内置的。
  • 在 IDEA 新建 Maven 项目比较简单,单击 File->New->Project->Maven,基本直接 Next 以及填写项目名和选择项目存放位置就可以了。

2、POM 文件

  • Maven 项目通过一个 pom.xml 文件来对项目的依赖包进行管理,初始项目的的 POM 文件内容如下:
    <?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>org.example</groupId>
        <artifactId>Empty</artifactId>
        <version>1.0-SNAPSHOT</version>
    
    
    </project>
    
  • POM 文件的标签的意义和用法,可以参看下面这篇博客:
    POM 文件标签详解

3、POM 常用标签

  • POM 文件中标签有很多,但是比较常用的有下面几个:

3.1、dependencies

  • <dependencies></dependencies> 标签正如其名,是项目众多依赖的的填写处。

3.2、dependency

  • <dependency></dependency> 标签是项目中某个具体依赖的填写处,dependency 标签通过三个子标签:groupId、artifactId 和 version 来确定项目的唯一依赖,类似于三维坐标中的三个坐标轴,示例如下:
    <!--Spring MVC-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.1.5.RELEASE</version>
        </dependency>
    
  • 当你在 Maven 项目的 pom 文件的 <dependency></dependency> 中增加如上面的内容,并且开启了自动引入依赖,那么 Maven 程序就会自动在你设置好 Maven localRepository 目录下新建目录:org/springframework/,并且在该新建目录下新建一个名为 spring-webmvc 的文件夹,而 spring-webmvc 文件夹下有名为 4.1.5.RELEASE 的文件夹,4.1.5.RELEASE 文件夹里面的文件便是 spring-webmvc-4.1.5.RELEASE.* 等文件,其中有个 JAR 包,便是 Java 软件包也就是你添加在 Maven Java 项目中的依赖。
  • 通过仔细比较可以发现,某个 JAR 包在你电脑中的存放位置目录就是如下拼接:
    <localRepository> 值\<groupId>值\<artifactId>值\<version>值\
    其中<groupId>值串中的 "." 替换成 "\"。
    
  • 通常为了便于使用,我们组织依赖包都是按照某个 JAR 在 mvnrepository 的 URL 路径来填写的,例如 springframework 框架,在 mvnrepository 的组织如下图:
    在这里插入图片描述
  • 而 version 标签里的值便是 JAR 包的版本
    在这里插入图片描述

3.3、properties

  • 该标签用于定义变量,以供在 dependency 中使用,其使用形式如下:
    <properties>
    	<变量名>变量值</变量名>
    </properties>
    
  • 例如可以将上面的 springframework 的版本采用如下形式定义:
    <properties>
    	<spring-framework.version>4.1.5.RELEASE</spring-framework.version>
    </properties>
    
  • 那么相应的 dependency 可以改写成如下形式:
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring-framework.version}</version>
    </dependency>
    

3.4、build 和 plugins

  • Maven 提供这两个标签用于确定编译插件,以及 Java 的编译级别等,示例:
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

4、简单项目

4.1、编辑 POM 文件引入依赖包

  • 创建一个 Maven 项目后对 POM 文件进行修改,代码如下:
    <?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>com.wisely</groupId>
        <artifactId>highlight_springmvc4</artifactId>
        <version>0.01-SNAPSHOT</version>
        <packaging>war</packaging>
        <properties>
            <!--Generic properties-->
            <java.version>12.0.1</java.version>
            <project.build.sourecEncoding>UTF-8</project.build.sourecEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <!--Web-->
            <jsp.version>2.2</jsp.version>
            <jstl.version>1.2</jstl.version>
            <servlet.version>3.1.0</servlet.version>
            <!--Spring-->
            <spring-framework.version>4.1.5.RELEASE</spring-framework.version>
            <!--Logging-->
            <logback.version>1.0.13</logback.version>
            <slf4j.version>1.7.5</slf4j.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-web-api</artifactId>
                <version>7.0</version>
                <scope>provided</scope>
            </dependency>
            <!--Spring MVC-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring-framework.version}</version>
            </dependency>
            <!--其他Web依赖-->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>${jstl.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>${servlet.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>jsp-api</artifactId>
                <version>${jsp.version}</version>
                <scope>provided</scope>
            </dependency>
            <!--Spring and Transactions-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>${spring-framework.version}</version>
            </dependency>
            <!--使用SLF4和log Back作为日志-->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.16</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>${logback.version}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>${logback.version}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-access</artifactId>
                <version>${logback.version}</version>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.3</version>
                    <configuration>
                        <failOnMissingWebXml>false</failOnMissingWebXml>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    

4.2、Log configuration

  • 在工程项目的 src 目录下新建 \main\resource\ 目录,并在 resource 目录下新建一个 logback.xml 文件,用于配置日志,该文件内容如下:
    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration scan="true" scanPeriod="1 seconds">
        <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
            <resetJUL>true</resetJUL>
        </contextListener>
        <jmxConfigurator/>
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>logback:%d{HH:mm:ss.SSS} %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
        <logger name="org.springframework.web" level="DEBUG"/>
        <root level="info">
            <appender-ref ref="console"/>
        </root>
    </configuration>
    

4.3、准备可视化界面:

  • 在 resource 目录下新建一个 views 文件夹,用于存放可视化的 JSP 页面,建立一个简单的 JSP 文件,内容如下:
    <%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Spring MVC  项目演示</title>
    </head>
    <body>
        <pre>
            Welcome to Spring MVC world!!!!
        </pre>
    </body>
    </html>
    

4.4、Spring MVC configuration

  • 在 main 目录下新建一个 java 文件夹,用于放置 Java 代码文件,在Java 目录的适当位置下编辑一个如下的代码文件:
    package com.wisely.highlight_springmvc4;
    import com.wisely.highlight_springmvc4.interceptor.DemoInterceptor;
    import com.wisely.highlight_springmvc4.messageconverter.MyMessageConverter;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.converter.HttpMessageConverter;
    import org.springframework.web.multipart.MultipartResolver;
    import org.springframework.web.multipart.commons.CommonsMultipartResolver;
    import org.springframework.web.servlet.config.annotation.*;
    import org.springframework.web.servlet.view.InternalResourceViewResolver;
    import org.springframework.web.servlet.view.JstlView;
    
    import java.util.List;
    
    @Configuration
    @EnableWebMvc
    @ComponentScan("com.wisely.highlight_springmvc4")
    public class MyMvcConfig extends WebMvcConfigurerAdapter {
        @Bean
        public InternalResourceViewResolver viewResolver(){
            InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
            viewResolver.setPrefix("WEB-INF/classes/views/");
            viewResolver.setSuffix(".jsp");
            viewResolver.setViewClass(JstlView.class);
            return viewResolver;
        }
    }
    

4.5、web configuration

  • 使用 WebApplicationInitializer 接口来配置 Web,该接口是 Spring 提供用来配置 servlet3.0+ 配置,可以替代 web.xml 文件,代码如下:
    package com.wisely.highlight_springmvc4;
    
    import org.springframework.web.WebApplicationInitializer;
    import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
    import org.springframework.web.servlet.DispatcherServlet;
    
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRegistration.Dynamic;
    
    public class WebInitializer implements WebApplicationInitializer {
        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
            AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
            ctx.register(MyMvcConfig.class);
            ctx.setServletContext(servletContext);
           Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
           servlet.addMapping("/");
           servlet.setLoadOnStartup(1);
        }
    }
    

4.6、controller

  • Spring MVC 使用 Controller 来控制可视化界面和后台之间的交互,在这里简单的实现映射到 index 界面,代码如下:
    package com.wisely.highlight_springmvc4.web;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    @Controller
    public class HelloController {
        @RequestMapping("/index")
        public String hello(){
            return "index";
        }
    }
    

4.7、部署运行

  • 部署到 Tomcat 上运行,结果如下:
    在这里插入图片描述

上一篇
下一篇

发布了146 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42896653/article/details/104093728
今日推荐