stripes框架是基于MVC设计模式的开源的web应用框架,坚持“convention over configuration(惯例优先原则)”致力于比Struts和SpringMVC更加轻量级的设计,不需要对每一个page/action进行映射配置,ActionBean会被主动发现,采用Annotation配置的方式。简单粗暴,容易上手!
本篇博文会根据一个简单的项目,来引导大家入门stripes framework!

1、开始前的准备:
(1)、java开发环境
(2)、eclipse或myEclipse IDE,如果是eclipse的话,应该是javaEE版的
(3)、服务器comcat(可以直接使用IDE导入comcat的解压包,直接在IDE(eclipse)上面运行服务器,这样简单)
(4)、jar包,(见下图)

####***相关的项目源码下载链接在本博文底部(包含jar包)***####

现在,我们开始一段神奇的旅程!let‘s go!
1、配置配件:web.xml
我先把内容贴初来

<?xml version="1.0" encoding="UTF-8"?>

<web-app 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"         version="2.4">

    <description>      Stripes Examples    </description>    <display-name>Stripes Examples</display-name>

    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->    <!--              Configuration of the Stripes Filter.                   -->    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->    <filter>        <description>            Provides essential configuration and request processing services            for the Stripes framework.        </description>        <display-name>Stripes Filter</display-name>        <filter-name>StripesFilter</filter-name>        <filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class>

        <!-- REQUIRED init parameter for the Stripes Filter. -->        <init-param>            <param-name>ActionResolver.Packages</param-name>            <param-value>net.sourceforge.stripes.examples</param-value>        </init-param>

        <!-- Optional init parameter for the Stripes Filter. -->        <init-param>            <param-name>ActionBeanContext.Class</param-name>            <param-value>net.sourceforge.stripes.examples.bugzooky.BugzookyActionBeanContext</param-value>        </init-param>

        <init-param>            <param-name>Stripes.EncryptionKey</param-name>            <param-value>Don't Copy/Paste Me! Make up your own encryption key and keep it secret!</param-value>        </init-param>    </filter>

    <filter-mapping>        <filter-name>StripesFilter</filter-name>        <url-pattern>*.jsp</url-pattern>        <dispatcher>REQUEST</dispatcher>    </filter-mapping>

    <filter-mapping>        <filter-name>StripesFilter</filter-name>        <servlet-name>StripesDispatcher</servlet-name>        <dispatcher>REQUEST</dispatcher>    </filter-mapping>

    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->    <!--         Configuration of the Stripes dispatcher Servlet.            -->    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->    <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>/dispatcher</url-pattern>    </servlet-mapping>

    <servlet-mapping>        <servlet-name>StripesDispatcher</servlet-name>        <url-pattern>/action/*</url-pattern>    </servlet-mapping>

    <servlet-mapping>        <servlet-name>StripesDispatcher</servlet-name>        <url-pattern>*.action</url-pattern>    </servlet-mapping></web-app>

在上面的xml配置文件中,主要是关于Stripes Filter和Stripes Dispatcher Servlet的配置,因为我们刚刚开始接触stripes,所以我们暂时不要纠结它,just copy它到我们的项目中来就OK了,并且上面的东东在每一个stripes项目中都是这样的,so
just do it。

2、我们的项目的配置工作还没有结束,放心,都是很简单的。只需copy和paste就可以了。我指的是src文件下面的三个以properties为后缀的文件。这些是和日志等相关的,如果没有他们,问题不大,项目还是照样能跑的。我留着,你随意,嘿嘿!!!

3、接下来我们开始我们的前台的编写。我们这个小应用是一个简单的计算器,只能实现加法和除法功能,具体请看下面的代码,其中我标上了注释。所以。。。。。

<%@ page contentType="text/html;charset=UTF-8" language="java" %><!-- stripes的标签,相当于引用stripes标签的作用,没有它,就不能使用其标签-->

<%@ taglib prefix="stripes" uri="http://stripes.sourceforge.net/stripes.tld"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html>  <head>      <title>My First Stripe</title>      <style type="text/css">          input.error { background-color: yellow; }      </style>  </head>  <body>    <h1>Stripes Calculator</h1>

    Hi, I'm the Stripes Calculator. I can only do addition. Maybe, some day, a nice programmer    will come along and teach me how to do other things?   <!--这里使用了stripes的表单标签,action后面是路径,这些属性和jsp中的差不多-->    <stripes:form action="/examples/quickstart/Calculator.action" focus="">        <stripes:errors/>        <table>            <tr>                <td>Number 1:</td>                <td><stripes:text name="numberOne"/></td>            </tr>            <tr>                <td>Number 2:</td>                <td><stripes:text name="numberTwo"/></td>            </tr>            <tr>                <td colspan="2">                   <!--请留意这里的name属性,比如addiction,就对应ActionBean类(下面我会给出)中方法addition-->

                    <stripes:submit name="addition" value="Add"/>                    <stripes:submit name="d" value="Divide"/>                </td>            </tr>            <tr>                <td>Result:</td>                 <!--注意这个result字段,它会对应ActionBean类中的result字段-->

                 <td>${actionBean.result}</td>            </tr>        </table>    </stripes:form>  </body></html>

前台已经准备就绪,我们的工作已经准备得差不多了。当我们输入两个数字,点击add按钮的时候,就会跳到后台来。
那么,后台怎么接受和处理呢?请看。。。。。。

package net.sourceforge.stripes.examples.quickstart;

import net.sourceforge.stripes.action.ActionBean;import net.sourceforge.stripes.action.ActionBeanContext;import net.sourceforge.stripes.action.DefaultHandler;import net.sourceforge.stripes.action.ForwardResolution;import net.sourceforge.stripes.action.HandlesEvent;import net.sourceforge.stripes.action.Resolution;import net.sourceforge.stripes.validation.SimpleError;import net.sourceforge.stripes.validation.Validate;import net.sourceforge.stripes.validation.ValidationErrors;import net.sourceforge.stripes.validation.ValidationMethod;

/** * A very simple calculator action. */

public class CalculatorActionBean implements ActionBean {    //这个对象的作用非常大,比如获取HttpServletRequest等等

    ActionBeanContext context;    //表示这两个property得是double类型

    @Validate(required=true) private double numberOne;    @Validate(required=true) private double numberTwo;    private double result;

    //必须要覆写的方法    public ActionBeanContext getContext() {     return context;     }    //必须要覆写的方法    public void setContext(ActionBeanContext context) {      this.context = context;     }

    public double getNumberOne() {        return numberOne;     }

    public void setNumberOne(double numberOne) {         this.numberOne = numberOne;     }

    public double getNumberTwo() {        return numberTwo;     }

    public void setNumberTwo(double numberTwo) {     this.numberTwo = numberTwo;     }

    public double getResult() {       return result;     }

    public void setResult(double result) {      this.result = result;     }

    /** An event handler method that adds number one to number two. */    //这个defaultHandler的作用是,这个ActionBean类默认的执行方法,具体什么意思?     //举个例子:如果用户在前台不是点击“加”按钮,而是直接按键盘的Enter键,那么,后台就默认执行这个方法。    //前台中的表单中的submit属性的name就是与这个方法名对应的,也就是,当点击那个按钮之后,程序就知道应该执行这个方法了

    @DefaultHandler    public Resolution addition() {        result = numberOne + numberTwo;        return new ForwardResolution("/index.jsp");    }

    /** An event handler method that divides number one by number two. */   //这个会把名字division覆盖成d,也就是前台会认为这个方法叫d,不再是默认情况下的division了。

   @HandlesEvent(value = "d")    public Resolution division() {        result = numberOne / numberTwo;        return new ForwardResolution("/index.jsp");    }

    /**     * An example of a custom validation that checks that division operations     * are not dividing by zero.     */    @ValidationMethod(on="division")    public void avoidDivideByZero(ValidationErrors errors) {        if (this.numberTwo == 0) {            errors.add("numberTwo", new SimpleError("Dividing by zero is not allowed."));        }    }}

对于URL这一块,需要具体解释一下。Stripes的默认设置会检查ActionBean,同时依赖于它们的类和包名决定
其URL路径。Stripes可以改变类名到URL路径的映射:
1、删除任何出现在包名路径中“web”,“www”,“stripes”,“action”之前的名称
2、如果在包名路径后面出现有“Action”和“Bean”(或者“ActionBean”),则把其删除
3、在包名的最后加上“.action”
比如,按照上面的规则,有:
net.sourceforge.stripes.examples.quickstart.CalculatorActionBean 变成:

  • examples.quickstart.CalculatorActionBean
  • examples.quickstart.Calculator
  • /examples/quickstart/Calculator.action

到现在,我们已经完成了我们的小项目的编写。你可能会问,有没有搞错?没有其他的配置文件了吗?没有其他的配置文件了。很简单吧!那我们现在可以跑起来了!

#############################################################################
*****************************************************附件****************************************************************
##############################################################################

@UrlBinding:该注释允许 ActionBean 类生成定制 UrlBinding URL 路径。在带注释 的 UrlBinding 路径被

请求时,会调用 ActionBean 类。

@HandlesEvent:该绑定允许通过指定的名称调用actionBean() 方法。默认情况下, Stripes 试图将事件名

解析成 actionBean() 方法中的方法名,除非它找到该注释。

@DefaultHandler:该注释允许在到 ActionBean 的请求中未提供事件名时执行一个方法。默认情况下,如果

只有一个处理程序方法存在于 ActionBean 中,那么该名称自然就 成为默认的名称。

@SessionScope:使用该注释,您可以在初始化时将ActionBean 放置在用户会话中, 从此之后在会话的生命

期重用它。

@Wizard:该注释允许 ActionBean 被看作向导表单的一部分(一个逻辑表单分成多个物理页面)。向导接收

特殊的状态管理和验证处理。

验证注释:

@DontValidate:该注释允许 ActionBean 事件跳过验证。

@Validate:利用该注释,可以在 ActionBean 中为单个字段配置定制的验证规则。 Validate 注释允许特殊

的参数定义验证业务规则。可以利用预配置的验证器,利用一个 表达式或组合(例如 @Validate

(required="true",minlength="1",maxlength="200")) 创建定制验证器。

@ValidateNestedProperties:该注释允许为对象验证使用嵌套的validate() 方法。

@ValidationMethod:利用该注释,您可以在任何事件处理程序被调用之前执行一个特 殊的验证方法。

其他注释:

@Before
@After
@SpringBean
@Test

源码下载链接

##############欢迎转载,但请标明转载处,谢谢。###############

stripes framework(框架)入门教程(附案例分析)相关推荐

  1. 阿里云学生服务器购买以及使用入门教程(附案例学习)

    最新版本的阿里云学生服务器该名称为:轻量应用服务器 虽然改名字了,但是还是以前的阿里云学生服务器.这次不仅改名称了,价格降低了(以前是1年114元,现在是1年96元),配置也更好了(以前配置是1核2G ...

  2. 80篇各ajax框架入门教程

    AJAX经典入门教程,入门实例,入门代码收藏. *VS2008 Ajax.NET快速入门教程* (2008-3-25) [本站原创]Ajax!?!入门教程之道 (2008-4-13) [本站原创]Aj ...

  3. c++框架有哪些_Java Mybatis框架入门教程_v20200726

    MyBatis 的前身是 Apache 的开源项目 iBatis.MyBatis 几乎可以代替 JDBC,是一个支持普通 SQL 查询,存储过程和高级映射的基于 Java 的优秀持久层框架.MyBat ...

  4. Egg框架入门教程合集之插件/工具/教程/专栏/开源项目

    Egg框架入门教程之示例合集 Awesome Egg.js 很棒的清单,精选了最好的Egg.js插件,工具,教程,文章等.欢迎公关! 内容 博客 文章 讲解 会议活动 外挂程式 应用领域 样板 构架 ...

  5. 腾讯Web前端JX框架入门教程(一)

    什么是JX框架 JX框架(Javascript eXtension tools)是模块化的非侵入式Web前端框架,适用于Web Page和Web App项目的开发,特别适合构建和组织大规模.工业级的W ...

  6. Tornado框架入门教程

    Tornado框架入门教程 Tornado在知乎广为使用,当你用Chrome打开网页版本的知乎,使用开发者工具仔细观察Network里面的请求,就会发现有一个特别的状态码为101的请求,它是用浏览器的 ...

  7. [网络安全自学篇] 七十二.逆向分析之OllyDbg动态调试工具(一)基础入门及TraceMe案例分析

    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步.前文分享了外部威胁防护和勒索病毒对抗.这篇文章将讲解逆向分析OllyDbg动态调试 ...

  8. 南加大计算机专业硕士申请,南加州大学计算机科学专业硕士申请条件独家整理附案例分析...

    H同学,在鑫泉留学精英团队的帮助下,以IBT:95;GRE:317+3.0;GPA:83.6%的成绩,被南加州大学计算机科学专业硕士成功录取.今天给大家分享一下该同学之所以成功被南加州大学计算机科学专 ...

  9. 公关传播与跨界营销的融合,附案例分析

    文 | 公关之家    作者:Leon360k 跨界营销一直以来都受到品牌企业的关注,同时也是品牌在营销实施过程中通过公关传播实现塑造形象.提升影响力.增强美誉度的有效方式. 品牌的跨界营销主要方向包 ...

最新文章

  1. 上手kubernetes之前,你应该知道这6件事
  2. Java RMI 入门
  3. AC日记——Mato的文件管理 bzoj 3289
  4. 织梦CMS内核宝宝算命取名企业模板
  5. 通俗易懂设计模式解析——代理模式
  6. java中方法未定义_java - Java SE中的未定义方法错误 - 堆栈内存溢出
  7. Spring框架----Spring框架的基本概念
  8. 荐书丨如何快速成为150万+小程序开发者中的一员
  9. vijos1053 用spfa判断是否存在负环
  10. qt如何在TetxEdit设置背景色(可以设置行或列)
  11. oracle怎么查看索引表空间,oracle查看索引、表空间
  12. LNode *和LinkList的小区分
  13. 南开大学2017年数学分析高等代数考研试题
  14. linux 文件管理器,linux终端文件管理器ranger使用详解
  15. SystemC自带example的pipe研习
  16. 实现轮播模拟点击事件
  17. [转]数据挖掘在金融行业十大应用
  18. Georgia与Times字体的比较
  19. C# textbox 根据文字/字符 换行并自适应高度
  20. QT实现ListWidget排列图片

热门文章

  1. 【c语言】蓝桥杯算法提高 约数个数
  2. oracle 12c java 驱动,oracle12c驱动jar包
  3. mysql 字段授权_mysql授权管理
  4. pandas 数据分析 相关性_探索 COVID-19 新冠数据来学习 Pandas
  5. 5月第3周业务风控关注 |网信办公布整治教育类应用的成果 关闭“作业狗”等20余款应用...
  6. Python基础-第二天
  7. 【BZOJ1305】 [CQOI2009]dance跳舞
  8. Visual Studio2015如何连接到windows azure(国内版本)
  9. Android中LayoutInflater的使用
  10. 算法-打印两个有序链表的公共部分