公司轉Java開發,作的第一個項目是SpringMVC框架,由於底層是同事封裝,等完成整個項目,對SpringMVC框架的搭建還不是很瞭解,因此抽時間不忙的時候本身搭建了一個SpringMVC框架。css
本次搭建SpringMVC想實現的效果很簡單,就是可以在瀏覽其中直接訪問Controller層,實現HelloWord的展現。前端
一、框架的大致結構:java
2.pom.xml主要是jar包引入web
pom.xml:spring
<?xml version="1.0" encoding="UTF-8"?> <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>org.py</groupId> <artifactId>SpringMvcDemo</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> </dependencies> </project>
其中,build節點是很重要的節點,主要是程序編譯組件的加載,若是沒有該節點,項目啓動不起來。express
引入的必須jar包如上述代碼所示。apache
三、web.xml配置api
<?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"> <!-- 配置前端控制器 --> <!--<servlet>--> <!--<servlet-name>web-dispatcher</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> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--加載前端控制器配置文件 上下文配置位置--> <init-param> <!-- 備註: contextConfigLocation:指定 SpringMVC 配置的加載位置,若是不指定則默認加載 WEB-INF/[DispatcherServlet 的 Servlet 名字]-servlet.xml --> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <!-- 表示隨WEB服務器啓動 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!-- 備註:能夠攔截三種請求 第一種:攔截固定後綴的url,好比設置爲 *.do、*.action, 例如:/user/add.action 此方法最簡單,不會致使靜態資源(jpg,js,css)被攔截 第二種:攔截全部,設置爲/,例如:/user/add /user/add.action此方法能夠實現REST風格的url, 不少互聯網類型的應用使用這種方式.可是此方法會致使靜態文件(jpg,js,css)被攔截後不能正常顯示.須要特殊處理 第三種:攔截全部,設置爲/*,此設置方法錯誤,由於請求到Action,當action轉到jsp時再次被攔截,提示不能根據jsp路徑mapping成功 --> <!-- 默認匹配全部的請求 --> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
四、spring-mvc.xml配置spring-mvc
<?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:aop="http://www.springframework.org/schema/aop" xmlns:c="http://www.springframework.org/schema/c" xmlns:cache="http://www.springframework.org/schema/cache" xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:lang="http://www.springframework.org/schema/lang" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <!-- 自動加載RequestMappingHandlerMapping和RequestMappingHandlerAdapter, --> <!-- 可用在xml配置文件中使用<mvc:annotation-driven>替代註解處理器和適配器的配置。 --> <mvc:annotation-driven/> <!-- 組件掃描器:能夠掃描 @Controller、@Service、@Repository 等等 --> <context:component-scan base-package="org.py.heaton.controller"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
五、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_3_1.xsd" version="3.1"> <!-- 配置前端控制器 --> <!--<servlet>--> <!--<servlet-name>web-dispatcher</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> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--加載前端控制器配置文件 上下文配置位置--> <init-param> <!-- 備註: contextConfigLocation:指定 SpringMVC 配置的加載位置,若是不指定則默認加載 WEB-INF/[DispatcherServlet 的 Servlet 名字]-servlet.xml --> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <!-- 表示隨WEB服務器啓動 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!-- 備註:能夠攔截三種請求 第一種:攔截固定後綴的url,好比設置爲 *.do、*.action, 例如:/user/add.action 此方法最簡單,不會致使靜態資源(jpg,js,css)被攔截 第二種:攔截全部,設置爲/,例如:/user/add /user/add.action此方法能夠實現REST風格的url, 不少互聯網類型的應用使用這種方式.可是此方法會致使靜態文件(jpg,js,css)被攔截後不能正常顯示.須要特殊處理 第三種:攔截全部,設置爲/*,此設置方法錯誤,由於請求到Action,當action轉到jsp時再次被攔截,提示不能根據jsp路徑mapping成功 --> <!-- 默認匹配全部的請求 --> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
六、Controller層:
package org.py.heaton.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; /** * Created by py on 2017/1/5. */ @Controller @RequestMapping(value = "/Index/") public class IndexController { @ResponseBody @RequestMapping(value = "HelloWord") public String HelloWord(){ return "Hello Word!!!!"; } }
七、訪問Controller,有圖可見,能夠正常訪問