本文主要把一个菜鸟从“只是听说过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. 使用NodeJS、GruntCLI遇到的问题

    运行环境CMD NODEJS版本v0.8.4  node --version 需求:需要用到Grunt的JS编译功能,各位别笑我. 使用代理 npm config set proxy http://i ...

  2. WCF初探-20:WCF错误协定

    WCF错误协定概述 在所有托管应用程序中,处理错误由 Exception 对象表示. 在基于 SOAP 的应用程序(如 WCF 应用程序)中,服务方法使用 SOAP 错误消息来传递处理错误信息. SO ...

  3. StringUtils工具类的常用方法

    StringUtils 方法的操作对象是 java.lang.String 类型的对象,是对 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String ...

  4. [FTP] Pure-FTPd SSL/TLS 配置方法

    一.准备 & 安装启用 Pure-FTPd SSL/TLS 连接方式在安装时需要检查以下两项:1.系统中是否已经安装了 openssl 和 openssl-devel 包?2.在编译 Pure ...

  5. Python开发入门与实战7-Django Form

    7. Django Form 7.1. Form表单 Django带有一个form库,称为django.forms,这个库可以处理上一章提到的包括HTML表单的自动生成以及数据验证. 我们在inven ...

  6. Fragment开发计划

    Fragment是什么 Fragment正如字面意思所言是碎片,所以这是一个管理碎片时间的应用程序.目前考虑的是先在Android上实现,如果IOS的合作伙伴靠谱可以交给他做,如果不靠谱就等Andro ...

  7. excel数据出入Oracle数据库(转)

    1.先把你的表存为.CSV文件2.打开PL/SQL,新建一张字段和你EXCEL一样的表3.上方Tools——Text Importer——open datafile(左上角)——选择你的CSV表,打开 ...

  8. IndexOf("authentication failed") > -1

    if (e.Value.Error.Message.IndexOf("authentication failed") > -1)   {      strFailMessag ...

  9. [转]概率DP总结 by kuangbin

    概率类题目一直比较弱,准备把kuangbin大师傅总结的这篇题刷一下! 我把下面的代码换成了自己的代码! 原文地址:http://www.cnblogs.com/kuangbin/archive/20 ...

  10. sqlserver查看被锁表、解锁

    查看别锁表 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.d ...