Spring MVC项目搭建

一、创建空项

创建一个空项目,后面每一个案例以模块单独存在:

二、设置Maven和lombok

这里一定要选择Maven路径和勾选lombok设置,

 

勾选:Delegate IDE build/run actions to Maven(将IDE构建/运行操作委托给Maven)

三、创建maven web module

注意:骨架选择为maven-archetype-webapp

配置模块的GroupID和 artfactid

五、在默认模块的基础上补充项目结构文件夹并标记文件夹

创java、resources、test包

创建好目录后,选中目录,右击 mark directory as  选择对应目录类型即可

六、修改web.xml 中的版本约束

复制下面的内容,替换掉原来web.xml文件中的内容即可

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         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"
         version="4.0">
</web-app>

七、导入依赖

在pom.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>com.augus</groupId>
  <artifactId>springmvc_01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

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

  <dependencies>
    <!--spring核心容器包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.3.18</version>
    </dependency>
    <!--spring切面包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>5.3.18</version>
    </dependency>
    <!--aop联盟包-->
    <dependency>
      <groupId>aopalliance</groupId>
      <artifactId>aopalliance</artifactId>
      <version>1.0</version>
    </dependency>
    <!--德鲁伊连接池-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.10</version>
    </dependency>
    <!--mysql驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.28</version>
    </dependency>
    <!--springJDBC包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.3.18</version>
    </dependency>
    <!--spring事务控制包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.3.18</version>
    </dependency>
    <!--spring orm 映射依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-orm</artifactId>
      <version>5.3.18</version>
    </dependency>
    <!--Apache Commons日志包-->
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
    </dependency>
    <!--log4j2 日志-->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <version>2.14.0</version>
      <scope>test</scope>
    </dependency>
    <!--lombok -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.12</version>
      <scope>provided</scope>
    </dependency>
    <!--spring test测试支持包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.3.18</version>
      <scope>test</scope>
    </dependency>
    <!--junit5单元测试-->
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <version>5.8.2</version>
      <scope>test</scope>
    </dependency>
    <!--springMVC支持包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.3.18</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.3.18</version>
    </dependency>
  </dependencies>

  <build>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>6</source>
          <target>6</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

八、在web.xml中配置DispatcherServlet

这里配置DispatcherServlet目的主要是为了对浏览器发起的请求进行处理

<!--配置 SpringMVC 的前端控制器DispatcherServlet,对浏览器发送的请求统一进行处理 -->
  <!--配置DispatcherServlet-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--配置初始化参数,读取springmvc核心配置文件的位置和名称-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <!--配置dispatcherServlet的映射路径为 / 包含全部的servlet jsp除外-->
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

九、在resource目录下创建SpringMVC.xml的配置文件

创建配置文件,在里面需要配置spring包扫描、自动注入bean和视图解析器如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
">
    <!--配置spring包扫描-->
    <context:component-scan base-package="com.augus.controller"></context:component-scan>

    <!--会自动注册RequestMappingHandlerMapping与RequestMappingHandlerAdapter两个Bean-->
    <mvc:annotation-driven></mvc:annotation-driven>

    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前置解析器-->
        <property name="prefix" value="/WEB-INF/view/"  ></property>
        <!--后置解析器-->
        <property name="suffix" value=".jsp"  ></property>
    </bean>

    <!--静态资源放行-->
    <mvc:resources mapping="/static/**" location="/static/"></mvc:resources>
</beans>

十、在resource目录下添加log4j2.xml

创建日志文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Root level="debug">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>

十一、创建 Controller(控制器)

DispatcherServlet 会拦截用户发送来的所有请求进行统一处理,但不同的请求有着不同的处理过程,例如登陆请求和注册请求就分别对应着登陆过程和注册过程,因此我们需要 Controller 来对不同的请求进行不同的处理。
在 Spring MVC 中,一个普通的 Java 类只要标注了 @Controller 注解,就会被 Spring MVC 识别成 Controller。Controller 类中的每一个处理请求的方法被称为“控制器方法”。
控制器方法在处理完请求后,通常会返回一个字符串类型的逻辑视图名(ViewName),Spring MVC 需要借助 ViewResolver(视图解析器)将这个逻辑视图名解析为真正的 View 视图,最终响应给客户端展示。

在src下的java中,创建一个包com.augus.controller,并在该包下创建一个名为 HelloController 的控制器类,内容如下:

package com.augus.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {

    @RequestMapping("/")
    public String HelloWorld(){
        //视图名,视图为:视图前缀+index+视图后缀,即 /WEB-INF/view/index.jsp
        //但是我们在springmvc.xml中配置了,前置和后置解析器,自动会分别拼接拼接/WEB-INF/view/ 和 .jsp
        return "index";
    }

    @RequestMapping("/login")
    public String GetLogin(){
        //视图名,视图为:视图前缀+index+视图后缀,即 /WEB-INF/view/login.jsp
        //但是我们在springmvc.xml中配置了,前置和后置解析器,自动会分别拼接拼接/WEB-INF/view/ 和 .jsp
        return "login";
    }

    @RequestMapping("/register")
    public String GetReg(){
        //视图名,视图为:视图前缀+index+视图后缀,即 /WEB-INF/view/register.jsp
        //但是我们在springmvc.xml中配置了,前置和后置解析器,自动会分别拼接拼接/WEB-INF/view/ 和 .jsp
        return "register";
    }

注意:在以上代码中使用了 @RequestMapping 注解,它的作用就是将请求和处理请求的控制器方法关联映射起来,建立映射关系。Spring MVC 的 DispatcherServelt 在拦截到指定的请求后,就会根据这个映射关系将请求分发给指定的控制器方法进行处理。

十二、创建 View(视图)

视图文件都应该存放在 /WEB-INFO/view目录下且文件名暂时写成以 .jsp结尾。

1. 在 /WEB-INFO 目录下创建一个 view的目录,并在该目录下创建 index.jsp,代码如下。

<%--
  Created by IntelliJ IDEA.
  User: Augus
  Date: 2022/9/6
  Time: 12:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>springmvc学习网站</title>
</head>
<body>
<h1>欢迎您访问springmvc学习网站</h1>
未注册用户,请<a href="register">注册</a><br/>
已注册用于,去<a href="login">登陆</a>
</body>
</html>

2. 在 /WEB-INFO/view下创建 login.jsp,代码如下。

<%--
  Created by IntelliJ IDEA.
  User: Augus
  Date: 2022/9/6
  Time: 12:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>springmvc学习网站</title>
</head>
<body>
<h1>欢迎来登陆页面</h1>
<a href="index">跳转首页</a><br/>
<a href="register">跳转到注册页面</a>
</body>
</html>

3. 在 /WEB-INFO/view下创建 register.jsp,代码如下。

<%--
  Created by IntelliJ IDEA.
  User: Augus
  Date: 2022/9/6
  Time: 12:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>springmvc学习网站</title>
</head>
<body>
<h1>欢迎来注册页面</h1>
<a href="index">跳转首页</a><br/>
<a href="login">跳转到登录页面</a>
</body>
</html>

十三、配置Tomcat部署运行

在Tomcat中加载本地的Tomcat,进行运行

 

 

 

十四、执行结果

1.访问http://localhost:8080/springmvc_01_war_exploded/welcome欢迎页面

2.点击登录,页面跳转到登录页面

3.点击 跳转到登录页面,浏览器页面跳转到登录页面

 

posted @ 2019-10-23 14:58  酒剑仙*  阅读(176)  评论(0编辑  收藏  举报