`

Spring MVC

阅读更多
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 4

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...

    Spring MVC 入门实例

    首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController ...

    Spring MVC+MyBatis开发从入门到项目实战

    《Spring MVC+MyBatis开发从入门到项目实战》分为4篇。第1篇是Java开发环境的搭建,包括JDK的下载与安装、环境变量的配置、MyEclipse的下载与基本配置。第2篇是MyBatis技术入门,包括剖析JDBC的弊端、MyBatis的背景...

    精通Spring MVC 4 中文

    精通Spring MVC 4 中文

    [免费]Spring MVC学习指南(高清)

    Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...

    大优惠 Spring MVC学习指南(第2版)2017.pdf

    Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...

    SSM(spring+spring MVC+mybatis)开发学生信息后台管理系统

    SSM(spring+spring MVC+mybatis)开发学生信息后台管理系统,实现学生增删改查功能设计一个简单的学生信息管理系统,要求使用SSM框架技术整合实现,用户登录后能够通过Web页面添加、删除、修改和查询学生信息 ...

    Spring MVC所需jar包

    Spring MVC所需jar包,包含java开发中 Spring MVC架构中最常用的jar包

    spring MVC环境搭建 所需jar包.zip

    spring MVC环境搭建 所需jar包 ├── commons-logging-1.1.1.jar ├── jstl.jar ├── spring-aop-4.3.0.RELEASE.jar ├── spring-aspects-4.3.0.RELEASE.jar ├── spring-beans-4.3.0.RELEASE.jar ├...

    Servlet JSP和Spring MVC初学指南

    Servlet JSP和Spring MVC初学指南

    spring MVC数据绑定大全

    spring MVC数据绑定 含例子 转载自疯芒毕露的专栏 刚开始用spring mvc 做web开发时 经常会不知道如何合适绑定页面数据 用惯struts2的朋友更认为spring mvc 绑定数据不如struts2方便 本人最开始也是这么认为 经过一段...

    spring mvc

    spring mvc最小代码。spring mvc最小代码。spring mvc最小代码。spring mvc最小代码。

    Spring MVC, A Tutorial, second edition 【2016】

    Spring MVC: A Tutorial (Second Edition) by Paul Deck AZW3/MOBI/EPUB/PDF 多种版本 This is a tutorial on Spring MVC, a module in the Spring Framework for rapidly developing web applications. The MVC in...

    Spring+Spring mvc+Hibernate+Bootstrap、企业级员工信息管理系统

    01. 采用后台及前台的 Spring + Spring mvc + Hibernate + Bootstrap 02. 后台全注解式的开发(除了必要的spring和hibernate的xml配置以外) 03. 后台通过自定义注解结合一个访问拦截器实现整个系统的权限控制 04...

    Spring MVC + Mybatis+Spring实现的个人博客系统

    Spring MVC + Mybatis+Spring实现的个人博客系统基于SSM实现的个人博客系统.zip

    spring mvc框架依赖全面jar

    spring mvc轻量级框架搭建,依赖全面jar文件包。下载解压直接将jar文件复制到工程中的lib中。

    基本的spring mvc + spring security实现的登录(无数据库)

    用STS(Spring Tool Suite)开发的,spring mvc + spring security 实现的最简单的登录系统,无数据库。

Global site tag (gtag.js) - Google Analytics