SpringMVC——記錄那些走過的坑(1)

前言

Idea在開發的時候,的確比Eclipse智能,但是沒有Eclipse方便,好多在Eclipse中沒問題的源代碼跑到idea裏面就會因爲結構而遇到各種各樣的坑

工欲善其事,必先利其器

idea新建一個SpringMVC項目
第一步,打開Idea,create a new project,注意我圖中的打√的地方,然後一路next,Finsh
在這裏插入圖片描述
就這?就這?就這?Too young too single
第二步,先看看咱們的項目結構,src就是源碼
在這裏插入圖片描述
修改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">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- Springmvc的前端控制器 / 核心控制器:  DispatcherServlet -->
    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 給DispatcherServlet配置初始化參數:
                指定Springmvc的核心配置文件
         -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:SpringMVC.xml</param-value>
        </init-param>

        <!--
            load-on-startup: 設置DispatcherServlet在服務器啓動時加載。
                Servlet的創建時機:
                     1. 請求到達以後創建
                     2. 服務器啓動即創建
         -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- 指定請求的匹配 -->
    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

直接在src下新建SpingMVC.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: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 https://www.springframework.org/schema/context/spring-context.xsd">
    <!--  1. 組件掃描 -->
    <context:component-scan base-package="main.SpringMVC"></context:component-scan>
    <!--  2. 視圖解析器

             工作機制:  prefix + 請求處理方法的返回值 + suffix  =  物理視圖路徑.
                      /WEB-INF/views/success.jsp

            WEB-INF: 是服務器內部路徑。 不能直接從瀏覽器端訪問該路徑下的資源. 但是可以內部轉發進行訪問

        -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

</beans>

第三步,打開Project Structure(敲黑板了)
在這裏插入圖片描述
第四步,編寫HelloWorld
index.jsp
在這裏插入圖片描述
請求方法


/**
 * 爲什麼只能用Controller
 * 註冊爲組件
 * 請求處理器  / 控制器
 */
@Controller
public class test {

    /**
     * 處理客戶端的請求:  http://localhost:8888/Springmvc01/hello
     *
     * @RequestMapping: 完成請求 與 請求處理方法的映射.
     *
     */
    @RequestMapping(value="/hello")
    public String  handleHello() {
        System.out.println("Hello SpringMVC ");

        return "success";  // 通過視圖解析器解析得到具體的視圖, 再轉發去往該視圖.
    }
}

第五步,添加Tomcat並執行
在這裏插入圖片描述
在這裏插入圖片描述

運行結果:

在這裏插入圖片描述
在這裏插入圖片描述

原理剖析

Springmvc的HelloWorld:
1. 創建web工程, 導入核心的jar包.
2. 在web.xml中配置SpringMVC的前端控制器: DispatcherServlet
3. 配置SpringMVC的核心配置文件: springmvc.xml
4. 編寫請求處理器
5. 瀏覽器端發送請求, 請求處理器中處理請求
6. 測試

Springmvc HelloWorld 執行流程:
1. 啓動Tomcat服務器, 會加載DispatcherServlet, 然後就會讀取springmvc.xml,進而創建好的Springmvc容器對象.
創建Springmvc容器對象: 組件掃描會 掃描到請求處理器, 以及請求處理中@RequestMapping註解,
能得到具體的請求與請求處理器 中方法的映射。

2. 客戶端發送請求: http://localhost:8888/Springmvc01/hello
3. 請求到達web.xml中與<url-pattern>進行匹配, 匹配成功,就將請求交給DispatcherServlet
4. DispatcherServlet根據請求 與 請求處理方法的映射, 將請求交給具體的請求處理器中的請求處理方法來進行處理 
5. 請求處理方法處理完請求, 最終方法會返回一個字符串
6. 視圖解析器根據請求處理方法返回的結果, prefix + returnValue + suffix, 解析生成具體的物理視圖路徑, 
       再通過轉發的方式去往視圖。  ·
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章