Idea创建SpringMVC项目

1.创建项目

1.1工具

idea2022+Maven

1.2创建静态网页

创建项目,选择maven项目:

mvc01.png

这里选择手动创建的方式,直接一直点击下一步(也可以参考其他选择webapp的模板创建方式)

mvc02.png

在创建后在src/main目录下创建webapp目录

mvc03.png

mvc04.png

在项目构建路径中添加web支持,会在路径中生成web目录,将其中的WEB-INF移动到我们创建的webapp文件夹中

mvc05.png

mvc06.png

mvc07.png

在pom.xml中添加,以下代码并且重新加载maven,这是刚刚创建的webapp会出现一个小蓝点表示被扫描类扫描到了。

1
<packaging>war</packaging>

mvc08.png

在webapp下创建一个index.jsp(如果不存在则创建)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%--
Created by IntelliJ IDEA.
User: kd_13
Date: 2024/5/25
Time: 16:09
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>index</title>
</head>
<body>
<h1>This is index.jsp</h1>
</body>
</html>

mvc09.png

1.3启动项目

在编辑配置中添加tomcat

微信图片_20240525161214.png

微信图片_20240525161240.png

微信图片_20240525161315.png

微信图片_20240525161353.png

在添加成功后项目服务器中会出现如下的:

微信图片_20240525161421.png

此时单击启动项目即可。

1.4项目启动结果

微信图片_20240525162010.png

2.项目依赖

2.1pom.xml依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!--Spring MVC-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.22.RELEASE</version>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--JSP-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>

添加后重新刷新项目结构后打开右侧maven资源中查看导入的包

微信图片_20240525162805.png

2.2配置文件

按照图中的架构结果编写架构

微信图片_20240525163052.png

web.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">

<display-name>Archetype Created Web Application</display-name>

<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

</web-app>

springmvc-servlet.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.example.springmvc.controller"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>

2.3项目测试

在控制层编写loginController.java

1
2
3
4
5
6
7
8
@Controller
public class loginController {
@RequestMapping("/login")
public String To_Login(HttpServletRequest request, HttpServletResponse response) {
System.out.println("login.....");
return "Login";
}
}

在webapp/WEB-INF/pages下编写Login.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%--
Created by IntelliJ IDEA.
User: kd_13
Date: 2024/5/25
Time: 0:12
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>login</h1>
</body>
</html>

启动项目

微信图片_20240526180023.png

3.期间出现的问题

3.1项目添加后没有小蓝点

打开项目结构,选择模块,将webapp添加为资源文件,将右侧的错误的内容根删除。

微信图片_20240525162459.png

3.2项目版本不正确

这里特别要注意,我使用的springframework版本是3.3.0,在使用spring-webmvc依赖时5.2.8等等的低版本时会出现版本无法适配的错误,这里要根据自己的架构版本去选择适合的版本选择对应的依赖版本,我选择的是6.1.8。

微信图片_20240525163324.png

3.3除了index其他全部404

在controller控制层编写方法输出测试访问页面会发现,在访问对应的页面时无论怎样访问,控制层的代码始终不会被调用,这时候需要刚刚pom.xml中的spring版本,这里出现的版本的冲突。

pro03.png

将其中的spring-boot版本降低到2.X版本,这样就可以解决问题。

3.4项目500

可能和jdk版本有关系,尝试低版本JDK

4.关键点

对pom.xml中的版本要求很高,建议使用2.x的springboot版本,配合以下的web配置,3.x的springboot中spring-webmvc版本需要在6以上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!--Spring MVC-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.22.RELEASE</version>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--JSP-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>