SpringMVC:第一個MVC程序

1、新建一個Moudle,添加web支持!
在這裏插入圖片描述
2、由於Maven可能存在資源過濾的問題,我們將配置完善

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

3.在pom.xml文件引入相關的依賴:主要有Spring框架核心庫、Spring MVC、servlet , JSTL等。我們在父依賴中已經引入了!

<!--    導入依賴-->
   <dependencies>
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.13</version>
       </dependency>
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-webmvc</artifactId>
           <version>5.2.5.RELEASE</version>
       </dependency>
       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>servlet-api</artifactId>
           <version>2.5</version>
       </dependency>
       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>jstl</artifactId>
           <version>1.2</version>
       </dependency>
           <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
           <dependency>
               <groupId>org.projectlombok</groupId>
               <artifactId>lombok</artifactId>
               <version>1.18.12</version>
               <scope>provided</scope>
           </dependency>
   </dependencies>

4、配置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">

<!--       配置DispatchServlet:這個就是SpringMVC的核心:請求分發器,前端控制器-->
   <servlet>
       <servlet-name>SpringMVC</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--        DispatcherServlet要綁定SpringMVC的配置文件-->
       <init-param>
           <param-name> contextConfigLocation</param-name>
           <param-value>classpath:springmvc-servlet.xml</param-value>
       </init-param>
<!--        啓動級別-->
       <load-on-startup>1</load-on-startup>
   </servlet>

<!--
   在SpringMVC中,/和/*
   /:只匹配所有的請求,不會去匹配jsp頁面
   /* : 匹配所以的請求,包括jsp頁面。
-->
<!--所有請求都會被SpringMVC攔截 -->
   <servlet-mapping>
       <servlet-name>SpringMVC</servlet-name>
       <url-pattern>/</url-pattern>
   </servlet-mapping>
</web-app>

5、添加Spring MVC配置文件
在resource目錄下添加springmvc-servlet.xml配置文件,配置的形式與Spring容器配置基本類似,爲了支持基於註解的IOC,設置了自動掃描包的功能,具體配置信息如下:

<?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.xsd">

<!-- 自動掃描包,讓指定包下的註解生效,由IOC容器統一管理 -->
        <context:component-scan base-package="com.qi.controller"/>
        <!-- 讓Spring MVC不處理靜態資源 css,html等等-->
        <mvc:default-servlet-handler />
        <!--
        支持mvc註解驅動
            在spring中一般採用@RequestMapping註解來完成映射關係
            要想使@RequestMapping註解生效
            必須向上下文中註冊DefaultAnnotationHandlerMapping
            和一個AnnotationMethodHandlerAdapter實例
            這兩個實例分別在類級別和方法級別處理。
            而annotation-driven配置幫助我們自動完成上述兩個實例的注入。
         -->
        <mvc:annotation-driven />
        <!-- 視圖解析器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
              id="internalResourceViewResolver">
            <!-- 前綴 -->
            <property name="prefix" value="/WEB-INF/jsp/" />
            <!-- 後綴 -->
            <property name="suffix" value=".jsp" />
        </bean>
    </bean>


<!--    BeanNameUrlHandlerMapping
        /hello就是 跳轉後http://localhost:8080/SpringMVC_02_helloMVC_war_exploded/hello的hello
-->
    <bean id="/hello" class="com.qi.controller.HelloController"/>
</beans>

在視圖解析器中我們把所有的視圖都存放在/WEB-INF/目錄下,這樣可以保證視圖安全,因爲這個目錄下的文件,客戶端不能直接訪問。
讓IOC的註解生效
靜態資源過濾 :HTML . JS . CSS . 圖片 , 視頻 …
MVC的註解驅動
配置視圖解析器

6、創建Controller

package com.qi.controller;

/**
 * @author zjq
 * @date 2020/4/15 18:43
 */
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {
    @RequestMapping("/hello")
    public String Hello(Model model){
        //封裝數據
        model.addAttribute("msg","Hello,SpringMVC");
        return "hello";//會被視圖解析器處理
    }
}

@Controller是爲了讓Spring IOC容器初始化時自動掃描到;
@RequestMapping是爲了映射請求路徑,這裏因爲類與方法上都有映射所以訪問時應該是/HelloController/hello;
方法中聲明Model類型的參數是爲了把Action中的數據帶到視圖中;
方法返回的結果是視圖的名稱hello,加上配置文件中的前後綴變成WEB-INF/jsp/hello.jsp。
7、創建視圖層
在WEB-INF/ jsp目錄中創建hello.jsp , 視圖可以直接取出並展示從Controller帶回的信息;
可以通過EL表示取出Model中存放的值,或者對象;

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>SpringMVC</title>
</head>
<body>
${msg}
</body>
</html>

8、配置Tomcat運行

注意:

使用Maven的話,需要在Project Structure中查看創建的Module中是否有lib文件夾,以及其中的jar包。沒有的話會報500的錯
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章