1.前提
前面已经搭建好maven,现在就开始写一个springMVC的项目来配合试一下
2.添加jar
maven可以管理项目依赖的jar包,通过groupID、artifactId以及版本号可以唯一确定一个jar包。这样可以防止老式Web项目中WEB-INF/lib下jar包不一致的问题。并且maven还会自动下载添加进的jar包所依赖的jar包。
2.1.在pom.xml中添加所需要的jar包
这里有两种方法,一种是直接去网页去看你所需要的jar在pom.xml里面写,另一种就是在eclipse中直接页面添加
2.1.1.eclipse页面中添加
使用Maven POM editor打开项目中的pom.xml文件,选择Dependencies,在Dependencies栏目点击Add进行,首先弹出一个搜索按钮,例如输入spring-web,就会自动搜索关于spring-web相关的jar包,我们选择3.0.5版本的spring。将spring包全部添加进来。需要添加的其他jar包有:junit、jstl。或者点击pom.xml直接编辑pom.xml文件。这样可以直接copy过来dependencies内容。
注:jar的说明
当添加进入一个jar包后,有一些属性需要设置,最重要的就是scope,它有以下几种取值:
1.compile,缺省值,适用于所有阶段,会随着项目一起发布。
2.provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
3.runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
4.test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
5.system,类似provided,需要显式提供包含依赖的jar,Maven不会在 Repository中查找它。
2.1.2.根据依赖直接在pom.xml里面写
http://mvnrepository.com/
备注:无论用哪种方法都要注意每个jar之间的依赖关系。
3.构建SpringMVC框架
3.1.编辑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/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5" >
<!-- 区分项目名称,防止默认重名 -->
<context-param>
<param-name>vote</param-name>
<param-value>maven.vote.root</param-value>
</context-param>
<!-- Spring的log4j监听器 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</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>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
3.2.编写Spring配置文件dispatcher-servlet.xml
如要添加MVC驱动、注解检测、视图解析等
<?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/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<mvc:annotation-driven />
<context:component-scan base-package="com.maven.example" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
3.3.编写一个Controller层测试类
编写一个SpringMVC的Controller层测试类。此类只有一个方法做地址映射,并向页面传递一个数据。代码如下:
/**********************************************************
* 项目名称:vote
* 类名称:GeneralController
* 类描述:
* 创建人:七夜琉璃
* 创建时间:2016年2月29日 上午8:48:18
* 修改备注:
**********************************************************/
package com.maven.example;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping(value="votes")
public class GeneralController {
@RequestMapping(value="index")
public ModelAndView index_jsp(){
ModelAndView mav = new ModelAndView();
mav.setViewName("index");
mav.addObject("molly","molly你好");
System.out.println("index.jsp");
return mav;
}
@RequestMapping(value="second")
public ModelAndView index_jsps(){
ModelAndView mav = new ModelAndView();
mav.setViewName("index");
mav.addObject("molly","molly你好吗");
System.out.println("index.jsp");
return mav;
}
}
3.4.编写index.jsp页面
首先在src/main/webapp/WEB-INF下建文件夹views。此处和dispatcher-servlet.xml配置文件中的prefix属性路径要一样。
在views下建index.jsp文件
我们使用jstl获取Controlleradd的数据。
Jsp页面代码如下:
<%@ 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>Insert title here</title>
</head>
<body>
<c:out value="${molly}"></c:out>
</body>
</html>
3.5.发布到tomcat
在tomcat里面加入工程并启动
3.6.测试
controller类中的类map是链接地址的第一个参数,方法map是第二个,最后一个是界面名称(具体是什么样的看servlet.xml里面怎么配置的)
附注:整个项目的截图
3.7.备注:
对于整个Spring MVC的配置,这里面最主要的难点就是spring jar的依赖问题
具体参照:Spring MVC的介绍说明