为了工作的需要有时候会涉及到三个框架的搭建。为了便于自己查看同时也是希望能给其他人一些帮助,特意在此记录一下如何从零基础搭建spring MVC。
1. 工具
1.1 eclipse
编辑工具使用的是eclipse,可以直接从官网下载:http://www.eclipse.org/downloads/. 个人使用的话建议下载Eclipse IDE for Java EE Developers 这个版本即可。
1.2 Apache tomcat
Apache tomcat 服务器建议直接从官网下载:http://tomcat.apache.org/ 本次测试使用的是Apache Tomcat 7.x。
1.3 Spring Framework
Spring Framewrok 同样建议直接在官网下载:http://projects.spring.io/spring-framework/
因为下载地址变动比较大,如果希望快点的话可以按Ctrl+F,在快速搜索栏输入download,点击搜索,这样会加快搜索下载地址链接。
1.4 JDK
JDK可以直接在oracle的官网下载,官网地址: http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
2. 环境搭建
jdk的安装比较简单,在Windows操作系统下直接双击打开即可进入安装界面。eclipse、tomcat和spring framework选择zip压缩包的安装方式,解压即可使用。
2.1 打开eclipse和配置tomcat server
双击eclipse解压目录下的eclipse.exe即可打开eclipse。有两种配置服务器的方式,在此介绍简单的一种。在windows->show view->other->server->servers选中,就会在eclipse编辑器的下方出现server的标签栏。如下图所示:图中的是我已经配好的服务器。
虽然我已经配好了服务器还是简单说下如何配置一个新的服务器。打开server标签栏,右键单机选择new->server。即可进入配置界面。界面如下:
如果server runtime environment没有Apache Tomcat v7.x的选项需要点击Add,然后添加一个运行环境,添加的时候选择Apache Tomcat 的解压目录即可。
2.2 新建一个Dynamic Web Project
File->new->Dynamic Web Project即可新建一个动态web项目,输入项目名选择运行环境,点击finish即可。
打开spring framework的解压目录,在libs目录下有项目所需要的一些jar包。建立最简单的springMVC项目只需要导入,commons-logging.jar和spring-core-4.2.5.RELEASE.jar即可。如果有其他需求,需要导入其他的相关jar包。
将所需的jar包导入 项目名/WebContent/WEB-INF/lib下即可。导入所需的jar包后还需要配置相关的配置文件,主要有web.xml和applicationContaxt.xml。web.xml是一个web项目所不可缺少的配置文件,主要配置一些servlet和过滤器等。applicationContaxt.xml是初始化spring容器相关的配置文件.
在 项目名/WebContent/WEB-INF目录下创建web.xml文件,内容如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.4">
<!-- <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- <filter> <filter-name>OpenSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>OpenSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
在该目录下创建applicationContaxt.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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:annotation-config/>
<!-- 自动扫描com.*.controller包下的所有注解类,由spring创建并维护相应的实体bean -->
<context:component-scan base-package="com.*.controller"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 以下演示 在XML中配置bean的方式 返回 ModelAndView的访问方式 -->
<bean id="modelandview" name="/modelandview.do" class="com.test.controller.ModelAndViewController"/>
</beans>
关于配置文件中的一些配置,可以参考官方提供的一些配置文件查看。
在src目录下创建com.test.controller包,在该包下创建AnnotatioController.java。这个是基于注解的方式配置Controller。由spring容器创建相应的bean并由spring管理。
该类代码如下:
package com.test.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class AnnotatioController{
@RequestMapping("test.do")
public String test()
{
System.out.println("test...");
return "hello";
}
}
当请求是test.do的时候,会响应该类的test方法,并返回hello,由于在spring的配置文件中配置了默认前缀是/WEB-INF/views,默认后缀是.jsp。故响应会返回/WEB-INF/views/hello.jsp页面。页面内容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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>基于注解方式的访问</title>
</head>
<body>
这是基于注解方式的访问方式。参考com/test/controller包下的AnnotatioController类。
</body>
</html>
如何运行web项目?右键点击项目名,选择Run As -> Run on server->选择自己刚才配置好的Apache tomcat 服务器,点击finish即可运行。然后在浏览器的地址栏输入:http://localhost:8080/spring 即可访问web项目。
浏览器响应解析后的界面如下:
同样在该包下创建ModelAndViewController.java类,该类需要继承AbstractController抽象了并实现handleRequestInternal方法。代码如下:
package com.test.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
public class ModelAndViewController extends AbstractController{
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
System.out.println("modelandview");
return new ModelAndView("modelandview");
}
}
创建完类后需要在spring的配置文件中配置相关的bean才可以交给spring管理。
bean中的属性name是设置访问的请求,如果访问的请求是modelandview.do的话就交于该bean响应。该bean会自动调用该类的handleRequestInternal方法,该方法返回一个ModelAndView对象,该对象里可以设置返回的视图和一些对象值。测试返回的是modelandview,则会返回/WEB-INF/views/modelandview.jsp。modelandview.jsp内容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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>基于配置文件的访问</title>
</head>
<body>
这是基于配置文件的访问方式。参考com/test/controller包下的ModelAndViewController类。<br>
配置信息在/WEB-INF/applicationContext.xml中。<br>
ModelAndViewController手动配置信息如下:<br>
<!-- 以下演示 在XML中配置bean的方式 返回 ModelAndView的访问方式 -->
<code>
<bean id="modelandview" name="/modelandview.do" class="com.test.controller.ModelAndViewController"/>
</code>
</body>
</html>
浏览器响应如下:
至此Spring MVC的环境已经搭建好了,本文演示了两种配置SpringMVC请求的方式,一种是基于注解的方式,另一种是基于配置bean的方式。
如果有其他的功能需求,需要导入相关的jar包。