Java Spring MVC專案搭建(二)——專案配置
文章轉載自:https://www.cnblogs.com/eczhou/p/6287876.html
1、站點配置檔案web.xml
每一個Spring MVC 專案都必須有一個站點配置檔案web.xml,他的主要功能嗎....有一位大哥已經整理的很好,我借來了,大家看看:
引用部落格地址: http://www.cnblogs.com/yqskj/articles/2233061.html
1、指定歡迎頁面,例如: <welcome-file-list> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index1.jsp</welcome-file> </welcome-file-list> PS:指定了2個歡迎頁面,顯示時按順序從第一個找起,如果第一個存在,就顯示第一個,後面的不起作用。如果第一個不存在,就找第二個,以此類推。 關於歡迎頁面: 訪問一個網站時,預設看到的第一個頁面就叫歡迎頁,一般情況下是由首頁來充當歡迎頁的。一般情況下,我們會在web.xml中指定歡迎頁。但 web.xml並不是一個Web的必要檔案,沒有web.xml,網站仍然是可以正常工作的。只不過網站的功能複雜起來後,web.xml的確有非常大用處,所以,預設建立的動態web工程在WEB-INF資料夾下面都有一個web.xml檔案。 2、命名與定製URL。我們可以為Servlet和JSP檔案命名並定製URL,其中定製URL是依賴命名的,命名必須在定製URL前。下面拿serlet來舉例: (1)、為Servlet命名: <servlet> <servlet-name>servlet1</servlet-name> <servlet-class>org.whatisjava.TestServlet</servlet-class> </servlet> (2)、為Servlet定製URL、 <servlet-mapping> <servlet-name>servlet1</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> 3、定製初始化引數:可以定製servlet、JSP、Context的初始化引數,然後可以再servlet、JSP、Context中獲取這些引數值。 下面用servlet來舉例: <servlet> <servlet-name>servlet1</servlet-name> <servlet-class>org.whatisjava.TestServlet</servlet-class> <init-param> <param-name>userName</param-name> <param-value>Daniel</param-value> </init-param> <init-param> <param-name>E-mail</param-name> <param-value>[email protected]</param-value> </init-param> </servlet> 經過上面的配置,在servlet中能夠呼叫getServletConfig().getInitParameter("param1")獲得引數名對應的值。 4、指定錯誤處理頁面,可以通過“異常型別”或“錯誤碼”來指定錯誤處理頁面。 <error-page> <error-code>404</error-code> <location>/error404.jsp</location> </error-page> ----------------------------- <error-page> <exception-type>java.lang.Exception<exception-type> <location>/exception.jsp<location> </error-page> 5、設定過濾器:比如設定一個編碼過濾器,過濾所有資源 <filter> <filter-name>XXXCharaSetFilter</filter-name> <filter-class>net.test.CharSetFilter</filter-class> </filter> <filter-mapping> <filter-name>XXXCharaSetFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 6、設定監聽器: <listener> <listener-class>net.test.XXXLisenet</listener-class> </listener> 7、設定會話(Session)過期時間,其中時間以分鐘為單位,假如設定60分鐘超時: <session-config> <session-timeout>60</session-timeout> </session-config>
下面我們在/WebContent/WEB-INF/
下新建web.xml
檔案,具體內容如下,裡面有一些最基本的配置,裡面的配置都有註釋:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <description> Spring MVC DEOM </description> <display-name>springMVC</display-name> <!-- CharacterEncodingFilter類具有encoding和forceEncoding兩個屬性,其中encoding是表示設定request的編碼,forceEncoding表示是否同時設定response的編碼。 <filter>下的<filter-name>內的值和<filter-mapping>下的<filter-name>內的值要完全一致 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <!-- /下的所有請求都為UTF-8編碼 --> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Spring MVC相關設定 <servlet>下的<servlet-name>內的值和<servlet-mapping>下的<servlet-name>內的值要完全一致 --> <servlet> <servlet-name>SpringMVC-DEOM</servlet-name> <!-- DispatcherServlet主要負責流程的控制 --> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- Spring MVC配置檔案路徑 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/springMVC-servlet.xml</param-value> </init-param> <!-- 表示啟動容器時初始化該Servlet --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVC-DEOM</servlet-name> <!-- 表示哪些請求交給Spring Web MVC處理, “/” 是用來定義預設servlet對映的。也可以如“*.html”表示攔截所有以html為副檔名的請求。 --> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
有的初學者可能會說,看了註釋好像還是不能完全明白其中的意思,我要說的是,先不要急於完全瞭解每個配置的含義,等到做的專案多了了解Spring MVC整個執行機制自然會慢慢明白,不可因為看不明白而不去學了,放棄了,要允許暫時存在一些疑問。
2、Spring MVC配置檔案
大家肯定都注意到web.xml檔案裡有個配置為 “/WEB-INF/springMVC-servlet.xml” 這個檔案是Spring MVC的配置檔案,Spring官方文件上推薦的預設的檔名是[servlet-name]-servlet.xml
檔案,這裡 servlet-name 叫 springMVC,因此,我新建了一個springMVC-servlet.xml
。
我們現在在/WEB-INF/下建立一個/springMVC-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:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd"> <bean id = "helloworld" class="com.game.controller.Helloworld"> </bean> </beans>
這個檔案內容不多,裡面真正有意義的內容為
<bean id = "helloworld" class="com.game.controller.Helloworld"> </bean>
這是啥意思呢? 這個東西叫做bean, Spring 中的bean是什麼鬼? 簡單來說在Spring啟動之前bean就是一個普通java類,但不是說所有的java類都是bean ,如果一個普通類想要成為bean必須要在配置檔案裡配置,就是說每一個bean都要對應一個java類檔案,就是上面你看到的。每一個Bean對應通常需要指定兩個屬性。
id:確定該Bean的唯一識別符號,容器對Bean管理、訪問、以及該Bean的依賴關係,都通過該屬性完成。Bean的id屬性在Spring 配置檔案中是唯一的。
class:指定該Bean的具體實現類。注意這裡不能使介面。通常情況下,Spring會直接使用new關鍵字建立該Bean的例項,因此,這裡必須提供Bean實現類的類名。
當Spring 啟動之後會把配置檔案(<bean>)裡的這些java類,new 一個物件,存在Spring 裡(有的地方稱為 Spring 容器),有可能會有很多物件在Spring 裡面(多個bean),當我們寫程式碼的時候就可以直接去用這些物件,而不用再去建立物件了。注意:只有在配置檔案裡宣告過的類才會被建立物件,其他的類不會被建立為bean。
那麼bean是什麼呢? bean就是存在於Spring 容器中的物件。如果把Spring 比作一輛汽車,bean就是汽車裡的各個模組零件,比如:發動機,變速箱,電路系統等,當汽車啟動時候就已經將他們啟用,就可以直接使用這些模組,而不用再去單獨啟動這些模組。