1. 使用 maven 新建项目
archetype 列表中选择 maven-archetype-webapp 新建 javaweb 项目.
2. 添加 jar 包
在 pom.xml 文件 dependencies 添加如下 spring-Web,spring-webmvcjar 包, 这两个是 springmvc 依赖包. 添加代码后, IDEA 提示 import, 老规矩, import 一下!
- <!-- http://mvnrepository.com/artifact/org.springframework/spring-web -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-Web</artifactId>
- <version>4.1.4.RELEASE</version>
- </dependency>
- <!-- http://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>4.1.4.RELEASE</version>
- </dependency>
- </dependencies>
3.xml 文件的配置
首先在 webapp/Web-INF/Web.xml 配置服务, 将 Web.xml 原来的代码替换成掉. 因为需要的 Web-App 便签是带有一些属性的, 所以改动的地方很多, 我们看以下两段代码
这是原来的代码:
- <!DOCTYPE Web-App PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd">
- <Web-App>
- <display-name>Archetype Created Web Application</display-name>
- </Web-App>
这是新的代码:
- <Web-App xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- id="WebApp_ID" version="3.0">
- <display-name>web_test</display-name>
- <servlet>
- <servlet-name>spring-mvc</servlet-name>
- <servlet-class>
- org.springframework.Web.servlet.DispatcherServlet
- </servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>spring-mvc</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- <!-- Other XML Configuration -->
- <!-- Load by Spring ContextLoaderListener -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/Web-INF/root-context.xml</param-value>
- </context-param>
- <!-- Spring ContextLoaderListener -->
- <listener>
- <listener-class>org.springframework.Web.context.ContextLoaderListener</listener-class>
- </listener>
- </Web-App>
接下来你会看到代码中报红色的地方, 不要慌, 我们在对应的地方建立这个文件 webapp/Web-INF/root-context.xml, 很好, 然后在同样的地方创建 spring-mvc-servlet.xml(webapp/Web-INF/spring-mvc-servlet.xml)
先解释一下 Web.xml 某些代码:
- <servlet>
- <servlet-name>spring-mvc</servlet-name>
- <servlet-class>
- org.springframework.Web.servlet.DispatcherServlet
- </servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>spring-mvc</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
↑这段代码发挥的作用很重要, 但是也很简单, 不要紧张.
首先看到 < load-on-startup > 标签, 它的作用是优先级, 结果也就是它所在的 < servlet-name>spring-mvc</servlet-name > 这个服务优先启动, 它的 class 路径为我们添加的 spring-Web jar 包的一个类. 所以使用 Web.xml 时, DispatcherServlet 类也就被使用了.<servlet-mapping > 我们暂且忽略.
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/Web-INF/root-context.xml</param-value>
- </context-param>
↑这段代码:<context-param > 配置了 root-context.xml 这个文件来指向 contextConfigLocation 这个 param-name,context 的作用这里也不再说明.
添加 spring-mvc-servlet.xml 和 root-context.xml 代码
添加 spring-mvc-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:p="http://www.springframework.org/schema/p"
- 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-4.1.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-4.1.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
- <context:component-scan base-package="springmvc"/>
- <context:annotation-config/>
- <bean
- class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix">
- <value>/Web-INF/pages/</value>
- </property>
- <property name="suffix">
- <value>.jsp</value>
- </property>
- </bean>
- </beans>
添加 root-context.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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
- <!-- Empty -->
- </beans>
4. 完善项目结构
按照以下项目添加包 (目录),HelloWorldController.java 和 helloworld.jsp 文件.
简单的项目结构
查看 spring-mvc-servlet.xml 文件报错是否消除, 报错部分需要指定到我们 controller.java 所在的包 (springmvc), 如果没有消除报错, 按住 alt+ctrl+shift+s 打开项目结构, 按下图操作添加源路径.
模块 - 源码, 然后点击应用
5. 添加代码运行
HelloWorldController.java 文件添加以下代码
- package springmvc;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.Web.bind.annotation.RequestMapping;
- @Controller
- public class HelloWorldController {
- @RequestMapping("/hello")
- public String hello(Model model) {
- model.addAttribute("greeting", "Hello Spring MVC");
- return"helloworld";
- }
- }
helloworld.jsp 添加以下代码
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <HTML>
- <head>
- <title>helloworld</title>
- </head>
- <body>
- <h1>${greeting}</h1>
- </body>
- </HTML>
好了, 配置本地 tomcat 开始运行项目吧!
运行项目的 / hello 能看到这句话, 那就成功啦, 神奇的 springmvc 就是这么个效果! 可能你还不知道是怎么回事, 再看看代码就明白啦!
成功
6. 解释
关键在这段代码, 它已经声明了自己类是 @Controller, 这样它就能接受请求了,@RequestMapping("/hello") 说明 hello(Model model) 能处理 / hello 这个请求, return "helloworld" 返回的是处理结果的页面, 这里是 helloworld.jsp.
- @Controller
- public class HelloWorldController {
- @RequestMapping("/hello")
- public String hello(Model model) {
- model.addAttribute("greeting", "Hello Spring MVC");
- return"helloworld";
- }
springmvc 请求响应过程
现在我们能简单实用 springmvc 了, springmvc 的几种请求以及原理还需要再多多学习, 感谢这篇文章教程, Spring4 MVC HelloWord 实例 -- 易百教程, 里边还有几个例子
来源: http://www.jianshu.com/p/4a3c30d8f6c9