1. 程式人生 > >用maven創建第一個SpringMVC

用maven創建第一個SpringMVC

配置文件 img 全部 訪問 3-0 auto 分享 spa ping

首先創建一個maven項目,然後依次完成如下配置:

在pom.xml加入如下基礎配置,利用maven加載我們所需要的jar:

技術分享
 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 3   <modelVersion>4.0.0</modelVersion>
 4
<groupId>com.imooc</groupId> 5 <artifactId>springmvc</artifactId> 6 <packaging>war</packaging> 7 <version>0.0.1-SNAPSHOT</version> 8 <name>springmvc Maven Webapp</name> 9 <url>http://maven.apache.org</url> 10 11 <properties> 12
<!-- 聲明各個依賴包的版本號,在下面描寫依賴的時候則不需要再聲明 --> 13 <commons-lang.version>2.6</commons-lang.version> 14 <slf4j.version>1.7.6</slf4j.version> 15 <spring.version>4.1.3.RELEASE</spring.version> 16 </properties> 17 18 <!-- 依賴管理,用來管理jar之間的依賴關系 --> 19
<dependencyManagement> 20 <dependencies> 21 <dependency> 22 <groupId>org.springframework</groupId> 23 <artifactId>spring-framework-bom</artifactId> 24 <version>${spring.version}</version> 25 <type>pom</type> 26 <scope>import</scope> 27 </dependency> 28 </dependencies> 29 </dependencyManagement> 30 31 <dependencies> 32 <dependency> 33 <groupId>org.springframework</groupId> 34 <artifactId>spring-webmvc</artifactId> 35 <!-- 由於上面已經聲明版本號,這裏就不需要再聲明 --> 36 </dependency> 37 38 <dependency> 39 <groupId>commons-lang</groupId> 40 <artifactId>commons-lang</artifactId> 41 <!-- 這裏直接引用上面聲明的版本號即可 --> 42 <version>${commons-lang.version}</version> 43 </dependency> 44 45 <!-- 有關日誌的包 --> 46 <dependency> 47 <groupId>org.slf4j</groupId> 48 <artifactId>slf4j-log4j12</artifactId> 49 <version>${slf4j.version}</version> 50 <exclusions> 51 <exclusion> 52 <artifactId>slf4j-api</artifactId> 53 <groupId>org.slf4j</groupId> 54 </exclusion> 55 </exclusions> 56 </dependency> 57 58 <dependency> 59 <groupId>javax.servlet</groupId> 60 <artifactId>javax.servlet-api</artifactId> 61 <version>3.0.1</version> 62 </dependency> 63 64 </dependencies> 65 66 <build> 67 <!-- 插件 --> 68 <plugins> 69 <plugin> 70 <groupId>org.eclipse.jetty</groupId> 71 <artifactId>jetty-maven-plugin</artifactId> 72 <version>9.2.2.v20140723</version> 73 <!-- <groupId>org.apache.tomcat.maven</groupId> 74 <artifactId>tomcat7-maven-plugin</artifactId> 75 <version>2.2</version> 76 <configuration> 77 <url>http://localhost:8080/webapp/index.jsp</url> 78 </configuration> --> 79 </plugin> 80 </plugins> 81 </build> 82 </project>
View Code

在web.xml加入如下基礎配置:

技術分享
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
 5     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 6     
 7   <display-name>Spring MVC Study</display-name>
 8     <!-- Spring應用上下文,理解層次化的ApplicationContext -->
 9     <context-param>
10          <param-name>contextConfigLocation</param-name>
11          <!-- Spring自己的配置文件 -->
12         <param-value>/WEB-INF/configs/spring/applicationContext*.xml</param-value>
13   </context-param>
14   
15   <listener>
16         <listener-class>
17             org.springframework.web.context.ContextLoaderListener
18         </listener-class>
19   </listener>
20   
21   <!-- 利用下面的servlet和servlet-mapping標簽將前端控制器配置到web中, -->
22     <servlet>
23         <servlet-name>mvc-dispatcher</servlet-name>
24         <servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
25         <!-- DispatcherServlet對應的上下文配置, 默認為/WEB-INF/$servlet-name$-servlet.xml
26          如果沒有init-param,則會默認加載上述的默認配置文件-->
27         <init-param>
28           <param-name>contextConfigLocation</param-name>
29           <!-- 在/WEB-INF/相應目錄下創建如下的xml文件 -->
30           <param-value>/WEB-INF/configs/spring/mvc-dispatcher-servlet.xml</param-value>
31         </init-param>
32         <load-on-startup>1</load-on-startup>
33     </servlet>
34     <servlet-mapping>
35     <!-- 這裏的servlet-name與上面的servlet標簽裏的servlet-name保持一致 -->
36         <servlet-name>mvc-dispatcher</servlet-name>
37         <!-- mvc-dispatcher攔截所有的請求-->
38         <!-- 這裏url-pattern指定了不同url來源的依據 -->
39         <url-pattern>/</url-pattern>
40     </servlet-mapping>
41 </web-app>
View Code

創建mvc-dispatcher-servlet.xml,加入如下基礎配置:

技術分享
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 4     xmlns:mvc="http://www.springframework.org/schema/mvc"
 5     xsi:schemaLocation="
 6         http://www.springframework.org/schema/beans
 7         http://www.springframework.org/schema/beans/spring-beans.xsd
 8         http://www.springframework.org/schema/context 
 9         http://www.springframework.org/schema/context/spring-context.xsd
10         http://www.springframework.org/schema/mvc
11         http://www.springframework.org/schema/mvc/spring-mvc.xsd">
12         
13     <!-- 激活@Required @Autowired @PostConstruct @PreDestroy @Resource等註解,
14            使得在類中可以利用註解來實例化相應對象 -->
15     <context:annotation-config />
16     
17     <!-- DispatcherServlet上下文,只搜索@Controller標註的類,不搜索其他標註的類 -->
18     <context:component-scan base-package="com.imooc.mvcdemo">
19         <context:include-filter type="annotation"
20             expression="org.springframework.stereotype.Controller" />
21     </context:component-scan>
22     
23     <!-- 讓DispatcherServlet啟用基於annotation的HandlerMapping -->
24     <mvc:annotation-driven />
25     
26     
27     <!-- 配置ViewResolver,告訴servlet將由哪個ViewResolver獲取view,這裏使用JstlView -->
28     <bean
29         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
30         <property name="viewClass"
31             value="org.springframework.web.servlet.view.JstlView" />
32         <!-- 配置其前綴prefix,表示jsp文件在/WEB-INF/jsps/目錄下,配置其後綴suffix,表示其文件類型是.jsp -->
33         <property name="prefix" value="/WEB-INF/jsps/" />
34         <property name="suffix" value=".jsp" />
35     </bean>
36     
37     
38 </beans>
View Code

創建applicationContext.xml,加入如下基礎配置:

技術分享
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 4     xmlns:mvc="http://www.springframework.org/schema/mvc"
 5     xsi:schemaLocation="
 6         http://www.springframework.org/schema/beans
 7         http://www.springframework.org/schema/beans/spring-beans.xsd
 8         http://www.springframework.org/schema/context 
 9         http://www.springframework.org/schema/context/spring-context.xsd
10         http://www.springframework.org/schema/mvc
11         http://www.springframework.org/schema/mvc/spring-mvc.xsd">
12 
13     <context:annotation-config />
14 
15     <!-- 這裏不需要管理Controller -->
16     <context:component-scan base-package="com.imooc.mvcdemo">
17         <context:exclude-filter type="annotation"
18             expression="org.springframework.stereotype.Controller" />
19     </context:component-scan>
20 </beans>
View Code

至此,配置文件加載完畢,加入前端控制器:

技術分享
 1 package com.imooc.mvcdemo.controller;
 2 
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.web.bind.annotation.RequestMapping;
 5 
 6 @Controller
 7 @RequestMapping("/hello")
 8 public class HelloMvcController {
 9     
10     @RequestMapping("/mvc")
11     //這裏經過@RequestMapping配置之後可以由瀏覽器訪問localhost:8080/hello/mvc
12     public String helloMvc() {
13         //返回到home.jsp
14         return "home";
15     }
16 }
View Code

全部做完之後,運行jetty:run,在瀏覽器中輸入相應url即可得到結果。

技術分享

圖解:

webApplicationContext可以有多個,這也就是我們的context, listener所加載的一個上下文信息,它為我們提供了我們所有應用公共所使用的一些組件和服務,也就是service和dao層等,這些服務應當是被整個應用所共享的,它不應該被局限在某一個DispatcherServlet上下文中。

與特定DispatcherServlet相關的上下文,也可以有多個DispatcherServlet。這些不同的DispatcherServlet可以用來分發不同的請求。

用maven創建第一個SpringMVC