Eclipse springmvc maven Tomcat
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
我的版本1.8.0_131
下载地址:http://tomcat.apache.org/download-80.cgi
这里我选择的是8.5.14版本,apache-tomcat-8.5.14.tar.gz,下载完之后解压到随意目录,如D:/Tomcat
下载地址:https://www.eclipse.org/downloads/eclipse-packages/
选择 Eclipse IDE for Java EE Developers,主要做web开发用。
下载完后在安装过程中也选择Jave EE Develops(如果选择第一个,你会发现创建project中没有Dynamic Web Project工程等选项,所以务必要选对版本), 如图:

File -> New -> Maven Project

选择默认的工作空间目录就好

选择webapp项目骨架

设置项目名称及包名

新建工程完之后,出现错误提示:
The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
根据提示是还没配置http服务器,先创建一个Tomcat服务器

点击错误提示选项卡中的Servers, 点击创建新服务链接

搜索Tomcat,选择Tomcat 8.5 Server,Next下一步

选择Tomcat解压目录,如上面提到的D:/Tomcat。下面是我本机Tomcat的目录,JRE选择自己安装的。一般先安装Java,后安装eclipse,这里会列出已安装的Java版本。如果没有可选择的JRE,则点击installed JREs...手动添加Java安装目录。

选择自己创建的项目mvc,finish完成Server创建

接下来配置Java build path,右键点击项目 -> Build Path -> Configuire Build Path...

在Java build path窗口,选择Libraries选项卡,添加刚才创建的Tomcat Server,点击Add Library -> Server Runtime -> 选择Apache Tomcat v8.5, finish完成。

JRE System Library默认不是我们自己安装的JDK,需要编辑修改,点击右边Edit,选择第三个Workspace default JRE,Finish完成退出

最后点击Apply -> OK,完成配置更改。
这时候再看项目目录,错误红叉消失,Java Resources目录自动增加了src/main/java,src/test/java包的默认资源目录。运行Run,熟悉的Hello World。Maven Project配置第一步成功!

maven通过pom.xml管理着各种包的依赖,相当于php的composer.json
配置spring的pom.xml如下:
<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>cn.mark</groupId><artifactId>mvc</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>mvc Maven Webapp</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>3.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>3.0.5.RELEASE</version></dependency><dependency><groupId>org.apache.geronimo.specs</groupId><artifactId>geronimo-servlet_2.5_spec</artifactId><version>1.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency></dependencies><build><finalName>mvc</finalName></build></project>
这里主要指定Tomcat的URL拦截规则,指定使用springmvc的DispatcherServlet。同时装入spring配置文件/WEB-INF/mvc-servlet.xml。
DispatcherServlet是前置控制器,拦截匹配的请求,Servlet拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理。
位置:/src/main/webapp/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5" ><!-- 区分项目名称,防止默认重名 --><context-param><param-name>webAppRootKey</param-name><param-value>mvc</param-value></context-param><!-- Spring的log4j监听器 --><listener><listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener><!-- 默认配置文件/WEB-INF/applicationContext.xml --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 字符集 过滤器 --><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- Spring view分发器 --><servlet><servlet-name>mvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/mvc-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>mvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>
这是springmvc的配置文件。
<context:component-scan>主要指定了要遍历的package包名为cn.mark.mvc.controller,这个在新建controller文件时要对应这个package名称。InternalResourceViewResolver是视图解析器,以下指定视图文件目录为/WEB-INF/views,后缀名.jsp<mvc:annotation-driven />是注解配置,这个允许你在controller类里加上如@controller、@RequestMapping注解来告诉springmvc这个类可以接收用户请求并指定URL地址映射。位置:/src/main/webapp/WEB-INF/mvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsd"><mvc:annotation-driven /><context:component-scan base-package="cn.mark.mvc.controller" /><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/" /><property name="suffix" value=".jsp" /></bean></beans>
在启动Web容器时,自动装配Spring applicationContext.xml的配置信息,这里可以初始化一些bean,如Hibernate、DataSource等。这里我们先什么也不做。
位置:/src/main/webapp/WEB-INF/applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans></beans>
cn.mark.mvc.controller
输入cn.mark.mvc.controller,这个是与mvc-servlet.xml配置中要扫描的package对应的。


输入控制器名称TestController

创建完之后,复制以下示例代码到TestController.java
package cn.mark.mvc.controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class TestController {@RequestMapping(value="test")public void test(Model model){model.addAttribute("ddc", "邓莫尔, 你好! 我是Spring!");//System.out.println("test.jsp");}}
在/WEB-INF目录下新建文件夹views,新建/WEB-INF/views/test.jsp文件,文件名对应控制器上的RequestMapping的value值,复制示例代码:
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>SpringMVC测试页面</title></head><body><c:out value="${ddc}"></c:out></body></html>
运行Run,访问URL:http://localhost:8080/mvc/test

后续会介绍如何配置数据库、Hibernate以及web前端框架,如GWT、SmartGWT、ExtGWT、Vaadin等,正在学习中,待我学成归来,与大家一起分享~