用约定、不用配置文件
我们现在有了Java组件,我们该做配置了,把动作映射的一个URL上,并将其连接到我们的两个view上面去。等一下!我们在用Stripes,我们不需要外部配置文件!
虽然这听来好像好得不像是真的,但这的确是Stripes的一项最具生产效率的功能。Stripes使用约定而非配置文件来映射动作到URL上。我们也无须使用一个外部配置文件来把view映射到一个个标记名字上。这意味着程序员不用再为了一个标记名字——比方说SUCCESS——的实际来源,而在配置文件中跳来跳去了。没有必要在Java和view组件的外部进行配线,因而导致更好地维护性和更高的生产率。
Stripes是如何提供隐式的URL映射而无需在外部配置每一个动作或者而外的annotation呢?这个可以从Stripes在web.xml中的配置以及它是如何通过实用默认法建立URL映射来解释。首先,我们来看看Servlet过滤器:StripesFilter。其在web.xml中的默认配置如下:
<filter>
<display-name>Stripes Filter</display-name>
<filter-name>StripesFilter</filter-name>
<filter-class>
net.sourceforge.stripes.controller.StripesFilter
</filter-class>
<init-param>
<param-name>ActionResolver.UrlFilters</param-name>
<param-value>/WEB-INF/classes</param-value>
</init-param>
</filter>
当Servlet容器启动的时候,StripesFilter对其init-param元素执行初始化。其中最重要的init-param元素就是ActionResolver.UrlFilters参数。这个参数告诉Stripes到哪里查找跟Stripes有关的类。这个例子里面,Stripes将查找/WEB-INF/classes目录下的所有实现ActionBean接口的类。每一个被找到的类和其绑定的URL都将被加入一个Map中。
让我们来看看Stripes是如何处理我们的HelloWorldAction动作为例子吧。因为HelloWorldAction类位于/WEB-INF/classes目录下,所以会被认为是一个Stripes servlet。在我们的例子当中,其完整类名是com.myco.web.stripes.action.example.HelloWorldAction。随后,其完整类名将按照如下法则被翻译成一个URL绑定。
1.将含有www、web、stripes、和action的部分及其以前的内容删掉。在我们的例子有三个上述单词,所以我们得到了example.HelloWorldAction。
2.如果类名中包涵带Action或Bean的尾巴,删掉。因为我们的类名以Action结尾,我们得到了example.HelloWorld。
3.将.替换为/,我们得到了example/HelloWorld。
4.最后,添加上一个尾缀(默认是.action)从而完成了URL绑定。最后的结果是example/HelloWorld.action。
现在Stripes找到了ActionBean类并为其创建了一个URL绑定,然后存放在一个java.util.Map<String, Class<? extends ActionBean>>之中。其中key参数是URL绑定,value参数是实现ActionBean的类名。下面是我们的例子中的Map:
URL绑定:/example/HelloWorld.action
ActionBean类:com.myco.web.stripes.action.example.HelloWorldAction
我们要看的第二个组件是Stripes如何把URL绑定翻译成你正在做的这个ActionBean类。这是Stripes调度servlet的职责,在web.xml中的配置如下:
<servlet>
<servlet-name>StripesDispatcher</servlet-name>
<servlet-class>
net.sourceforge.stripes.controller.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>StripesDispatcher</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
StripesDispatcher的一个职责就是将URL解析为Stripes的ActionBean类。当用户激活URL http://host/uri/example/HelloWorld.action的时候,Stripes调度servlet将在URL映射表中查询并找到com.myco.web.stripes.action.example.HelloWorldAction类,并实例化产生该类的一个实例。最后,index方法被激活,因为在annotation中它被定义为默认局柄而在该URL中并没有指定一个事件。
如果我们想要直接执行HelloWorldAction中的hello方法怎么办?应该象下面这个URL这样把事件的名字放在request的参数中:
http://host/uri/example/HelloWorld.action?hello=&firstName=Mark&age=13
请注意我们没有给hello这个request参数名指定任何值。在这个情况下,StripesDispatcher会把hello这个这个request参数名和HelloWorldAction类中个一个带有public Resolution hello()签名的函数识别并映射。该方法名城在初始化的时候为了性能而缓存在另一个Map中。
我们已经看到Stripes的基础以及如果创建简单的动作和一些该框架是如何运作的细节。通过在web.xml中的初始化,我们能够避免用多个单独的XML配置文件来把我们的显示层组建写在一起。这很重要,原因如下:首先,如果你需要任何改动,你可以看到一个URL就立即知道你该查看哪一个类。其次,我们不需要任何单独的工具来在你的配置文件过大而且不可管理的时候帮助你。通过消除掉配置文件,我们不再需要给框架一大堆的metadata。最后,我们不再需要为一个独立的用来描述我们的组件是如果相互关联的文件来一刻不停维护了。
分享到:
相关推荐
Stripes 是一款用于快速开发Web程序的展示层框架,它的设计旨在简化Java Web应用开发流程。在介绍Stripes之前,我们需要了解它与传统框架(如 Struts 1、WebWork 和 Struts 2)的不同之处。传统框架通常要求开发者...
Stripes 是一款专为简化 Java Web 开发流程而设计的开源框架,它以提高开发效率为目标,力求使开发者能够轻松快速地构建 Web 应用程序。与传统 Java Web 框架相比,Stripes 采用了更为简洁的方法论,借鉴了 Ruby on ...
Stripes是一个Java Web应用框架,它是为了简化Java Web开发而设计的,提供了快速构建Web应用程序的能力。与传统的框架如Struts1和Struts2相比,Stripes有自己独特的优势。首先,Stripes提倡“约定优于配置”的开发...
这个“Stripes视图框架demo”是用于演示如何使用Stripes来开发Web应用的一个实例,可以帮助初学者快速理解和掌握Stripes的基本用法。 Stripes的核心特性包括: 1. **事件驱动模型**:Stripes采用基于HTTP请求的...
在Matt Raible的分享中,他对比分析了几种流行的Java Web层框架,包括JSF、Spring MVC、Stripes、Struts2、Tapestry和Wicket。 #### 三、各框架优缺点分析 1. **JSF (JavaServer Faces)** - **优点**: - Java ...
Java Web层框架是构建Web应用程序的关键组成部分,它们简化了服务器端的开发,提供了更好的结构和可维护性。本文将深入对比六种流行的Java Web层框架:JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket。 **...
Stripes是一个轻量级的Java Web应用框架,其设计目标是简化Java web应用的开发过程,并提高开发效率。与Struts 1和Struts 2等早期流行的框架不同,Stripes采用了更为现代的开发模式和技术,减少了对XML配置的依赖,...
### Stripes MVC Framework:概述与核心特性 ...通过学习官方文档和相关书籍,如《Stripes and Java Web Development Is Fun Again》,开发者可以获得全面的知识体系,从而更好地应对实际开发中的挑战。
1. **Java Web技术的广泛应用与安全问题**:Java Web技术,如JSP、Servlet和各种Web框架(Spring MVC、Stripes、Struts 2、Tapestry、Wicket等),在开发Web应用程序时广泛使用。由于其在客户端和服务器端的广泛应用...
Stripes是一个基于Java的Web应用开发框架,它采用MVC(Model-View-Controller)架构模式设计,旨在简化Web应用程序的开发流程。相较于其他Java Web框架如Spring MVC或Struts,Stripes框架更加强调简洁性和易用性。它...
Java论坛管理系统设计是一个涵盖多个IT领域知识的项目,主要基于Java编程语言,结合数据库管理和Web应用开发技术。这里我们将深入探讨这个系统的核心组成部分及其相关知识点。 1. **Java核心技术** - **Java基础**...
在现代Web开发中,SSH(Struts + Hibernate + Spring)是一种常见的开发框架组合,它提供了强大的功能和灵活性,用于构建高效、可维护的Web应用程序。下面我们将深入探讨SSH的各个组成部分,以及它们如何协同工作来...
Stripes 完全抛弃了这些框架的弊病,使用了最新的 Java 5 带来的技术,遵循 “Convention over Configuration” 理念,只需要在 Java 代码中加入少量的 Annotation,就可以完成配置,大量减少了 代码的维护工作。
Stripes是一个Java Web框架,其目标是使Java中基于Servlet / JSP的Web开发尽可能简单,直观和简单。 条纹始终遵循以下原则: 约定优于配置(CoC) 极轻量级,几乎没有外部依赖项。 为开发人员提供快速,迭代的代码/...
随着互联网技术的发展与成熟,Java Web开发框架在软件工程领域扮演着越来越重要的角色。不同的框架各有特点,适用于不同类型的项目需求。本文档将详细介绍并对比六种主流Java Web框架:JSF、Spring MVC、Stripes、...
Stripes And Java Web Development
Java Web层框架是开发Web应用程序的关键工具,它们简化了服务器端逻辑与用户界面之间的交互。在Java领域,有许多流行的框架可供选择,每种框架都有其独特的优点和缺点。以下是关于JSF、Spring MVC、Stripes、Struts ...
Stripes是一个轻量级的Java MVC框架,它的核心设计理念是“约定大于配置”,这使得开发者可以更快地构建Web应用程序,而无需过多的配置文件。在本文中,我们将深入探讨Stripes框架的基础知识,以及它如何简化开发...
Stripes是一个专为简化Java Web开发而设计的开源框架,其版本1.4.3是该框架的一个稳定发行版。这个框架强调了提高程序员的工作效率和代码的可维护性,通过提供直观的API和强大的特性集,使得构建动态、交互式的Web...