1. 程式人生 > >Spring MVC HelloWorld入門及執行機制 (一)

Spring MVC HelloWorld入門及執行機制 (一)

介紹

SpringMVC是一款Web MVC框架。 它跟Struts框架類似,是目前主流的Web MVC框架之一。

文章通過例項來介紹SpringMVC的入門知識。

目錄

 

例項

maven依賴springmvc jar:

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.1.RELEASE</version>
</dependency>

專案結構路徑:

一、配置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"> <!-- 配置請求總控器,由Spring-webmvc提供,它負責接收所有客戶端的請求 ,然後通過解析url並交給後端控制器(Controller)進行請求處理--> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--
springmvc預設會從WEB-INF下查詢名為 [servlet-name]-servlet.xml的配置檔案, 也可以通過init-param重新指定配置檔案的路徑--> <init-param> <param-name>contextConfigLocation</param-name> <!-- 指定從classpath中查詢 --> <param-value>classpath:dispatcher-servlet.xml</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>

二、配置dispatcher-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"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 啟用註解並掃描 -->
    <context:component-scan base-package="edu.nf.ch01.controller"/>
    <!-- 啟用mvc註解驅動-->
    <!-- 這個註解驅動註冊了RequestMappingHandlerMapping(請求對映處理器)
    和一個RequestMappingHandlerAdapter(請求對映介面卡),同時啟用了
    @RequestBody,@ResponseBody註解以及表單驗證的等功能-->
    <mvc:annotation-driven/>

    <!-- 配置檢視解析器,spring有很多種檢視解析器,不同的解析器用於解析成不同的檢視物件
         其中有一個叫做InternalResourceViewResolver(內部資源解析器)
         ,用於解析內部的jsp資源-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 給這個檢視解析器注入兩個屬性 -->
        <!-- 指定資源目錄的字首 -->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!-- 指定資源的字尾-->
        <property name="suffix" value=".jsp"/>
        <!-- 這個解析器預設解析的檢視物件為InternalResourceView,
         如果需要在JSP中使用jstl標籤庫,那麼可以設定為JstlView,
         它是InternalResourceView的子類-->
        <!--<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>-->
    </bean>
</beans>

三、控制器Controller類:

package edu.nf.ch01.controller;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/**
 * @author wangl
 * @date 2018/10/26
 * 後端控制器
 */
@Controller
@Scope("prototype")
public class HelloController {

    /**
     * 通過@RequestMapping來對映請求的url
     * @return
     */
    @RequestMapping("/hello")
    public ModelAndView hello(){
        System.out.println("hello spring");
        ModelAndView mv = new ModelAndView("index");
        return mv;
    }
}

四、請求轉發的頁面

<%--
  Created by IntelliJ IDEA.
  User: wangl
  Date: 2018/10/26
  Time: 10:50
  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>Welcome!</h1>
</body>
</html>