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.点击 跳转到登录页面,浏览器页面跳转到登录页面