zoukankan      html  css  js  c++  java
  • 用maven创建第一个SpringMVC

    首先创建一个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可以用来分发不同的请求。

    例子:秒杀系统SpringMVC运行流程

    图解:

    第一步:用户会发送一个请求,所有的请求都会发送到DispatcherServlet,这个servlet会拦截所有的请求。

    第二步:这个servlet默认会用到DefaultAnnotation HandlerMapping,主要用来映射url对应于具体的handler。

    第三步:在HandlerMapping使用完之后,会使用DefaultAnnotation HandlerAdapter,用来做handler的适配。

    第四步:最终会衔接我们自己开发SeckillController,若有拦截器也会在此绑定其中。

    第五步:所有适配绑定完成之后会得到ModelAndView,这里例子给出的是list.jsp,并会将其交付给servlet。

    第六、七、八步:InternalResource ViewResolver会将Model和list.jsp(JSON)相结合,然后返回给用户。

  • 相关阅读:
    [NOI2019]回家路线(最短路,斜率优化)
    LOJ6686 Stupid GCD(数论,欧拉函数,杜教筛)
    Codeforces Global Round 4 题解
    CF908G New Year and Original Order(DP,数位 DP)
    [BJOI2019]光线(DP)
    CF1194F Crossword Expert(数论,组合数学)
    SPOJ31428 FIBONOMIAL(斐波那契数列)
    Codeforces Round 573 (Div.1) 题解
    [THUPC2018]弗雷兹的玩具商店(线段树,背包)
    数学基础
  • 原文地址:https://www.cnblogs.com/cing/p/7490646.html
Copyright © 2011-2022 走看看