Java框架-Spring MVC理解001
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