1. 程式人生 > >Java框架-Spring MVC理解001

Java框架-Spring MVC理解001

welcome 如果 bean resource onf lang spa lan 檢測

Spring MVC理解

最近在讀一本《看透springMVC》的書,從了解到了一些更加精細系統的知識,邊讀變分享吧。

1.servlet--Spring MVC的本質

2.Spring MVC其實是一個工具,具體的理解可以分為兩步:第一步,了解這個工具是怎麽創建出來的;第二步,了解這個工具是怎麽用的。

3.前期使用準備:環境的搭建

  ①創建WEB項目,導入jar包,Maven項目簡單的加入springMVC和servlet的依賴就可以了.

//Maven項目加入依賴
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version> 4.1.5.RELEASE</version>
</dependency>

  不是Maven項目需要導入的jar包:

技術分享圖片

  ②springMVC的簡單配置

  配置一個Spring MVC只需要三步:①在web.xml中配置Servlet;②創建Spring MVC的xml配置文件;③創建Controller和view。下面分別介紹。

 在web.xml中配置Servlet:

<?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_3_1.xsd" version="3.1"> <!-- spring mvc配置開始 --> <servlet> <servlet-name>Name</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class
> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Name</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- spring mvc配置結束 --> <welcome-file-list> <welcome-file>index</welcome-file> </welcome-file-list> </web-app> 這裏配置了一個叫Name的Servlet,自動啟動,然後mapping到所有的請求。
所配置的Servlet是DispatcherServlet類型,它就是Spring MVC的入口,Spring MVC的本質就是一個Servlet。
在配置DispatcherServlet的時候可以設置contextConfigLocation參數來指定Spring MVC配置文件的位置,
如果不指定就默認使用WEB-INF/[ServletName]-servlet.xml文件,這裏使用了默認值,也就是WEB-INF/Name-servlet.xml文件。

創建Spring MVC的xml配置文件
首先在WEB-INF目錄下新建let’sGo-servlet.xml文件,然後使用Spring MVC最簡單的配置方式來進行配置。

<!--WEB-INF/Name -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:p="http://www.springframework.org/schema/p" 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"> <mvc:annotation-driven/> <context:component-scan base-package="com.excelib" /> </beans>

<mvc:annotation-driven/>是Spring MVC提供的一鍵式的配置方法,配置此標簽後Spring MVC會幫我們自動做一些註冊組件之類的事情。這種配置方法非常簡單,<mvc:-annotation-driven/>背後的原理會在後面詳細解釋。另外還配置了context:component-scan標簽來掃描通過註釋配置的類,如果使用了Spring可以通過context:include-filter子標簽來設置只掃描@Controller就可以了,別的交給Spring容器去管理,不過這裏只配置了Spring MVC,所以就全部放到Spring MVC裏了。只掃描@Controller的配置如下:

<context:component-scan base-package="com.excelib" use-default-filters="false">
<context:include-filter type="annotation"expression="org.springframework.stereotype.Controller" />
</context:component-scan>

 創建Controller和view
到現在Spring MVC的環境就已經搭建完成了。下面寫個Controller和View,這樣就可以運行了。
首先在com.excelib.controller包下建一個類——GoController。

package com.excelib.controller;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class GoController {
private final Log logger = LogFactory.getLog(GoController.class);
//處理HEAD類型的”/”請求
@RequestMapping(value={"/"},method= {RequestMethod.HEAD})
public String head() {
    return "go.jsp";
}
//處理GET類型的"/index"和”/”請求
@RequestMapping(value={"/index","/"},method= {RequestMethod.GET})
public String index(Model model) throws Exception {
   logger.info("======processed by index=======");
   //返回msg參數
   model.addAttribute("msg", "Go Go Go!");
   return "go.jsp";
  }
}

這裏單獨寫了處理HEAD請求的方法,此方法可以用來檢測服務器的狀態,因為它不返回body所以比GET請求更節省網絡資源。而單獨寫一個處理方法而不跟GET請求使用同一個方法,然後返回沒有Body的Response是因為GET請求的處理過程可能會處理一些別的內容,如初始化一些首頁需要顯示的內容,還可能會連接數據庫,而這些都比較浪費資源,並且對於HEAD請求來說也是不需要的,所以最好單獨寫一個方法。
如果沒有配置ViewResolver,Spring MVC將默認使用org.springframework.web.servlet.view.InternalResourceViewResolver作為ViewResolver,而且prefix和suffix都為空。所以go.jsp返回值對應的就是根目錄下的go.jsp文件。我們就把它建出來。

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

好了,現在編譯後部署到Tomcat就可以運行了,運行ing.....

Java框架-Spring MVC理解001