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

 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

extends AbstractBLogicAction

{

public BLogicResult doExecuteBLogic(P param){

BLogicResult result = businessLogic.execute(param);

}

}

5.interface BLogic

{

           BLogicResult execute(P params);

}

//自己寫的業務類

6.businessLogic

implements BLogic

{

           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個文件如下。

 

Terasoluna框架讲解(带小例子)_第1张图片

 

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

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

 

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

!-- ログオン業務のBean定義 -->

 

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

 

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

 

 

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

web.xml:

action org.apache.struts.action.ActionServlet config /WEB-INF/struts-config.xml,/WEB-INF/logon/struts-logon-config.xml

struts-config.xml

配置的东西就完了。

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

package com.blogic; import jp.terasoluna.fw.service.thin.BLogic; import jp.terasoluna.fw.service.thin.BLogicResult; import com.dto.UserMessageInput; import com.dto.UserMessageOutput; public class UserMessageBLogic implements BLogic{ public BLogicResult execute(UserMessageInput input){ String method = input.getUserName(); BLogicResult result = new BLogicResult(); UserMessageOutput output = new UserMessageOutput(); output.setUserName(method); result.setResultObject(output); result.setResultString("success"); return result; } }

包com.dto下的JavaBean:

package com.dto; public class UserMessageInput { private String userName; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } }

 

package com.dto; public class UserMessageOutput { private String userName = null; public String getUserName(){ return this.userName; } public void setUserName(String userName){ this.userName = userName; } }

包com.form里的formbean:

package com.form; import org.apache.struts.action.ActionForm; public class logonForm extends ActionForm{ private static final long serialVersionUID = 1L; private String userName = null; public String getUserName(){ return (this.userName); } public void setUserName(String userName){ this.userName = userName; } }

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

<%@ page contentType="text/html; charset=Windows-31J"%> <%@ taglib uri="/struts-html" prefix="html" %> <%@ taglib uri="/struts-bean" prefix="bean" %> <%@ taglib uri="/struts-logic" prefix="logic" %> <%@ taglib uri="/terasoluna-struts" prefix="ts" %> <%@ taglib uri="/terasoluna" prefix="t" %> -

-- ようこそTERASOLUNAへ --

跳转画面success.jsp:

<%@ page contentType="text/html; charset=Windows-31J"%> <%@ taglib uri="/struts-html" prefix="html" %> <%@ taglib uri="/struts-bean" prefix="bean" %> <%@ taglib uri="/struts-logic" prefix="logic" %> <%@ taglib uri="/terasoluna-struts" prefix="ts" %> <%@ taglib uri="/terasoluna" prefix="t" %> -

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

 

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

然后说说业务处理类,该类实现了BLogic

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

 

 

你可能感兴趣的:(java)