SpringMVC(2)经典的HelloWorld实现
我机器的开发环境为:
Ubuntu12.04(不同操作系统对本系列项目没有影响);
开发工具:Eclipse For JavaEE;
数据库:MySql5.5.35;
运行环境:TomCat V7.0;
JDK:JDK 1.7.0_45;
项目工程为:Dynamic Web Project;
一、项目依赖的jar包:
1.Spring框架依赖的jar包:
日志:commons-logging-1.1.3.jar;
JSTL支持:jakarta-taglibs-standard-1.1.2中的jstl.jar和standard.jar;
2.Spring的jar包:
spring-framework-3.2.5.RELEASE/libs中的jar包(这里为了方便我直接把全部都复制过去了);
把以上的jar包全部复制到项目的WebContent/WEB-INF/lib目录中。
二、在/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/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>SpringMVCLesson</display-name> <servlet>
<servlet-name>SpringMVCLesson</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springservlet-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup><!-- load-on-startup必须放在最后 -->
</servlet>
<!-- Spring MVC配置文件结束 --> <servlet-mapping>
<servlet-name>SpringMVCLesson</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> </web-app>
首先是配置DispatcherServlet,根据系列(1)的Spring MVC响应流程图,可以看出DispatcherServlet主要就是拦截请求,然后调用对应的Controller和Action,解析和渲染指定的视图并返回响应 。
其中classpath:springservlet-config.xml指定具体的配置文件为springservlet-config.xml。
<load-on-startup>1</load-on-startup>是启动顺序,让这个Servlet随Servletp容器一起启动,必须放在<servlet> 配置的最后。
servlet-mapping中的<servlet-name>指定配置的是哪个servlet,<url-pattern>则指定拦截哪些请求到该servlet,这里配置的是拦截全部请求。
三、springservlet-config.xml文件配置:
在项目中新建一个resources的Source
 Folder文件夹,并添加springservlet-config.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:util="http://www.springframework.org/schema/util"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd" > <!-- 默认的注解映射的支持 -->
<mvc:annotation-driven/> <!-- 如果当前请求为“/”时,则转发到“/helloworld/index” -->
<mvc:view-controller path="/" view-name="forward:/helloworld/index"/>
<!-- 静态资源映射 -->
<mvc:resources mapping="/js/**" location="/WEB-INF/js/" />
<mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
<mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/" />
<mvc:resources mapping="/plugins/**" location="/WEB-INF/plugins/" />
<mvc:resources mapping="images/**" location="/WEB-INF/images/" />
<!-- 当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问 -->
<mvc:default-servlet-handler/> <!-- 开启controller注解支持 -->
<!-- use-default-filters="false" 只扫描指定的注解 -->
<context:component-scan base-package="com.demo.web.controllers" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan> <!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="contentType" value="text/html"/>
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean> </beans>
<mvc:annotation-driven/> 开启注解映射支持,它是为了简化配置的缩写形式,它相当于以下2个配置:
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
由于我们在web.xml文件里面配置的是拦截所有的请求到该servlet,所以我们在这里要对静态资源文件映射作一下配置,否则请求这些资源文件会返回404:
<!-- 静态资源映射 -->
<mvc:resources mapping="/js/**" location="/WEB-INF/js/" />
<mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
<mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/" />
<mvc:resources mapping="/plugins/**" location="/WEB-INF/plugins/" />
<mvc:resources mapping="images/**" location="/WEB-INF/images/" />
<!-- 当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问 -->
<mvc:default-servlet-handler/>
开启Controller注解支持,并配置只扫描指定包下面的Controller:
<context:component-scan base-package="com.demo.web.controllers" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
配置视图解析器,并指定视图所在的文件夹:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="contentType" value="text/html"/>
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
添加HelloWorldController,在项目中新建一个web的Source Folder文件夹,并在文件夹下面添加com.demo.web.controllers包,在包中添加一个HelloWorldController类,类中内容如下:
package com.demo.web.controllers; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView; @Controller
@RequestMapping(value = "/helloworld")
public class HelloWorldController { @RequestMapping(value="/index", method = {RequestMethod.GET})
public ModelAndView index(){ ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("message", "Hello World!");
modelAndView.setViewName("index");
return modelAndView;
} }
其中@Controller 注解把该class指定为controller,controller 上的@RequestMapping 注解的 value值指定该controller所映射的请求。
方法上的@RequestMapping 注解指定该方法为一个action,value 值指定该action所映射的请求,method 中的RequestMethod.GET指定该action只接受get请求。
ModelAndView 中的setViewName指定了该action所对应的视图名称,解析视图时会在springservlet-config.xml文件指定的视图文件夹中寻找对应的视图。
添加视图,在项目/WEB-INF文件夹下新建一个views文件夹,并在views中添加index.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>Insert title here</title>
</head>
<body>
${message}
</body>
</html>
运行项目,由于我们之前配置了:<mvc:view-controller path="/" view-name="forward:/helloworld/index"/> 所以直接可以看到结果:

把请求的URL地址改为配置的地址:http://localhost:8080/SpringMVCLesson/helloworld/index,可以看到结果相同:

SpringMVC(2)经典的HelloWorld实现的更多相关文章
- SpringMVC(2)—SpringMVC整合Spring的HelloWorld
		
一.这是一个SpringMVC框架的案例HelloWorld 功能:HelloWorld 二.SpringMVC运行流程 1.流程 请求-->springDispatcherServlet的ur ...
 - scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld
		
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld 学习了: http://blog.csdn.net/wangmuming/article/details/3407911 ...
 - SpringMVC学习系列(2) 之 经典的HelloWorld实现
		
前一篇简单介绍了Spring MVC的一些知识,下面就要开始学习如何把Spring MVC运用到具体的项目中去. 首先还是从一个简单的Hello World项目说起: 我机器的开发环境为: Ubunt ...
 - SpringMVC学习(2):经典的HelloWorld实现
		
前一篇简单介绍了Spring MVC的一些知识,下面就要开始学习如何把Spring MVC运用到具体的项目中去. 首先还是从一个简单的Hello World项目说起: 我机器的开发环境为: Ubunt ...
 - 【SpringMVC】SpringMVC系列1之HelloWorld
		
SpringMVC之HelloWorld 概述 SpringMVC 是基于 MVC 设计理念的优秀Web 框架,是目前最主流的 MVC 框架之一.Spring3.0 后全面超越 Struts2,成为最 ...
 - LotusPhp起步:经典的HelloWorld
		
写了几篇LotusPhp,一直没有跑个程序,感觉好像步骤有点错,所以先上个经典的Demo,HelloWorld吧 先按推荐目录建好文件夹,如果懒的建,下面有下载的Demo包,解压就可以用,因为简单,也 ...
 - 1、搭建springMVC开发环境以及HelloWorld测试
		
一.下载spring-framework,采用简单的方式: http://repo.springsource.org/libs-release-local/org/springframework/sp ...
 - springMVC入门配置及helloworld实例
		
1. 新建web project 2. 往lib里copy必须的jar 3. 改写web.xml <?xml version="1.0" encoding="UTF ...
 - SpringMVC.入门篇.一.HelloWorld
		
SpringMVC.入门篇<一>HelloWorld 项目包结构如下: HelloController.java 代码 package com.charles.controller; im ...
 
随机推荐
- 友盟+U-APM应用性能报告:Android崩溃率达0.32%,OPPO 、华为、VIVO 崩溃表现良好
			
随着信息技术高速发展,移动互联几乎已成为了一种生活方式的代名词,在全民上网的数字热潮中,如何能最大程度保障产品服务的稳定性,提供良好的用户体验,是当前企业都需要思考和亟待解决的问题.App的应用性能 ...
 - C语言编程 菜鸟练习100题(01-10)
			
[练习1]输出 "Hello, World!" 0. 题目: 输出 "Hello, World!" 1. 分析: 使用 printf() 输出 "He ...
 - ArcGIS10从入门到精通系列实验图文教程(附配套实验数据持续更新)
			
@ 目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 本教程<ArcGIS从入门到精通系列实验教程>内容包括:ArcGIS平台简介.ArcGIS应用基础.空间数据的采集 ...
 - win10家庭中文版CUDA+CUDNN+显卡GPU使用tensorflow-gpu训练模型安装过程(精华帖汇总+重新修改多次复现)
			
查看安装包 pip list 本帖提供操作过程,具体操作网上有好多了,不赘述.红色字体为后来复现出现的问题以及批注 题外话: (1)python 的环境尽量保持干净,尽量单一,否则容易把自己搞晕,不知 ...
 - Bayer滤镜转换颜色方案
			
Bayer滤镜如何转换颜色? Bayer模式是颜色模式,被广泛应用于CCD和CMOS摄像头.相机使用了拜耳滤镜,分别过滤得到红绿蓝三种颜色.既然要得到的是红绿蓝频段光线的强度,要通过的就是红绿蓝光,就 ...
 - C语言编译器开发之旅(二):解析器
			
本节是我们这个编译器系列的第二节,进入语法分析与语义分析的部分解.在本节我们会编写一个简单的解析器. 解析器的主要功能分为两个部分: 识别输入的语法元素生成AST(Abstract Syntax Tr ...
 - 技能篇:shell教程及脚本编写
			
前言 我们常时不会见到shell脚本,但是需要阅读开发linux脚本时,这又是一项必不可少的技能.本文在于提供基础的shell编程语法和简单的实例,帮助同学快速开发,可当做shell手册使用也非常善 ...
 - UF_LAYER 图层操作
			
Open C uc5007uc5008uc5009UF_LAYER_ask_category_infoUF_LAYER_ask_category_tagUF_LAYER_ask_statusUF_LA ...
 - 搭建 MySQL 高可用高性能集群
			
什么是MySQL集群,什么是MySQL集群,如果你想知道什么是MySQL集群,我现在就带你研究. MySQL 是一款流行的轻量级数据库,很多应用都是使用它作为数据存储.作为小型应用的数据库,它完全可以 ...
 - ffmpeg实战-音视频基础概念
			
转发自白狼栈:查看原文 关于音视频,相信大家都看过电影(视频),听过音乐(音频),至少应该都知道mp4是视频文件,mp3是音频文件. 对于一个音视频文件,都有哪些属性呢?以视频为例,我们可以通过 ff ...