`
jinnianshilongnian
  • 浏览: 21503180 次
  • 性别: Icon_minigender_1
博客专栏
5c8dac6a-21dc-3466-8abb-057664ab39c7
跟我学spring3
浏览量:2418485
D659df3e-4ad7-3b12-8b9a-1e94abd75ac3
Spring杂谈
浏览量:3008670
43989fe4-8b6b-3109-aaec-379d27dd4090
跟开涛学SpringMVC...
浏览量:5639372
1df97887-a9e1-3328-b6da-091f51f886a1
Servlet3.1规范翻...
浏览量:259902
4f347843-a078-36c1-977f-797c7fc123fc
springmvc杂谈
浏览量:1597268
22722232-95c1-34f2-b8e1-d059493d3d98
hibernate杂谈
浏览量:250211
45b32b6f-7468-3077-be40-00a5853c9a48
跟我学Shiro
浏览量:5858841
Group-logo
跟我学Nginx+Lua开...
浏览量:701949
5041f67a-12b2-30ba-814d-b55f466529d5
亿级流量网站架构核心技术
浏览量:785150
社区版块
存档分类
最新评论

【第十章】集成其它Web框架 之 10.1 概述 ——跟我学spring3

阅读更多

10.1  概述

10.1.1  Spring和Web框架

       Spring框架不仅提供了一套自己的Web框架实现,还支持集成第三方Web框架(如Struts1x、Struts2x)。

 

       Spring实现的SpringMVC Web框架将在第十八章详细介绍。

 

       由于现在有很大部分公司在使用第三方Web框架,对于并不熟悉SpringMVC Web框架的公司,为了充分利用开发人员已掌握的技术并相使用Spring的功能,想集成所使用的Web框架;由于Spring框架的高度可配置和可选择性,因此集成这些第三方Web框架是非常简单的。

 

       之所以想把这些第三方Web框架集成到Spring中,最核心的价值是享受Spring的某些强大功能,如一致的数据访问,事务管理,IOC,AOP等等。

 

       Spring为所有Web框架提供一致的通用配置,从而不管使用什么Web框架都使用该通用配置。

 

10.1.2  通用配置

Spring对所有Web框架抽象出通用配置,以减少重复配置,其中主要有以下配置:

 

1、Web环境准备:

1.1、在spring项目下创建如图10-1目录结构:

 

图10-1 web目录结构

1.2、右击spring项目选择【Propeties】,然后选择【Java Build Path】中的【Source】选项卡,将类输出路径修改为“spring/webapp/WEB-INF/classes”,如图10-2所示:

 

图10-2 修改类输出路径

1.3、web.xml初始内容如下:

 

java代码:
<?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">
</web-app>

 <web-app version="2.4">表示采用Servlet 2.4规范的Web程序部署描述格式

 

 

2、 指定Web应用上下文实现:在Web环境中,Spring提供WebApplicationContext(继承ApplicationContext)接口用于配置Web应用,该接口应该被实现为在Web应用程序运行时只读,即在初始化完毕后不能修改Spring Web容器(WebApplicationContext),但可能支持重载。

 

Spring提供XmlWebApplicationContext实现,并在Web应用程序中默认使用该实现,可以通过在web.xml配置文件中使用如下方式指定:

 

java代码:
<context-param>
    <param-name>contextClass</param-name>
    <param-value>
        org.springframework.web.context.support.XmlWebApplicationContext
    </param-value>
</context-param>

  如上指定是可选的,只有当使用其他实现时才需要显示指定。

 

 

3、 指定加载文件位置:

前边已经指定了Spring Web容器实现,那从什么地方加载配置文件呢?

 

默认情况下将加载/WEB-INF/applicationContext.xml配置文件,当然也可以使用如下形式在web.xml中定义要加载自定义的配置文件,多个配置文件用“,”分割:

 

java代码:
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:chapter10/applicationContext-message.xml
    </param-value>
</context-param>

 

通用Spring配置文件(resources/chapter10/applicationContext-message.xml)内容如下所示:

 

java代码:
<bean id="message" class="java.lang.String">
    <constructor-arg index="0" value="Hello Spring"/>
</bean>

 

 

4、 加载和关闭Spring Web容器:

我们已经指定了Spring Web容器实现和配置文件,那如何才能让Spring使用相应的Spring Web容器实现加载配置文件呢?

 

Spring使用ContextLoaderListener监听器来加载和关闭Spring Web容器,即使用如下方式在web.xml中指定:

 

java代码:
<listener>
    <listener-class>
       org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

 

ContextLoaderListener监听器将在Web应用启动时使用指定的配置文件初始化Spring Web容器,在Web应用关闭时销毁Spring Web容器。

注:监听器是从Servlet 2.3才开始支持的,因此如果Web应用所运行的环境是Servlet 2.2版本则可以使用ContextLoaderServlet来完成,但从Spring3.x版本之后ContextLoaderServlet被移除了。

 

5、 在Web环境中获取Spring Web容器:

既然已经定义了Spring Web容器,那如何在Web中访问呢?Spring提供如下方式来支持获取Spring Web容器(WebApplicationContext):

 

 

java代码:
WebApplicationContextUtils.getWebApplicationContext(servletContext);
或
WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);

   如果当前Web应用中的ServletContext 中没有相应的Spring Web容器,对于getWebApplicationContext()方法将返回null,而getRequiredWebApplicationContext()方法将抛出异常,建议使用第二种方式,因为缺失Spring Web容器而又想获取它,很明显是错误的,应该抛出异常。

 

 

6、 通用jar包,从下载的spring-framework-3.0.5.RELEASE-with-docs.zip中dist目录查找如下jar包:


org.springframework.web-3.0.5.RELEASE.jar 

此jar包为所有Web框架所共有,提供WebApplicationContext及实现等。

 

 

7、Web服务器选择及测试:

       目前比较流行的支持Servlet规范的开源Web服务器包括Tomcat、Resin、Jetty等,Web服务器有独立运行和嵌入式运行之分,嵌入式Web服务器可以在测试用例中运行不依赖于外部环境,因此我们使用嵌入式Web服务器。

 

       Jetty是一个非常轻量级的Web服务器,并且提供嵌入式运行支持,在此我们选用Jetty作为测试使用的Web服务器。

 

7.1、准备Jetty嵌入式Web服务器运行需要的jar包:

 

http://dist.codehaus.org/jetty/网站下载jetty-6.1.24,在下载的jetty-6.1.24.zip包中拷贝如下jar包到项目的lib/jetty目录下,并添加到类路径中:   

 

7.2、在单元测试中启动Web服务器:

 

java代码:
package cn.javass.spring.chapter10;
import org.junit.Test;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.webapp.WebAppContext;
public class WebFrameWorkIntegrateTest {
    @Test
    public void testWebFrameWork() throws Exception {
        Server server = new Server(8080);
        WebAppContext webapp = new WebAppContext();
        webapp.setResourceBase("webapp");
        //webapp.setDescriptor("webapp/WEB-INF/web.xml");
        webapp.setContextPath("/");
        webapp.setClassLoader(Thread.currentThread().getContextClassLoader());
        server.setHandler(webapp);
        server.start();
        server.join();
       //server.stop();
    }
}
  • 创建内嵌式Web服务器:使用new Server(8080)新建一个Jetty服务器,监听端口为8080;
  • 创建一个Web应用:使用new WebAppContext()新建一个Web应用对象,一个Web应用可以认为就是一个WebAppContext对象;
  • 指定Web应用的目录:使用webapp.setResourceBase("webapp")指定Web应用位于项目根目录下的“webapp”目录下;
  • 指定部署描述符:使用webapp.setDescriptor("webapp/WEB-INF/web.xml");此处指定部署描述符为项目根目录下的“webapp/WEB-INF/web.xml”,该步骤是可选的,如果web.xml位于Web应用的WEB-INF下。
  • 指定Web应用请求上下文:使用webapp.setContextPath("/")指定请求上下文为“/”,从而访问该Web应用可以使用如“http://localhost:8080/hello.do”形式访问;
  • 指定类装载器:因为Jetty自带的ClassLoader在内嵌环境中对中文路径处理有问题,因此我们使用Eclispe的ClassLoader,即通过“webapp.setClassLoader(Thread.currentThread().getContextClassLoader()) ”指定;
  • 启动Web服务器:使用“server.start()”启动并使用“server.join()”保证Web服务器一直运行;
  • 关闭Web服务器:可以通过某种方式执行“server.stop()”来关闭Web服务器;另一种方式是通过【Console】控制台面板的【Terminate】终止按钮关闭,如图10-3所示:

 

图10-3 点击红色按钮关闭Web服务器

 

 

原创内容,转载请注明出处【http://sishuok.com/forum/blogPost/list/0/2510.html

26
5
分享到:
评论
5 楼 jinnianshilongnian 2012-11-13  
縌流而上的魚 写道
老师
下面这句话
1.2、右击spring项目选择【Propeties】,然后选择【Java Build Path】中的【Source】选项
卡,将类输出路径修改为“spring/webapp/WEB-INF/classes”,如图10-2所示:

由于我建的是Dynamic Web Project工程,好像默认的Source路径都是bulid/classes,这个修改是为了什么啊。。。

方便考到如tomcat下直接用
4 楼 縌流而上的魚 2012-11-13  
老师
下面这句话
1.2、右击spring项目选择【Propeties】,然后选择【Java Build Path】中的【Source】选项
卡,将类输出路径修改为“spring/webapp/WEB-INF/classes”,如图10-2所示:

由于我建的是Dynamic Web Project工程,好像默认的Source路径都是bulid/classes,这个修改是为了什么啊。。。
3 楼 wzg1101 2012-06-01  
强烈期待18章
2 楼 jinnianshilongnian 2012-03-09  
zhua12 写道
后边的呢??


明天会发
1 楼 zhua12 2012-03-09  
后边的呢??

相关推荐

    跟我学spring

    10.1节概述集成其他Web框架,10.2节介绍如何集成Struts1.x,10.3节介绍如何集成Struts2.x,10.4节介绍如何集成JSF(JavaServer Faces)。 【第十一章】SSH集成开发积分商城。SSH即Spring + Struts + Hibernate的...

    跟我学spring3(8-13)

    《跟我学Spring3》这本书详细介绍了Spring框架在多个方面的应用,包括ORM支持、事务管理和Web框架集成等。以下是对这些章节内容的详细说明: 【第八章】 对ORM的支持: 1. **8.1 概述**:ORM(Object-Relational ...

    跟我学spring3(8-13).pdf

    《跟我学Spring3》这本书详细介绍了Spring框架与各种ORM(对象关系映射)框架的集成,以及Spring的事务管理和Web框架集成。以下是其中关键知识点的深入解析: **8. ORM支持** 1. **8.1 概述**:ORM允许开发者以面向...

    modelsim_10.1a——patch

    modelsim破解工具,win8亲测有效,绝对好用!

    跟我学spring3(8-13)1

    《跟我学Spring3》这本书是针对Spring框架的深入学习指南,涵盖了多个关键章节,包括Spring对ORM(对象关系映射)的支持、事务管理和与其他Web框架的集成等内容。以下是各章节主要内容的详细阐述: 1. **第八章:对...

    跟我学spring3(8-13)

    《跟我学Spring3》是一本全面介绍Spring框架的教程,主要涵盖了Spring对ORM支持、事务管理以及与其他Web框架的集成等内容。以下是对其中关键知识点的详细解析: 1. **Spring对ORM的支持**: - **8.1 概述**:这...

    ArcGIS Engine V10.1 开发——空间查询功能实现(含数据)

    在ArcGIS Engine V10.1中,空间查询是地理信息系统(GIS)开发中的关键功能,它允许用户根据地理位置和空间关系对数据进行检索、分析和处理。本实例旨在详细介绍如何利用ArcGIS Engine来实现这一功能,并提供了一个...

    SSH之最新简单整合,Struts-2.5.10.1+Spring 4.3.8+Hibernate5.2.10

    本文将详细介绍SSH框架的最新整合——Struts 2.5.10.1、Spring 4.3.8和Hibernate 5.2.10的核心特性及其在实际项目中的应用。 首先,Struts 2.5.10.1是Struts 2框架的一个稳定版本,它提供了MVC设计模式的实现,帮助...

    ArcGIS Engine V10.1 开发——地图操作功能实现代码(含数据)

    本程序实现了地图的基本操作功能,包括各种地图数据的加载、保存,操作中常用的缩放、移动,数据视图、鹰眼、布局视图的同步,TOC右键菜单及其他一些常见的功能。程序位于code文件夹下,数据位于data文件夹下。

    七年级数学下册第十章数据的收集整理与描述10.1统计调查2学案无答案新版新人教版.pdf

    七年级数学下册第十章数据的收集整理与描述10.1统计调查2学案无答案新版新人教版.pdf

    spring3 学习

    《跟我学Spring3》是一本全面介绍Spring框架的教程,主要涵盖了Spring对ORM支持、事务管理、Web框架集成以及SSH集成开发等多个方面。Spring作为Java领域最流行的应用框架之一,其强大的功能和灵活性使得它在企业级...

    七年级数学下册第十章数据的收集整理与描述10.1统计调查第2课时抽样调查导学案无答案新新人教.pdf

    七年级数学下册第十章数据的收集整理与描述10.1统计调查第2课时抽样调查导学案无答案新新人教.pdf

    SSH框架最新版本整合JAR包Strtus2 2.5.10.1+Spring4.3.9+Hibernate5.2.10(SSH-JAR)

    这个压缩包提供的是SSH框架的最新版本——Struts2 2.5.10.1、Spring 4.3.9以及Hibernate 5.2.10的集成JAR包,适用于构建基于MVC模式的Web应用程序。 Struts2作为MVC框架,负责处理用户请求和展示视图。版本2.5.10.1...

    Safe3 Web漏洞扫描系统企业版v10.1 破解版

    Safe3 Web漏洞扫描系统企业版v10.1 破解版

    八年级数学下册第十章一次函数10.1函数的图象作业pdf无答案青岛版

    八年级数学下册第十章一次函数10.1函数的图象作业pdf无答案青岛版

    Spring3(8-13)

    《跟我学Spring3》是一本详细讲解Spring 3.0框架的教程,涵盖了Spring对ORM支持、事务管理、Web框架集成以及SSH集成等多个方面。以下是其中一些核心知识点的详细解析: 1. **Spring对ORM的支持**: - **8.1 概述**...

    myeclipse for spring 10.1 crack

    myeclipse 10.1-10.5(myeclipse for spring 10.1)破解,已成功破解 1. 输入Usercode, 点击'SystemId...', 生成SystemId 2. 点击'Active', 生成LICENSE_KEY, ACTIVATION_CODE, ACTIVATION_KEY 3. 点击菜单'Tools -...

    免费Struts2.5.10.1框架(最小需要版本)

    标题中的"免费Struts2.5.10.1框架(最小需要版本)"指的是该版本是官方发布的,且是Struts2的一个特定版本——2.5.10.1,通常称为最小需要版本,意味着它包含了运行Struts2应用程序的基本组件,可能不包含所有可选...

Global site tag (gtag.js) - Google Analytics