Spring MVC入门实战(一)
本文主要把一个菜鸟从“只是听说过Spring MVC”到“可以手动创建并运行一个Spring MVC工程”的过程记录下来,供以后复习。
0. 开发环境准备
计算机平台:Windows 7 X64。
需要准备的软件和相关库包括:JDK8(jdk-8u74-windows-x64)、Eclipse(eclipse-jee-mars-2-win32-x86_64)、Tomcat(apache-tomcat-7.0.68-windows-x64)、Spring(spring-framework-4.2.5.RELEASE-dist)、Logging(commons-logging-1.2-bin)、Jstl(jakarta-taglibs-standard-1.1.2)。
1. 软件安装
JDK8
安装到系统。安装完成后添加系统环境变量:JAVA_HOME(D:\Program Files\Java\jdk1.8.0_74)、CLASS_PATH(.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar)。如果在cmd中运行“java -version”提示找不到java命令,那么就在PATH环境变量中增加:%JAVA_HOME%\bin;
Tomcat
选择安装包自动安装或者是硬盘解压后运行自带注册脚本均可。然后添加系统环境变量:CATALINA_HOME(D:\Program Files\Java\apache-tomcat-7.0.68)
Eclipse
直接解压到硬盘即可。
配置一下Tomcat服务器方便以后调试:Window -> Preferences -> Server -> Runtime Environment,选择Add弹出“New Server Runtime Enrionment”对话框,选择对应的版本下一步配置Tomcat的根目录最后“Finish”,这样就完成了Eclipse与Tomcat的整合。
配置一下Eclipse编辑器自动提示功能:Window -> Preferences -> Java -> Editor -> Content Assist 中将Auto Activation中的延时设置为200ms,提示符改为“.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”。
Spring、Logging、Jstl
这三个都是以jar包的形式进行应用的,解压出来找到jar包提取出来可以分别放置或混合在一起。在Eclipse中,可以Window -> Preferences -> Java -> Build Path -> User Libraries 将这些依赖库整理在一起,这样有个好处就是在工程应用的时候可以直接添加User Library引用,目录就变得很清晰明了。
2. 创建工程
2.1、打开Eclipse,选择File -> New -> Dynamic Web Project(或者Other中选择),指定工程名之后再下一步,记得勾上“Generate web.xml deployment descriptor”自动生成一个web.xml配置文件。
2.2、右键工程名,选择Properties -> Java Build Path -> Libraries,选择“Add Library” -> User Library 把自己上面制定的自定义库加载进来。

2.3、将Spring、Jstl、Logging库拷贝到WEB-INF/lib目录
为什么加载了依赖库,还要讲库文件拷贝到lib目录呢?原因是在于Web工程是需要在Tomcat中运行的,依赖库只能保证编译成功,却不会自动将依赖库拷贝到Tomcat运行目录下,那么网站也就不能正常访问了!Spring目录中其实有很多jar包是不需要的,不过暂时搞不清楚哪些可以不拷贝,所以干脆都拷贝过去算了。另外就是加上commons-logging-1.2.jar、jstl.jar、standard.jar辅助依赖库。
2.4、配置web.XML文件
在web.xml文件中添加如下配置信息:
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
其中<servlet>定义了一个名为SpringMVC的servlet引入了Spring类,load-on-startup表示工程启动时自动加载。在<servlet-mapping>中url-pattern是用来定义哪些请求需要交给Spring框架进行处理的,“/”表示所有请求,比如说“*.html”就表示所有的html页面请求。
页面请求交给Spring MVC处理后,Spring MVC默认会加载WEB-INF/[DispatcherServlet的Servlet名字]-servlet.xml 配置文件。例如本例中的SpringMVC-servlet.xml。
2.5、配置SpringMVC-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-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"> <!-- HandlerMapping -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!-- HandlerAdapter -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!-- 处理器 -->
<bean name="/xiaoku" class="com.springmvc.xiaoku.HelloWorldController" /> <!-- ViewResolver -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean> </beans>
主要是配置在于:
(1)HandlerMapping是处理器的映射器。BeanNameUrlHandlerMapping表示将URL和Bean的名字进行匹配,例如URL为“上下文/xiaoku”则Spring配置文件中必须有一个“/xiaoku”的Bean,上下文忽略。可以看到后面确实有一个Bean名字为“/xiaoku”,对应的类就是我们自己写的HelloWorldController。
(2)HandlerAdapter是处理器的适配器。SimpleControllerHandlerAdapter表示所有实现了org.springframework.web.servlet.mvc.Controller接口的Bean可以作为Spring Web MVC中的处理器。如果需要其他类型的处理器可以通过实现HadlerAdapter来解决。
(3)ViewResolver是视图解释器。InternalResourceViewResolver用于支持Servlet、Jsp的解析;viewClass设置为JstlView表示JSP模板页面需要使用JSTL标签库,classpath中必须包含jstl的相关jar包;其中prefix和suffix分别表示视图页面的前缀和后缀,访问格式就是“prefix[视图名称].suffix”,例如视图名为xiaoku,那么上面配置指定的访问路径就是“/WEB-INF/jsp/xiaoku.jsp”。
2.6、创建一个Controller
我们的Model层就是Spring MVC框架,这一步我们把Controller层定义一下。
package com.springmvc.xiaoku; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; public class HelloWorldController implements Controller{ @Override
public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
ModelAndView mv = new ModelAndView();
mv.addObject("message", "Hello, my first spring mvc!");
mv.setViewName("xiaoku");
return mv;
} }
这里的HelloWorldController必须继承org.springframework.web.servlet.mvc.Controller,当有也有其他Controller以后再学习。Eclipse编程方便就在于自动提示必须重载的函数接口,ModelAndView包含了视图要实现的模型数据和逻辑视图名,可以添加任意POJO对象。
回头看看那个SpringMVC-servlet.xml,其实里面名为“/name”的Bean指向的Class就是这一步创建的Class,实际上是设计好了再回头配置一下。
2.7、设计一个简单的Jsp页面
上面已经说了视图名为xiaoku,那么就创建一个名为xiaoku.jsp的页面文件,其实Eclipse自动生成的jsp文件就包含了大部分的内容,只需要增加一句话打印一下message(由Controller层传递过来的)信息即可,完整代码如下:
<%@ 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=ISO-8859-1">
<title>My first jsp page</title>
</head>
<body>
第一条信息:${message}
</body>
</html>
2.8、运行工程
配置完成的工程状态如下:

可以选择启动工程调试,或者启动Tomcat服务器,通过浏览器访问:http://localhost:8080/FirstSpringMVC/xiaoku 就可以看到页面效果了!从我实践的效果来看,主要可能出错的地方在于自定义视图名称、Controller名称、Bean名称三者要一致。
总结:
1、环境的搭建要细心,JDK、Eclipse、Tomcat安装要正确,环境变量要设置好;
2、使用Spring、CommonLogging、Jstl库的时候要在工程依赖中加一下,还要在工程lib目录下拷贝一份,这样就不会出现“Class not found”的问题了;
3、使用Spring MVC主要是:配置“web.xml”将访问处理引导给Spring;配置“工程名-servlet.xml”给Spring提供配置信息;定义自己的Controller类处理页面逻辑;制作自己的Jsp页面显示文件;
4、从这个简单的入门例子中可以看出,Spring框架做简单的网站显得很繁琐,但是开发任务的层次划分的很清晰,每一层的任务耦合性比较低,要是开发大型的网站就方便系统设计和多人协作了。
Spring MVC入门实战(一)的更多相关文章
- Spring MVC 入门教程示例 (一)
今天和大家分享下 Spring MVC 入门教程 首先还是从 HelloWorld web 工程开始 -------------------------- 1.首先创建一个Maven Web工程 ...
- Java基础-SSM之Spring MVC入门篇
Java基础-SSM之Spring MVC入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Spring MVC简介 1>.什么是Spring MVC 答:Sprin ...
- Spring框架学习(7)spring mvc入门
内容源自:spring mvc入门 一.spring mvc和spring的关系 spring mvc是spring框架提供的七层体系架构中的一个层,是spring框架的一部分,是spring用于处理 ...
- 【转】spring MVC入门示例(hello world demo)
部分内容来自网络:<第二章 Spring MVC入门 —— 跟开涛学SpringMVC > 1. Spring MVC介绍 Spring Web MVC是一种基于Java的实现了Web M ...
- SSM(spring mvc+spring+mybatis)学习路径——2-1、spring MVC入门
目录 2-1 Spring MVC起步 一.回顾Servlet 二.SpringMVC简介 三.搭建SpringMVC第一个案例 四.简单流程及配置 五.使用注解开发Controller 六.参数绑定 ...
- Spring MVC入门的实例
作为Spring MVC入门,以XML配置的方式为例.首先需要配置Web工程的web.xml文件. 代码清单14-1:web.xml配置Spring MVC <?xml version=&q ...
- Spring MVC入门
1.什么是SpringMvc Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 M ...
- 【Spring】简单的Spring MVC入门例子
前言 测试特性需要搭建一个简单的Spring MVC的例子,遂记录之,只是例子,只为入门者之示例. 版本说明 声明POM文件,指定需引入的JAR. <properties> <spr ...
- 1.【转】spring MVC入门示例(hello world demo)
1. Spring MVC介绍 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于 ...
随机推荐
- Python学习笔记之字符串
一.字符串格式化 >>> format="Hello,%s. %s enough for ya?" >>> values=('World','H ...
- iOS开发UI篇—Quartz2D使用(矩阵操作)
iOS开发UI篇—Quartz2D使用(矩阵操作) 一.关于矩阵操作 1.画一个四边形 通过设置两个端点(长和宽)来完成一个四边形的绘制. 代码: - (void)drawRect:(CGRect)r ...
- Hadoop运行错误纪录
问题1:Cannot run program "/bin/ls": error=11, Resource temporarily unavailable 15/04/22 14:4 ...
- Xcode6.1标准Framework静态库制作方法。工程转Framework,静态库加xib和图片。完美解决方案。
http://www.cocoachina.com/bbs/read.php?tid-282490.html Xcode6.1标准Framework静态库制作方法.工程转Framework,静态库加x ...
- LazyLoad使用注意
今天使用ProgressHUD,进行网络请求后显示加载完成提示框,但是无效,检查以后发现数据源数组使用了懒加载,在调用数组之前调用ProgressHUD里的方法,根本无效啊!以后用懒加载注意.
- Android - 动态调整ListView高度
布局中,如果设计ListView的高度为包裹内容,那么ListView的高度是随着它的子条目的数量的变化而改变的, 这就可能会导致ListView下面的一些控件的位置也会随着ListView的高度的变 ...
- 用CSS定义每段首行缩进2个字符 转
应该遵循w3c所制定的html/xhtml标准来使用tag和编写网页.如果你对此不太了解,可以到w3c的网站www.w3.org去找相关资料,或者买一本xhtml的书(注意不要买过时的html的书,尽 ...
- cas 在.net 下的单点登录实现及 ,Net Mvc的接入
最近在研究单点登录,发现用的最广的就是cas了,查了下资料,发现有人写了详细的说明 地址:http://www.cnblogs.com/zhenyulu/archive/2013/01/22/2870 ...
- android基础(二)Broadcast Receiver知识
1.广播的注册 (1)动态广播注册: 优点:可以灵活控制广播的注册与撤销 缺点:必须在程序启动时才能接收广播 IntentFilter :当Intent在组建之间传递时,组件想告诉android系统自 ...
- C语言之共用体
最近在复习C语言,特再次记录: 有时需要将几种不同类型的变量存放到同一段内存单元中.如一个int.float.char放在同一个地址开始的内存单元中.,也就是使用覆盖技术,几个变量相互覆盖,称之为共用 ...