Spring MVC例子
在讲解Spring的MVC框架的各个组件之前,先通过一个例子来体会一下其流程。
【示例23-1】该示例先讲解如何在Eclipse环境下实现Spring MVC框架,然后讲解如何在Ant环境下实现。
说明:首先按照22.3.3节所讲的步骤在Eclipse中创建一个工程ch23,然后按照下面的步骤添加文件。
23.1.1 配置web.xml文件
在ch23的WEB-INF目录下创建web.xml。在使用Struts 2时,需要在web.xml文件配置FilterDispatcher,在使用Spring的MVC框架时,也需要配置web.xml文件,代码如下。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://Java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Java.sun.com/xml/ns/j2ee
http://Java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!--配置Sring MVC的核心控制器DispatcherServlet -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</
servlet-class>
</servlet>
<!--为DispatcherServlet建立映射 -->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
上面的代码对DispatcherServlet类进行配置,所有后缀名为.do的请求都会被DispatcherServlet处理。
23.1.2 编写用于输出的页面
在ch23文件夹下面创建sayHello.jsp,该页面用来被Spring的控制器调用向页面上输出一个字符串,代码如下:
<%@page contentType="text/html;charset=UTF-8"%>
<html>
<head><title>第一个Spring MVC实例</title></head>
<%
String str = (String)request.getAttribute("helloWorld");
%>
<body>
<h1>您输入的欢迎语是<%=str%></h1>
</body>
</html>
可以看出,上面的代码很简单,就是从请求中获得helloWorld参数的值,然后把它输出到界面上。
23.1.3 创建控制器
Spring的MVC框架也有充当控制器的组件。下面先在ch23中创建一个package:com.examp.ch23,然后在其中添加HelloWorldAction.Java类,用于调用sayHello.jsp去显示字符串,代码如下:
package com.examp.ch23;
import Java.io.IOException;
...
public class HelloWorldAction implements Controller{ //控制器需要实现
Controller接口
private Logger logger = Logger.getLogger(this.getClass().getName());
private String helloWorld; //该属性用于获取配置文件中的helloWorld属性
private String viewPage; //用于获取配置文件中的viewPage属性
public ModelAndView handleRequest(HttpServletRequest req, HttpServlet-
Response res)
throws ServletException, IOException { //在该方法中处理用户请求
Map model = new HashMap();
model.put("helloWorld", getHelloWorld()); //将helloWorld属性存
入model中
return new ModelAndView(getViewPage(),model); //调用getViewPage获
取要返回的页面
}
public void setViewPage(String viewPage){
this.viewPage = viewPage;
}
public String getViewPage(){
return this.viewPage;
}
public void setHelloWorld(String helloWorld){
this.helloWorld = helloWorld;
}
public String getHelloWorld(){
return this.helloWorld;
}
}
可以看出,上面的HelloWorldAction类实现了Controller接口。该类有两个属性viewPage和helloWorld。viewPage代表处理完后要返回的页面,helloWorld是要传给显示页面的参数。在handleRequest()方法中进行客户端请求的处理时,首先将参数helloWorld放在Map类型的变量model中,然后调用viewPage显示该参数。
23.1.4 创建Spring的配置文件
在前面讲Struts 2时,配置文件struts.xml主要用来对Action类进行配置,下面看Spring的配置文件是如何配置的。在ch23的WEB-INF下面编写文件dispatcherServlet-servlet.xml,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.
org/dtd/spring-beans.dtd">
<beans>
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.AcceptHeaderLocale-
Resolver">
</bean>
<!--配置控制器的映射-->
<bean id="urlMapping" class="org.springframework.web.servlet.
handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="helloWorld.do">helloWorldAction</prop>
</props>
</property>
</bean>
<!--配置视图-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.
InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.InternalResource-
View</value>
</property>
</bean>
<!--指定控制器的实现类,并且配置其参数的值-->
<bean id="helloWorldAction" class="com.examp.ch23.HelloWorldAction">
<property name="helloWorld">
<value>Hello Spring World!</value>
</property>
<property name="viewPage">
<value>sayHello.jsp</value>
</property>
</bean>
</beans>
Ø 上面代码中通过标签<bean>来实现对控制器以及视图的配置,用<bean id="helloWorldAction" class="com.examp.ch23.HelloWorldAction">指定控制器的实现类是com.examp.ch23.HelloWorldAction,并且用helloWorldAction来唯一标识该控 制器。
Ø 用代码<prop key="helloWorld.do">helloWorldAction</prop>为HelloWorldAction建立映射,其中helloWorldAction就是HelloWorldAction类的id,helloWorld.do为访问HelloWorldAction的URL。在浏览器中输入http://localhost:8080/ch23/helloWorld.do,就可以访问到HelloWorldAction类。
Ø <value>Hello Spring World!</value>用来给HelloWorldAction类的属性helloWorld赋值,<value>sayHello.jsp</value>用来给其viewPage属性赋值,这样在HelloWorldAction类中才能获取它们。
Ø id为viewResolver的bean用来定义视图解析器。
23.1.5 运行Spring MVC示例
在Eclipse中启动Tomcat,在浏览器中输入http://localhost:8080/ch23/helloWorld.do,可以访问到sayHello.jsp,效果如图23-1所示。
图23-1 helloWorld.do访问效果图
说明:通过这个例子可以看出,Spring的MVC框架和Struts2框架有很多的相似之处,例如,它们都要配置web.xml文件、实行控制器、配置控制器。当然它们也有很多不同之处,将在下面的几章里讲解。
23.1.6 使用JSTL视图技术
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。使用JSTL可以实现迭代和条件判断、数据管理格式化、XML操作以及数据库访问等操作。可以使用JSTL技术去实现sayHello.jsp。
【示例23-2】该实例讲解如何在JSP文件中使用JSTL技术。在Eclipse中将sayHello.jsp的代码改为如下所示的代码:
<%@page contentType="text/html;charset=UTF-8"%>
<html>
<head><title>第一个Spring MVC实例</title></head>
<body>
<h1>您输入的欢迎语是"${helloWorld}"</h1>
</body>
</html>
然后把配置文件修改为如下代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.
org/dtd/spring-beans.dtd">
<beans>
<!--
配置控制器的映射
-->
<bean id="urlMapping" class="org.springframework.web.servlet.handler.
SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="helloWorld.do">helloWorldAction</prop>
</props>
</property>
</bean>
<!--
配置视图
-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.
ResourceBundleViewResolver">
<property name="basename" value="views"/>
</bean>
<bean id="helloWorldAction" class="com.examp.ch23.HelloWorldAction">
<property name="helloWorld">
<value>Hello Spring World!</value>
</property>
<property name="viewPage">
<value>sayHello</value>
</property>
</bean>
</beans>
在Eclipse中右击ch23,在弹出的快捷菜单中选择Properties命令,弹出Properties for myApp对话框,在该对话框的左侧选择Java Build Path选项,然后选择上方的Source选项卡。单击右侧的“Add Folder…”按钮,在弹出的对话框中选择WEB-INF下面的classes文件夹并保存。然后在WEB-INF/classes目录下创建views.properties文件,代码如下:
sayHelloView.class=org.springframework.web.servlet.view.JstlView
sayHelloView.url=sayHello.jsp
然后将spring-framework-2.0-m1/lib/j2ee文件夹下的jstl.jar和spring-framework-2.0-m1/lib/ jakarka-taglibs文件夹下面的standard.jar复制到WEB-INF/lib目录下。在Eclipse中重启Tomcat,然后访问http://localhost:8080/ch23/helloWorld.do。可以看到输出的效果与前面一样。
23.1.7 使用Ant实现这个例子
除了在Eclipse环境下开发这个例子外,还可以使用Ant开发,这两种方式读者都必须 掌握。
【示例23-3】此例子讲解如何使用Ant开发这个例子。
1.创建目录结构
复制光盘中的工程模版文件夹ProjectTemplate,命名为ch23,可以看到其目录结构如图23-2所示。将图中“${更改为项目名}”的文件夹重命名为ch23。
2.复制文件
Eclipse workspace中ch23文件夹的结构如图23-3所示。
图23-2 ch23目录结构示意图 图23-3 Eclipse ch23目录结构示意图
将该文件夹下必要的文件复制到重命名后的文件夹ch23中。
Ø 将当前目录下的sayHello.jsp复制到ch23\src\web\jsp下。
Ø 将WEB-INF下的web.xml复制到ch23\config\services\WEB-INF下,覆盖原来的web.xml。
Ø 将WEB-INF下的dispatcherServlet-servlet.xml复制到ch23\config\spring下。
Ø 将WEB-INF\classes下的views.properties复制到ch23\config\spring\classes下。
Ø 将WEB-INF\lib下的所有jar文件复制到ch23\config\services\WEB-INF\lib下。
Ø 将WEB-INF\src\com\examp\ch23下的所有Java文件复制到ch23\src\Java\com\ examp\ch23下面。
3.修改配置文件
把一些文件的配置进行如下修改。
Ø 打开ch23下的build.properties文件,修改为tomcat.home=%TOMCAT_HOME%。
Ø 打开ch23\config\build下的build-common-properties.xml文件,把<property name="services.app.name"value="这里更改为Web工程的名字"/>修改为<property name="services.app.name"value="ch23"/>。
4.编译、部署
在命令行中输入ant services-deploy去编译并部署该工程到Web服务器。
5.运行
在浏览器中输入http://localhost:8080/ch23/helloWorld.do访问该Web应用,可以看到输出的结构和在Eclipse环境下的结果相同。
说明:所有的Spring MVC程序都可以采用Eclipse和Ant这两种方式去开发。
分享到:
相关推荐
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为开发者提供了模型-视图-控制器(MVC)架构,使开发人员能够更好地组织和分离应用程序的业务逻辑、数据处理和用户界面。Spring MVC是Spring框架的一个核心组件,...
Spring MVC 是一个强大的Java Web开发框架,它是Spring框架的一部分,专为构建高度可扩展和模块化的Web应用程序而设计。在2015年的版本中,Spring MVC 4已经相当成熟,提供了许多特性来简化开发流程并提高开发效率。...
这是一个基于Spring MVC、Mybatis和Spring框架实现的个人博客系统,涵盖了Web开发中的后端架构设计、数据库管理和前端展示等多个方面。以下将详细介绍这个系统的关键知识点: **1. Spring MVC** Spring MVC是Spring...
Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一个重要模块,主要用于构建 Web 应用程序的后端控制层。这个框架提供了模型-视图-控制器(MVC)设计模式的实现,简化了Java Web应用的开发...
Spring MVC 是一个基于 Java 的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。在本压缩包中包含了一系列与Spring MVC相关的jar文件,这些文件是构建和运行Spring MVC项目所...
在本项目中,我们主要探讨的是如何利用Spring MVC和Spring Security框架构建一个基本的无数据库登录系统。Spring MVC是Spring框架的一部分,用于处理Web应用程序的请求-响应模型,而Spring Security则是一个强大的...
Spring MVC 和 MyBatis 是两个在Java Web 开发中广泛使用的框架。Spring MVC 作为Spring框架的一部分,负责处理HTTP请求并转发到相应的业务逻辑,而MyBatis则是一个轻量级的持久层框架,用于简化数据库操作。整合这...
Spring MVC 是一个基于Java的轻量级Web应用框架,它属于Spring框架的一部分,主要用于构建控制器层,实现模型-视图-控制器(Model-View-Controller)架构。在Spring MVC中,开发者可以方便地处理HTTP请求,进行数据...
Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序而设计。它提供了模型-视图-控制器(MVC)架构,使开发者能够有效地分离业务逻辑、数据处理和用户界面。在"Spring MVC 4.2.3"版本中,我们看到了一系列的...
Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。这个"Spring MVC 基础实例源码01"的资源很可能是为了帮助初学者理解Spring MVC的核心概念和...
**Spring MVC 4.2.4.RELEASE 中文文档** Spring MVC是Spring框架的一个核心组件,专注于构建Web应用程序。它提供了模型-视图-控制器(MVC)架构,帮助开发者组织和分离应用的业务逻辑、数据处理以及用户界面。...
Spring MVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,使用了IoC容器,支持RESTful风格的应用程序开发。Spring MVC通过分离模型(Model)、视图(View)和控制器(Controller)来简化Web开发...
Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)SSM源码Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)SSM源码Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)SSM源码Java EE企业级应用...
在IT行业中,Spring MVC 和 MyBatis 是两个非常重要的框架,它们分别负责Web应用程序的控制器层和数据访问层。Spring MVC 提供了模型-视图-控制器架构模式的实现,而MyBatis则是一个轻量级的SQL映射框架,用于简化...
《基于Spring、Spring MVC、MyBatis的Java客户关系管理系统详解》 在现代企业运营中,客户关系管理(CRM)系统扮演着至关重要的角色,它帮助企业有效地管理与客户的交互,提高销售效率,优化客户服务,从而增强企业...
Spring MVC是Spring框架的一个核心模块,专用于构建Web应用程序。这个"Spring MVC使用Demo"提供了实践操作,帮助开发者深入理解Spring MVC的开发环境配置、注解的使用以及工作原理。 首先,Spring MVC的设计模式...