terasoluna框架

去年的这个时候在terasoluna的框架下做过开发,但今年又准备重新弄的时候发现很多东西都忘了,昨天下午整理了一下,并run了一个demo。写在这里是为了分享给其他人,有理解不到位的地方也请指摘。

terasoluna是日本整合的一个java框架,它整合了struts与spring。

 

terasoluna扩展了struts的控制器部分(后台)

1.Action (struts框架的) 

 

2.ActionEx  extends  Action{

public  ActionForward  execute (ActionMapping mapping,

                                 ActionForm form,

                                 HttpServletRequest request,

                                 HttpServletResponse response){

ActionForward forward = doExecute(mapping, form, request, response);

}

public  abstract  ActionForward  doExecute(ActionMapping mapping,

                                            ActionForm form,

                                            HttpServletRequest request,

                                            HttpServletResponse response);

}

 

3.AbstractBLogicAction<P>  extends  ActionEx{

public  ActionForward  doExecute(ActionMapping mapping,

                                  ActionForm form,

                                  HttpServletRequest request,

                                   HttpServletResponse response){

preDoExecuteBLogic(request, response, params);

 

//為空,可以自己添加,也可以不管

 

BLogicResult result = doExecuteBLogic(params);

postDoExecuteBLogic(request, response, params, result);

 

//為空,可以自己添加,也可以不管

 

}

public abstract BLogicResult doExecuteBLogic(P param) throws Exception;

}

4.BLogicAction<P> extends AbstractBLogicAction<P>{

public BLogicResult doExecuteBLogic(P param){

BLogicResult result = businessLogic.execute(param);

}

}

5.interface BLogic<P> {

           BLogicResult execute(P params);

}

//自己寫的業務類

6.businessLogic<P> implements BLogic<P> {

           BLogicResult execute(P params);

}

 

注:

1.      注意一下顏色相同的方法,有助于幫助你理解整個流程

第四個類(BLogicAction)和第六個類(businessLogic)会在后面的demo中的配置文件中體現它們之間的關聯

 

demo的需求是:从一个jsp页面中提交表单,将提交的内容显示在另一个jsp中。

1.首先我们需要在WEB-INF中建立一个由自己命名的文件夹,我这里命名为“logon”,并在下面添加了3个xml配置文件,分别是blogic-logon-io.xml,logonContext.xml,struts-logon-config.xml。建立这个文件夹是为了降低主模塊兒和附屬功能模塊兒的耦合性,如果以後需要對登錄部份進行修改,只需要修改logon目錄下著3個文件,不用修改根目錄下的配置文件WEB-INF路徑下與之相對的這3個文件如下。

 

 

在blogic-logon-io.xml中配置了相应和请求时的数据信息,需要设置如下:

[java]  view plain copy
  1. <!-- ビジネスロジック入出力定義 -->  
  2. <blogic-io>  
  3.     <action path="/userBL/userBL">  
  4.         <blogic-params bean-name="com.dto.UserMessageInput">  
  5.             <set-property property="userName" blogic-property="userName" source="form" />  
  6.         </blogic-params>  
  7.         <blogic-result>  
  8.             <set-property property="userName" blogic-property="userName" dest="form" />  
  9.         </blogic-result>  
  10.     </action>  
  11. </blogic-io>  

其中,<action path>是从页面jsp中发出的请求,<blogic-params>中的bean-name指定了存放请求数据的JavaBean,<set-property>中的property属性是form里声明的属性,blogic-property属性是JavaBean里声明的属性,source是说数据是从form里得到,因为数据和之前的struts一样,是先存放到form里的。<blogic-result>是所要相应的数据,在这里可以是属性,集合,对象。

 

在logonContext.xml中,配置了所要让spring托管的信息,与spring.xml有些类似。

[java]  view plain copy
  1. !-- ログオン業務のBean定義 -->  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xmlns:util="http://www.springframework.org/schema/util"  
  5.        xsi:schemaLocation="  
  6. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  7. http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">  
  8.   
  9.   
  10.     <!-- ログオン処理用アクション定義 -->  
  11.     <bean name="/userBL/userBL" scope="singleton"  
  12.           class="jp.terasoluna.fw.web.struts.actions.BLogicAction" >  
  13.           <property name="businessLogic" ref="UserMessageBLogic" />  
  14.     </bean>  
  15.   
  16.   
  17.     <!-- ログオン処理ビジネスロジック定義 -->  
  18.     <bean id="UserMessageBLogic" scope="singleton"  
  19.           class="com.blogic.UserMessageBLogic" />  
  20.     </beans>  

 

我们需要配置第二个bean和第三个bean。第二个bean配置了我们所写的逻辑处理类注入到BlogicAction类的信息,<property>中的ref属性与第三个bean里的id相一致。在第三个bean中我们配置了具体的业务逻辑类地址。

 

在struts-logon-struts.xml中,配置了form-bean的具体位置,action的请求映射路径,以及成功跳转的页面。

 

[java]  view plain copy
  1. <struts-config>  
  2.   
  3. <!-- ======================================== フォームビーン定義 -->  
  4.   <form-beans>  
  5.   
  6.     <!-- ログオン用アクションフォーム -->  
  7.     <form-bean name="_logonForm"  
  8.                type="com.form.logonForm" />  
  9.   
  10.   </form-beans>  
  11.   
  12. <!-- ======================================== アクションマッピング定義 -->  
  13.   <action-mappings type="jp.terasoluna.fw.web.struts.action.ActionMappingEx">     
  14.     <action path="/userBL/userBL"  
  15.             name="_logonForm" scope="request"  
  16.             validate="false">  
  17.         <forward name="success" path="/success.jsp" />  
  18.     </action>  
  19.    </action-mappings>  
  20. </struts-config>  

 

而这三个xml文件都需要在主模块的web.xml和struts-xml文件中声明加载。如下所示:

web.xml:

[java]  view plain copy
  1. <servlet>  
  2.     <servlet-name>action</servlet-name>  
  3.     <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>  
  4.     <init-param>  
  5.         <param-name>config</param-name>  
  6.         <param-value>/WEB-INF/struts-config.xml,/WEB-INF/logon/struts-logon-config.xml</param-value>  
  7.     </init-param>  
  8.     <init-param>  

struts-config.xml

[java]  view plain copy
  1. <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">  
  2.     <set-property property="contextConfigLocation" value="/WEB-INF/moduleContext.xml,/WEB-INF/logon/logonContext.xml"/>  
  3. </plug-in>  
  4. <plug-in className="org.apache.struts.validator.ValidatorPlugIn">  
  5.     <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validator-rules-ex.xml,/WEB-INF/validation.xml"/>  
  6.     <set-property property="stopOnFirstError" value="false"/>  
  7. </plug-in>  
  8. <plug-in className="jp.terasoluna.fw.web.struts.plugins.BLogicIOPlugIn">  
  9.     <set-property property="digesterRules" value="/WEB-INF/blogic-io-rules.xml"/>  
  10.     <set-property property="mapperClass" value="jp.terasoluna.fw.service.thin.BLogicMapper"/>  
  11.     <set-property property="resources" value="/WEB-INF/blogic-io.xml,/WEB-INF/logon/blogic-logon-io.xml"/>  
  12. </plug-in>  

配置的东西就完了。

下面是包com.blogic下的业务处理类UserMessageBLogic:

[java]  view plain copy
  1. package com.blogic;  
  2.   
  3. import jp.terasoluna.fw.service.thin.BLogic;  
  4. import jp.terasoluna.fw.service.thin.BLogicResult;  
  5.   
  6.   
  7. import com.dto.UserMessageInput;  
  8. import com.dto.UserMessageOutput;  
  9.   
  10.   
  11. public  class UserMessageBLogic implements BLogic<UserMessageInput>{  
  12.       
  13.     public BLogicResult execute(UserMessageInput input){  
  14.         String method = input.getUserName();  
  15.         BLogicResult result = new BLogicResult();  
  16.         UserMessageOutput output = new UserMessageOutput();  
  17.         output.setUserName(method);  
  18.         result.setResultObject(output);  
  19.         result.setResultString("success");  
  20.           
  21.         return result;  
  22.     }  
  23.   
  24. }  

包com.dto下的JavaBean:

[java]  view plain copy
  1. package com.dto;  
  2.   
  3. public class UserMessageInput {  
  4.       
  5.     private String userName;  
  6.       
  7.     public String getUserName() {  
  8.         return userName;  
  9.     }  
  10.   
  11.     public void setUserName(String userName) {  
  12.         this.userName = userName;  
  13.     }  
  14.   
  15. }  

 

[java]  view plain copy
  1. package com.dto;  
  2.   
  3.   
  4. public class UserMessageOutput {  
  5.     private String userName = null;  
  6.       
  7.     public String getUserName(){  
  8.         return this.userName;  
  9.     }  
  10.     public void setUserName(String userName){  
  11.         this.userName = userName;  
  12.     }  
  13.   
  14. }  

包com.form里的formbean:

[java]  view plain copy
  1. package com.form;  
  2.   
  3. import org.apache.struts.action.ActionForm;  
  4.   
  5.   
  6. public class logonForm extends ActionForm{  
  7.       
  8.       
  9.     private static final long serialVersionUID = 1L;  
  10.     private String userName = null;  
  11.       
  12.     public String getUserName(){  
  13.         return (this.userName);  
  14.     }  
  15.       
  16.     public void setUserName(String userName){  
  17.         this.userName = userName;  
  18.     }  
  19.   
  20. }  

启动工程的初始画面welcome.jsp:

[xhtml]  view plain copy
  1. <%@ page contentType="text/html; charset=Windows-31J"%>  
  2. <%@ taglib uri="/struts-html" prefix="html" %>  
  3. <%@ taglib uri="/struts-bean" prefix="bean" %>  
  4. <%@ taglib uri="/struts-logic" prefix="logic" %>  
  5. <%@ taglib uri="/terasoluna-struts" prefix="ts" %>  
  6. <%@ taglib uri="/terasoluna" prefix="t" %>  
  7.   
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  9.   
  10. <html:html>  
  11. <head>  
  12. <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">  
  13. <title>-</title>  
  14. </head>  
  15. <body>  
  16. <div style="text-align: center" mce_style="text-align: center">  
  17.   
  18. -- ようこそTERASOLUNAへ --  
  19. <br>  
  20. <html:form action="/userBL/userBL.do" focus="useName">  
  21.      <html:text property="userName" size="16" maxlength="16"/><br>  
  22.      <html:submit property = "submit" value="Submit"/>  
  23.      <html:reset/>  
  24.   </html:form>  
  25. </div>  
  26.   
  27. </body>  
  28. </html:html>  

跳转画面success.jsp:

[xhtml]  view plain copy
  1. <%@ page contentType="text/html; charset=Windows-31J"%>  
  2. <%@ taglib uri="/struts-html" prefix="html" %>  
  3. <%@ taglib uri="/struts-bean" prefix="bean" %>  
  4. <%@ taglib uri="/struts-logic" prefix="logic" %>  
  5. <%@ taglib uri="/terasoluna-struts" prefix="ts" %>  
  6. <%@ taglib uri="/terasoluna" prefix="t" %>  
  7.   
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  9.   
  10. <html:html>  
  11. <head>  
  12. <meta http-equiv="Content-Type" content="text/html; charset=shift_jis">  
  13. <title>-</title>  
  14. </head>  
  15. <body bgcolor="pink">  
  16.     <bean:write name="_logonForm" property="userName"/>  
  17. </body>  
  18. </html:html>  

以上就是所有所需要的文件。

 

关于JavaBean和FomBean呢,是这样,多个请求可能用到1个FormBean,但是可以用多个JavaBean,所以在FormBean中必须声明所有的JavaBean中所需要的属性,因为在blogic-logon-io.xml中配置的请求和响应的数据都是从FormBean中得到的。

然后说说业务处理类,该类实现了BLogic<P>接口,P是请求的JavaBean对象,重写execute方法,在该方法体内写我们的业务处理,通过input请求数据的JavaBean得到数据,实例1个result对象,output是响应数据的JavaBean,把要响应的数据存放到该JavaBean里,把output对象用result.setResultObject存放在result对象里,这一步就是在blogic-logon-io.xml文件<blogic-result>标签体里配置的信息相关联,最后通过result对象的setResultString(“success”); 方法请求跳转到呈现页面,”success”是指struts-logon-config.xml文件里该action请求信息里配置的forword的name属性值,根据该信息跳转到了success.jsp页面。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值