本文主要把一个菜鸟从“只是听说过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入门实战(一)的更多相关文章

  1. Spring MVC 入门教程示例 (一)

    今天和大家分享下  Spring MVC  入门教程 首先还是从 HelloWorld  web 工程开始 -------------------------- 1.首先创建一个Maven Web工程 ...

  2. Java基础-SSM之Spring MVC入门篇

    Java基础-SSM之Spring MVC入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Spring MVC简介 1>.什么是Spring MVC 答:Sprin ...

  3. Spring框架学习(7)spring mvc入门

    内容源自:spring mvc入门 一.spring mvc和spring的关系 spring mvc是spring框架提供的七层体系架构中的一个层,是spring框架的一部分,是spring用于处理 ...

  4. 【转】spring MVC入门示例(hello world demo)

    部分内容来自网络:<第二章 Spring MVC入门 —— 跟开涛学SpringMVC > 1. Spring MVC介绍 Spring Web MVC是一种基于Java的实现了Web M ...

  5. SSM(spring mvc+spring+mybatis)学习路径——2-1、spring MVC入门

    目录 2-1 Spring MVC起步 一.回顾Servlet 二.SpringMVC简介 三.搭建SpringMVC第一个案例 四.简单流程及配置 五.使用注解开发Controller 六.参数绑定 ...

  6. Spring MVC入门的实例

      作为Spring MVC入门,以XML配置的方式为例.首先需要配置Web工程的web.xml文件. 代码清单14-1:web.xml配置Spring MVC <?xml version=&q ...

  7. Spring MVC入门

    1.什么是SpringMvc Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 M ...

  8. 【Spring】简单的Spring MVC入门例子

    前言 测试特性需要搭建一个简单的Spring MVC的例子,遂记录之,只是例子,只为入门者之示例. 版本说明 声明POM文件,指定需引入的JAR. <properties> <spr ...

  9. 1.【转】spring MVC入门示例(hello world demo)

    1. Spring MVC介绍 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于 ...

随机推荐

  1. centos6.5安装sublime text 2

    今天在看ueillemmx的博客的时候,看到一神级编辑器,随即安装试了试,我了个去,果然好用,自动补全,自动对齐,样样精通啊! 下面是根据ueillemmx的步骤在CentOS上安装Sublime的过 ...

  2. Cocos Code IDE新建lua工程报错解决方案

    今天想用cocos code IDE新建一个工程,但是控制台报错:Read json file null failed, the reason is:null.我下载的是官方3.5源码,sdk,ndk ...

  3. 初学jquery,自己写的一个jquery幻灯片,代码有些笨拙,希望有大神可以指点一二,精简一下代码

    html代码 <div class="picCon"> <div class="bigPic"> <ul> <li c ...

  4. 导出Excel 有身份证时注意

    if (this.GridView1.Rows.Count != 0)            {                HttpContext.Current.Response.Clear() ...

  5. Bootstrap自带的chart插件

    <!doctype html> <html> <head> <title>Line Chart</title> <script src ...

  6. Windows Store App 全球化:在XAML元素中引用文件资源

    上一小节讲解了如何在XAML元素中使用x:Uid属性引用资源文件中的字符串资源,通过改变语言首选项显示不同的运行结果.如果把字符串资源变成文件资源,就不能使用x:Uid属性来引用这些文件资源.本小节将 ...

  7. windows下安装KeystoneJS

    安装参考: http://keystonejs.com/zh/getting-started/ http://jsnoder.com/kjs/quickstart 安装前提条件: 安装 Node.JS ...

  8. JavaScript常见问题整合

    一. 基本变化<SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.html', 'newwindow', ...

  9. JAVA 集合List、Map、Set

    Collection(接口) Set(接口) HashSet(类) … List(接口) ArrayList(类) Vector(类) LinkedList(类) … Map(接口) HashMap( ...

  10. NOIP 2015 BZOJ 4326 运输计划 (树链剖分+二分)

    Description 公元 年,人类进入了宇宙纪元. L 国有 n 个星球,还有 n− 条双向航道,每条航道建立在两个星球之间,这 n− 条航道连通了 L 国的所有星球. 小 P 掌管一家物流公司, ...