用maven创建第一个SpringMVC
首先创建一个maven项目,然后依次完成如下配置:
在pom.xml加入如下基础配置,利用maven加载我们所需要的jar:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.imooc</groupId>
<artifactId>springmvc</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>springmvc Maven Webapp</name>
<url>http://maven.apache.org</url> <properties>
<!-- 声明各个依赖包的版本号,在下面描写依赖的时候则不需要再声明 -->
<commons-lang.version>2.6</commons-lang.version>
<slf4j.version>1.7.6</slf4j.version>
<spring.version>4.1.3.RELEASE</spring.version>
</properties> <!-- 依赖管理,用来管理jar之间的依赖关系 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>${spring.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> <dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<!-- 由于上面已经声明版本号,这里就不需要再声明 -->
</dependency> <dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<!-- 这里直接引用上面声明的版本号即可 -->
<version>${commons-lang.version}</version>
</dependency> <!-- 有关日志的包 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency> <dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency> </dependencies> <build>
<!-- 插件 -->
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.2.v20140723</version>
<!-- <groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/webapp/index.jsp</url>
</configuration> -->
</plugin>
</plugins>
</build>
</project>
在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"> <display-name>Spring MVC Study</display-name>
<!-- Spring应用上下文,理解层次化的ApplicationContext -->
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- Spring自己的配置文件 -->
<param-value>/WEB-INF/configs/spring/applicationContext*.xml</param-value>
</context-param> <listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener> <!-- 利用下面的servlet和servlet-mapping标签将前端控制器配置到web中, -->
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- DispatcherServlet对应的上下文配置, 默认为/WEB-INF/$servlet-name$-servlet.xml
如果没有init-param,则会默认加载上述的默认配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 在/WEB-INF/相应目录下创建如下的xml文件 -->
<param-value>/WEB-INF/configs/spring/mvc-dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<!-- 这里的servlet-name与上面的servlet标签里的servlet-name保持一致 -->
<servlet-name>mvc-dispatcher</servlet-name>
<!-- mvc-dispatcher拦截所有的请求-->
<!-- 这里url-pattern指定了不同url来源的依据 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
创建mvc-dispatcher-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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 激活@Required @Autowired @PostConstruct @PreDestroy @Resource等注解,
使得在类中可以利用注解来实例化相应对象 -->
<context:annotation-config /> <!-- DispatcherServlet上下文,只搜索@Controller标注的类,不搜索其他标注的类 -->
<context:component-scan base-package="com.imooc.mvcdemo">
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan> <!-- 让DispatcherServlet启用基于annotation的HandlerMapping -->
<mvc:annotation-driven /> <!-- 配置ViewResolver,告诉servlet将由哪个ViewResolver获取view,这里使用JstlView -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<!-- 配置其前缀prefix,表示jsp文件在/WEB-INF/jsps/目录下,配置其后缀suffix,表示其文件类型是.jsp -->
<property name="prefix" value="/WEB-INF/jsps/" />
<property name="suffix" value=".jsp" />
</bean> </beans>
创建applicationContext.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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:annotation-config /> <!-- 这里不需要管理Controller -->
<context:component-scan base-package="com.imooc.mvcdemo">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
</beans>
至此,配置文件加载完毕,加入前端控制器:
package com.imooc.mvcdemo.controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
@RequestMapping("/hello")
public class HelloMvcController { @RequestMapping("/mvc")
//这里经过@RequestMapping配置之后可以由浏览器访问localhost:8080/hello/mvc
public String helloMvc() {
//返回到home.jsp
return "home";
}
}
全部做完之后,运行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)相结合,然后返回给用户。
用maven创建第一个SpringMVC的更多相关文章
- Maven3路程(一)用Maven创建第一个web项目(1)
一.创建项目 1.Eclipse中用Maven创建项目 上图中Next 2.继续Next 3.选maven-archetype-webapp后,next 4.填写相应的信息,Packaged是默认创建 ...
- Maven3路程(三)用Maven创建第一个web项目(1)
一.创建项目 1.Eclipse中用Maven创建项目 上图中Next 2.继续Next 3.选maven-archetype-webapp后,next 4.填写相应的信息,Packaged是默认创建 ...
- Maven3路程(三)用Maven创建第一个web项目(2)servlet演示
上一章用Maven新建了web项目成功后,本文演示在此基础上应用servlet. 1.首先修改pom.xml文件,添加servlet依赖 <project xmlns="http:// ...
- 用Maven创建第一个web项目
http://www.cnblogs.com/leiOOlei/p/3361633.html 一.创建项目 1.Eclipse中用Maven创建项目 上图中Next 2.继续Next 3.选maven ...
- Maven3 用Maven创建第一个web项目(2)servlet演示
上一章用Maven新建了web项目成功后,本文演示在此基础上应用servlet. 1.首先修改pom.xml文件,添加servlet依赖 <project xmlns="http:// ...
- Myeclipse2014 用Maven创建第一个web项目(1)---helloworld
一.创建项目 1.Eclipse中用Maven创建项目 2.继续Next 3.选maven-archetype-webapp后,next 4.填写相应的信息,Packaged是默认创建一个包,不写也可 ...
- JAVA学习5:用Maven创建第一个web项目(2)servlet演示
上一章用Maven新建了web项目成功后,本文演示在此基础上应用servlet. 1.首先修改pom.xml文件,添加servlet依赖 <project xmlns="http: ...
- Maven创建web项目:SpringMVC+Mybatis 【转】
IDEA14创建Maven管理的SpringMVC+Mybatis,web项目 项目构建步骤 1.File->New->Project 勾选Create from archetype 点击 ...
- 用Maven创建第一个web项目Struts2项目
一.创建一个web项目 参考前面文章,项目名:maven-struts-demo. 二.配置pom.xml文件添加struts2依赖 <project xmlns="http://ma ...
随机推荐
- PAT——乙级1036:跟奥巴马一起编程 &乙级1027:打印沙漏 (有坑)
乙级1036 1036 跟奥巴马一起编程 (15 point(s)) 美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014 年底,为庆祝“计算 ...
- UnrealEngine4入门(二) 实现一个可用按键控制的球体
源码摘自官网guide,加上部分自己的理解和注释 接上篇博客 本文实现一个可用WASD控制滚动的球体 先创建一个可见的球体: 在CollidingPawn.cpp的构造函数ACollidingPawn ...
- C#-WinForm控制输入框只接受数字输入
背景 给导师上一节c#编写数据库应用程序的课,模拟ATM自助取款机的功能写了个winForm程序,关于金额的输入肯定是数字,因此避免输入格式不正确的数字带来异常,直接在输入时进行校验. 封装函数 C# ...
- $this是什么意思-成员变量和局部变量的调用
关键字$this代表其所在的当前对象 使用当前对象的属性和方法 $this->取值 方法内的局部变量 不能用$this 关键字取值 /* 和java,c++相比 方法体内想访问调用者的属性,必须 ...
- Good Time 冲刺 三
第三天 日期:2018.6.16 一.今日完成任务情况及遇到的问题 王怡镔:继续在学习微信小程序的设计,完善设计发现页面,开始编写发现页面 于鑫宇:配合黄鹤的工作,学习端口相关知 胡雅馨:继续改进优化 ...
- WEB-INF目录
背景: 在项目中,使用 "${pageContext.request.contextPath}/image/01.jpg"获取不到该图片.在浏览器中直接输入地址也找不到,报错404 ...
- 高效的序列化组件 Protobuf-net
什么是ProtoBuf-net Protobuf是google开源的一个项目,用户数据序列化反序列化,google声称google的数据通信都是用该序列化方法.它比xml格式要少的多,甚至比二进制数据 ...
- [剑指Offer] 36.两个链表的第一个公共结点
题目描述 输入两个链表,找出它们的第一个公共结点. [思路]找出两个链表的长度,然后让长的走两个链表的长度差,然后再一起走(因为两个链表用公共的尾部). /* struct ListNode { in ...
- jsp实用过滤器写法
使用过滤器来给servlet设置编码 public class CharacterEncodingFilter implements Filter{ @Override public void des ...
- input属性 disabled与readonly的区别
从效果上看 源码 <!DOCTYPE html> <html> <head lang="en"> <meta charset=" ...