Stripes入门

Stripes,同Struts一样,是一种展示层的框架。一般在项目中作应用层使用。它的核心接口是ActionBean,类似于Spring中的Controller,实现该接口后,你就可以编写event,调用相应的业务逻辑进行处理。
    首先我们以一个简单的HelloWorld项目来了解一下Stripes的流程以及部分配置文件:
    目标:当在页面上点击“welcome”按钮后,跳转至另一页面并显示输入信息。
    Stripes的入口是filter,  StripesFilter  同时会过滤所有的  JSP  文件和  DispatcherServlet。 如果请求的是一个 jsp 页面,在  StripesFilter 处理完后会直接跳转到相应的JSP页面。如果请 求是一个 ActionBean 的某个 event ,后续处理工作会交给 DispatcherServlet 来进行。
    StripesFilter  主要是为请求处理作一些准备工作,它负责读取配置,处理  Locale ,并根据页面的 form 取得相应的 ServletWrapper 包装类。
你需要在web.xml中配置StripesFilter,详细代码如下:  
   <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.Packages</param-name>
            <param-value>com.thoughtworks.stripes</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>

    <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>
Stripes定义了自己的标签,index.jsp代码如下:              
 <body>
            <stripes:form beanclass="com.thoughtworks.stripes.HelloActionBean"  method="post">
           <div>
               <stripes:text name="message"/>
          </div>
         <div>
             <stripes:submit name="sayHello" value="Welcome"/>
         </div>
        </stripes:form>
    </body>
beanclass属性定义由哪一个ActionBean来处理这个form。在点击welcome按钮后,Stripes将beanclass值根据自己的规则生成特定的url,在此项目中为:Hello.action。在Stripes:sumbit的name属性来定义由哪个event handler来处理,在此项目中为sayHello方法。
Filter经过过滤和简单处理后,将控制权移交给DispatcherServlet(拦截*.action),DispatcherServlet根据url来生成HelloActionBean的对象,HttpServletRequest将要传递的参数绑定到ActionBean上(必须添加getter和setter方法),根据form提交按钮的 name属性来判断需要哪一个handler来处理该event。
HelloActionBean中代码如下:
public class HelloActionBean implements ActionBean {
    private static final String GREETPAGE = "/WEB-INF/page/greeting.jsp";
    private String message;
    private ActionBeanContext context;
    public void setContext(ActionBeanContext context) {
        this.context = context;
    }
    public ActionBeanContext getContext() {
        return context;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public Resolution sayHello(){
        return new ForwardResolution(GREETPAGE);
    }
}
在sayHello方法处理后,返回一个Resolution对象。
Resolution 提供了 HttpServletRequest 和 HttpServletResponse 的访问能力。
Stripes  提供了几种  Resolution  实现,ForwardResolution  ,RedirectResolution, StreamingResolution,ErrorResolution。
比较常用的是ForwardResolution和RedirectResolution。ForwardResolution 最终调用RequestDispatcher的forward方法显 示目标页面。而RedirectResolution 调用  HttpServletResponse的 sendRedirect方法显示目标页面。这两者之间的区别于Servlet中forward和redirect相同,本质是前者url与之前页面url一样,后者则发生改变。
在本项目中是使用了ForwardResolution来处理的。关于要跳转的页面,我们需要注意它自动添加的前缀是项目名\src\main\webapp,所以如果要跳转的页面与当前页面处于同一等级,可直接填写相对路径。否则,建议写绝对路径名。
在跳转到的greeting.jsp页面中,我们需要获取message的值,详细代码如下:
    <body>
         <h1>Hello World!</h1>
         <div>${actionBean.message}</div>
    </body>
我们可以根据创建的actionBean对象来获取message的值。如果有多个actionBean,Stripes会自动查找到对应的actionBean。范围为scope。
通过上述事例后,应该对Stripes的工作流程有了大致的了解,接下来我们需要学习Stripes自带的ajax的数据验证功能。谢谢!


        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值