打開idea點(diǎn)new project(或者file——》new ——》project)

第二次,有17個(gè)JARS,第一次只有2個(gè)JARS(不知道為什么)

異常

點(diǎn)擊set up然后手動(dòng)代理(第三個(gè)),然后try again不行就多試幾次,也可以換個(gè)網(wǎng)試試
Spring MVC 快速體驗(yàn)的步驟:
-1.
鏈接:https://pan.baidu.com/s/1LUf2oRL1WW5stNSRvdv-IA
提取碼:5v2p
復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機(jī)App,操作更方便哦
在WEB-INF文件夾下創(chuàng)建lib文件夾,并引入以上的jar包
本地jar包路徑:

0.web工程目錄結(jié)構(gòu)
參考:
這個(gè)是eclipse的:https://blog.csdn.net/indieinside/article/details/7740085
(web工程-目錄結(jié)構(gòu))
這個(gè)是idea的:
https://www.cnblogs.com/schiller-hu/p/9975030.html
(IntelliJ IDEA 中 Web項(xiàng)目 目錄結(jié)構(gòu))
https://blog.csdn.net/dreame_life/article/details/88815079
(IDEA中的Web目錄結(jié)構(gòu))
web.xml、文件的位置如下圖,
1.配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id = "WebApp_ID"
version="2.5" 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/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Springmvc</display-name>
<!-- 使用ContextLoaderListener配置時(shí),需要告訴它Spring配置文件的位置-->
<context-param>
<param-name>contextConfigLocation</param-name>
<!--關(guān)鍵位置1:contextConfigLocation:Spring的核心就是配置文件,可以說(shuō)配置文件是Spring中必不可少的東西,
而這個(gè)參數(shù)就是使Web和Spring的配置文件相結(jié)合的一個(gè)關(guān)鍵配置。-->
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- SpringMVC的前端控制器 -->
<!-- 當(dāng) DispatcherServlet 載入后,它將從一個(gè)XML文件中載入Spring的應(yīng)用上下文,該XML文件的名字取決于<servlet-name>-->
<!-- 這里DispatcherServlet 將試圖從一個(gè)叫做Spring-servlet.xml的文件中載入應(yīng)用上下文,其默認(rèn)位于WEB-INF目錄下-->
<servlet>
<servlet-name>Springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--關(guān)鍵位置2:DispatcherServlet:包含了SpringMVC的請(qǐng)求邏輯,Spring使用此類攔截Web請(qǐng)求并進(jìn)行相應(yīng)的邏輯處理。-->
<load-on-startup>1</load-on-startup>
<!--<param-value>classpath:applicationContext.xml</param-value>-->
<!--applicationContext.xml在src路徑下-->
<param-value>WEB-INF/applicationContext*.xml</param-value>
<!--applicationContext.xml在WEB-INF路徑下-->
</servlet>
<servlet-mapping>
<servlet-name>Springmvc</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<!--配置上下文載入器-->
<!-- 上下文載入器載入除DispatcherServlet載入的配置文件之外的其它上下文配置文件 -->
<!-- 最常用的上下文載入器是一個(gè)Servlet監(jiān)聽器,其名稱為ContextLoaderListener-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
<!--參考:
https://blog.csdn.net/kalision/article/details/7633002
(applicationContext.xml 配置文件的一些認(rèn)識(shí))
web.xml中classpath:和classpath*:, 有什么區(qū)別?
classpath:只會(huì)到你的class路徑中查找找文件;
classpath*:不僅包含class路徑,還包括jar文件中(class路徑)進(jìn)行查找.
applicationContext.xml的存放位置
1:src下面
需要在web.xml中定義如下:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
2:WEB-INF下面
需要在web.xml中定義如下:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/applicationContext*.xml</param-value>
</context-param>
notes:contextConfigLocation 參數(shù)定義了要裝入的 Spring 配置文件
-->
2.創(chuàng)建Spring配置文件applicationContext.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"
xmlns:tx = "http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.Springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
">
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
<!--InternalResourceViewResolver是一個(gè)輔助Bean,會(huì)在ModelAndView返回的視圖名前加上prefix指定的前綴,
再在最后加上suffix指定的后綴。
例如:由于XXController返回的ModelAndView中的視圖名是testview,故該視圖解析器將在/WEB-INF/jsp/testview.jsp處查找
視圖。
這個(gè)例子是User類中的UserController
return new ModelAndView("userlist", "users", userList);
視圖名是userlist
-->
3.創(chuàng)建model
public class User {
private String username;
private Integer age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
//模型對(duì)于SpringMVC來(lái)說(shuō)必不可少,
// 如果處理程序非常簡(jiǎn)單,完全可以忽略。模型創(chuàng)建主要的目的就是承載數(shù)據(jù),使數(shù)據(jù)傳輸更加方便。
4.創(chuàng)建controller
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
@Controller
@RequestMapping("/user")
//@Controller
//@RequestMapping("/user")
public class UserController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
List<User> userList = new ArrayList<User>();
User userA = new User();
User userB = new User();
userA.setUsername("張三");
userA.setAge(27);
userB.setUsername("李四");
userB.setAge(37);
userList.add(userA);
userList.add(userB);
// return new ModelAndView("WEB-INF/jsp/userlist.jsp", "users", userList);
// 這里多加了前綴和后綴
// applicationContext.xml文件中有了
// <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
// <property name="prefix" value="/WEB-INF/jsp/"/>
// <property name="suffix" value=".jsp"/>
// </bean>
return new ModelAndView("userlist", "users", userList);
}
}
//總結(jié):applicationContext.xml里的InternalResourceViewResolver要和ModelAndView里的視圖名配合
//控制器用于處理Web請(qǐng)求,每個(gè)控制器都對(duì)應(yīng)著一個(gè)邏輯處理。
//
//請(qǐng)求的最后返回了ModelAndView類型的實(shí)例。ModelAndView類在SpringMVC中占有很重要的地位,
// 控制器執(zhí)行方法都必須返回一個(gè)ModelAndView,ModelAndView對(duì)象保存了視圖以及視圖顯示的模型數(shù)據(jù),
// 例如其中的參數(shù)如下。
//
//第一個(gè)參數(shù)userlist:視圖組件的邏輯名稱。這里視圖的邏輯名稱就是userlist,
// 視圖解析器會(huì)使用該名稱查找實(shí)際的View對(duì)象。
//第二個(gè)參數(shù)users:傳遞給視圖的,模型對(duì)象的名稱。
//第三個(gè)參數(shù)userList:傳遞給視圖的,模型對(duì)象的值。
5.創(chuàng)建視圖文件userlist.jsp
<%--
Created by IntelliJ IDEA.
User: xiaosiyuan
Date: 2020/5/12
Time: 18:27
To change this template use File | Settings | File Templates.
--%>
<%--<%@ page contentType="text/html;charset=UTF-8" language="java" %>--%>
<%@ page pageEncoding="UTF-8" language="java" %>
<%--<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<h2>This is SpringMVC demo pages</h2>
<c:forEach items="${users}" var="user">
<c:out value="${user.username}"/><br/>
<c:out value="${user.age}"/><br/>
</c:forEach>
<%--視圖文件用于展現(xiàn)請(qǐng)求處理結(jié)果,通過(guò)對(duì)JSTL的支持,可以很方便的展現(xiàn)在控制器中放入
ModelAndView中的處理結(jié)果數(shù)據(jù)。--%>
<%--<html>--%>
<%--<head>--%>
<%--<title>This is SpringMVC demo pages</title>--%>
<%--</head>--%>
<%--<body>--%>
<%--<p>hellospringmvc</p>--%>
<%--<c:forEach items="${users}" var="user">--%>
<%--<c:out value="${user.username}"></c:out>--%>
<%--<br>--%>
<%--<c:out value="${user.age}"></c:out>--%>
<%--<br>--%>
<%--</c:forEach>--%>
<%--</body>--%>
<%--</html>--%>
6.創(chuàng)建Servlet配置文件Spring-servlet.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-2.5.xsd
http://www.Springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
">
<bean id="simpleUrlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/userlist.htm">userController</prop>
</props>
</property>
</bean>
<!-- 這里的 id="userController"對(duì)應(yīng)的是<bean id="simpleUrlMapping">中的<prop>里面的value-->
<!--<bean id="userController" class="UserController"/>-->
<bean id="userController" class="test.controller.UserController"/>
</beans>
<!--因?yàn)镾pringMVC是基于Servlet的實(shí)現(xiàn),所以在Web啟動(dòng)的時(shí)候,服務(wù)器會(huì)首先嘗試加載對(duì)應(yīng)于Servlet的配置文件,
而為了讓項(xiàng)目更加模塊化,通常我們將Web部分的配置都存放于此配置文件中。-->
至此,已經(jīng)完成了SpringMVC的搭建,啟動(dòng)服務(wù)器,輸入網(wǎng)址
可以看到服務(wù)器返回界面,如下圖所示。
1.不啟動(dòng)Tomcat就會(huì)如下

2.啟動(dòng)了,但是也不行

tips:
http://java.sun.com/jsp/jstl/functions報(bào)紅色等參考本人spring踩坑系列博客
Tomcat啟動(dòng)博客里也有
能alt+enter解決的問(wèn)題,我就沒(méi)有寫博客
spring踩坑——idea里面http://java.sun.com/jsp/jstl/functions報(bào)紅色