1. 程式人生 > >利用WebApplicationInitializer配置SpringMVC取代web.xml

利用WebApplicationInitializer配置SpringMVC取代web.xml

對於Spring MVC的DispatcherServlet配置方式,傳統的是基於XML方式的,也就是官方說明的XML-based,如下:

<servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation<
/param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> <
/servlet-mapping>
但是Spring文件建議我們採用code-based這種方式,當然,核心就是實現WebApplicationInitializer這個介面,檢視這個介面的原始碼,裡面也非常簡單,只有一個方法,傳入的引數是ServletContext:

void onStartup(ServletContext servletContext) throws ServletException;

下面是一個小例子:

1.專案結構:

這裡寫圖片描述

2.MyWebAppInitializer.java

public class MyWebAppInitializer
implements WebApplicationInitializer {
@Override public void onStartup(ServletContext servletContext) throws ServletException { XmlWebApplicationContext appContext = new XmlWebApplicationContext(); appContext.setConfigLocation("classpath:spring-mvc.xml"); ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(appContext)); dispatcher.setLoadOnStartup(1); dispatcher.addMapping("/"); } }

3.UserController.java

@Controller
public class UserController {
    @RequestMapping("/show")
    public String show() {
        return "show";
    }
}

4.spring-mvc.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"
           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">

    <!-- 掃描註解的base package -->
    <context:component-scan base-package="com.springmvc" />

    <!-- 對模型檢視名稱的解析,即在模型檢視名稱新增前後綴 -->
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

5.show.jsp

6.啟動Tomcat後輸入url後發現是會出現結果的,code-based是成功的!

  1. pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.springmvc</groupId>
    <artifactId>MyWebAppInitializer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>utf8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.7.2</version>
                <configuration>
                    <forkMode>once</forkMode>
                    <argLine>-Dfile.encoding=UTF-8</argLine>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <properties>
        <spring-version>4.3.1.RELEASE</spring-version>
    </properties>

    <dependencies>

        <!-- spring相關 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring-version}</version>
        </dependency>

        <!-- log4j日誌相關 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-servlet-api</artifactId>
            <version>7.0.54</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

    </dependencies>
</project>

相關推薦

利用WebApplicationInitializer配置SpringMVC取代web.xml

對於Spring MVC的DispatcherServlet配置方式,傳統的是基於XML方式的,也就是官方說明的XML-based,如下: <servlet> <servlet-name>springMVC</serv

SpringMVC基於代碼的配置方式(零配置,無web.xml

-c size ons imp .net rri import 右鍵 無需 基於配置文件的web項目維護起來可能會更方便,可是有時候我們會有一些特殊的需求,比方防止客戶胡亂更改配置,這時候我們須要給配置隱藏到代碼中。 1.創建一個動態web項目(無需w

關於SpringMvcweb.xml配置的Servlet

< servlet >    <!-- 配置DispatcherServlet -->    < servlet-name >springMvc</ serv

SpringMVCweb.xml配置理解

在web.xml種這樣配置 <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </list

Springmvc專案web.xml中servlet-mapping的路徑對映配置注意事項

今天準備在IDEA編輯器下建立個通過maven管理的springMVC工程來測試一些功能,按照記憶中的方式以及配合百度完成了工程的建立,但在訪問web.xml中配置的首頁時,無論如何都無法訪問,試了很多方式,但都不是很理想,無意間仔細看了下下的對映規則,再結合自

springMVCweb.xml配置/和/*的區別

新建一個spring專案發現無法訪問到jsp頁面,靜態html也無法訪問,終於找到答案,原來是spring攔截配置的不對,一直寫的是這種配置,今天發現是不對的,好在找到了答案:) springmvc /* 一、我們都知道在基於Spring的Application中,需要在w

SpringMVC基於程式碼的配置方式(零配置,無web.xml

基於配置檔案的web專案維護起來可能會更方便,但是有時候我們會有一些特殊的需求,比如防止客戶胡亂更改配置,這時候我們需要給配置隱藏到程式碼中。 1.建立一個動態web專案(無需web.xml) 2.右鍵專案新增幾個package: com.easyweb.c

Springmvcweb.xml配置詳解

 <!-- springMVC核心配置 --> <servlet>  <servlet-name>dispatcherServlet</servlet-name>  <servlet-class>org.springframework.web.ser

SpringMVCweb.xml基本配置

web.xml檔案的作用: 1.指定webapp的名稱 <display-name>SpringMVCDemo</display-name> 2.初始化上下文引數,裝載spring配置 <context-param> <param-

SpringMVC 通過java類配置(不通過web.xmlxml 配置檔案方式)

介紹:springMVC 常用的配置方式是在web.xml 中配置dispatcherservlet 和 ContextConfigLocation 和一些攔截器,然後或是配置applicationContext-mvc.xml 然後在controller 等類中加上註解的方

項目的配置文件-web.xml

splay patch con springmvc att .html ont size log web.xml <?xml version="1.0" encoding="utf-8"><web-app ......> <welcome

配置struts時web.xml中<url-pattern>*.action</url-pattern>

names val put eth package pan 評論 dispatch mce <filter> <filter-name>struts2</filter-name> <filter-class>org

eclipse環境Dynamic web module version 3.1版本的進步,簡化Dynamic web object 中Servlet類的配置,不用web.xml配置<Servlet>

-a utf-8 新建 分享 tde ati servle eclipse cati eclipse環境Dynamic web module version 3.1版本之前,Dynamic web object 中Servlet類的配置,要在web.xml 配置<Se

ssm框架整合入門系列——配置SpringMVC dispatcherServlet-servlet.xml

配置SpringMVC dispatcherServlet-servlet.xml 在ssm-crud專案中 SpringMVC的配置主要是在dispatcherServlet-servlet.xml檔案 在這之前,先修改beans的頭資訊,否則按alt+/ 快捷鍵沒有

ssm框架整合入門系列——編寫ssm整合的關鍵配置檔案(web.xml

編寫ssm整合的關鍵配置檔案(web.xml) 前言 web.xml,一個Tomcat工程中最重要的配置檔案。web.xml沒有其實也可以----只要你確定你的專案裡面不需要任何過濾器、監聽器、Servlet等等 在啟動一個WEB專案的時候,WEB容器(比如t

ssm專案學習3-ssm整合的關鍵配置檔案(web.xml等)

1.在web.xml中編寫ssm整合的關鍵配置檔案(包括:web.xml、spring、 springwebmvc的等)   首先在web.xml中:        1. 加入啟動spring的容器的配置檔案: #contextloade

springmvc-沒有web.xmlspringmvc.xml你還可以執行起來springmvc

前面也寫了幾篇有關springboot的簡單使用的文章,也寫了幾篇有關springcloud的文章,不過springcloud是基於springboot的。所以就來糾結一下springboot的吧。 springboot之所以可以不用使用任何的xml配置檔案就可

配置servlet的web.xml檔案導致tomcat無法啟動

我們按正常步驟建立servlet,接著配置web.xml檔案,然後我們啟動伺服器時發現提示如下錯誤: 提示Tomcat伺服器遇到一個問題,那我們首先看一下java檔案: 我們可以發現在13行處:@WebServlet("/HelloWorld") 接下來看一下x

配置Tomcat時web.xml、server.xml和content.xml自動還原問題

當我們在處理中文亂碼或是配置資料來源時,我們要修改Tomcat下的server.xml和content.xml檔案。 但是當我們修改完後重啟Tomcat伺服器時發現xml檔案又被還原了,修改無效果。 為什麼會還原? Tomcat伺服器在Eclipse中啟動時,會自動釋出Eclipse中部

SSH框架中的配置檔案值web.xml

Web.xml <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.s