`

Spring MVC

阅读更多

第一个Spring MVC例子 ZZ

 (2011-12-30 13:57:06)
标签: 

spring

 

mvc

 

j2ee

 

例子

 

杂谈

分类: Java

23.1  第一个Spring MVC例子

在讲解SpringMVC框架的各个组件之前,先通过一个例子来体会一下其流程。

【示例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,在使用SpringMVC框架时,也需要配置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  创建控制器

SpringMVC框架也有充当控制器的组件。下面先在ch23中创建一个packagecom.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接口。该类有两个属性viewPagehelloWorldviewPage代表处理完后要返回的页面,helloWorld是要传给显示页面的参数。在handleRequest()方法中进行客户端请求的处理时,首先将参数helloWorld放在Map类型的变量model中,然后调用viewPage显示该参数。

23.1.4  创建Spring的配置文件

在前面讲Struts 2时,配置文件struts.xml主要用来对Action类进行配置,下面看Spring的配置文件是如何配置的。在ch23WEB-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访问效果图

说明:通过这个例子可以看出,SpringMVC框架和Struts2框架有很多的相似之处,例如,它们都要配置web.xml文件、实行控制器、配置控制器。当然它们也有很多不同之处,将在下面的几章里讲解。



 

23.1.6  使用JSTL视图技术

JSTL(JSP Standard Tag LibraryJSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apachejakarta小组来维护的。使用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.jarspring-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程序都可以采用EclipseAnt这两种方式去开发。

分享到:
评论

相关推荐

    精通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 官方文档

    本文详细介绍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 MyBatis开发从入门到项目实战

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

    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

Global site tag (gtag.js) - Google Analytics