spring學(xué)習(xí)——springmvc快速體驗(yàn)

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


1.png

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

2.png

異常
3.png

點(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包路徑:
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ì)如下


顯示1

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


顯示2

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)紅色

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容