`
fly1206
  • 浏览: 55759 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

日系框架之seasar2(S2JSF)---(上)

阅读更多

回想起当年使用struts的时候,对他的tag真是又爱又恨。盼星星盼月亮,迎来了JSF。

  然而,JSF的tag库虽然强大,却失去了灵活性,反而让人望而生畏。

  S2JSF在通过seasar2的DI功能,把JSF标签注入到HTML页面,实现了类似模板引擎的功能。

  示例如下:

  如下图所示新建工程:

日系框架之seasar2(S2JSF)---(上)

日系框架之seasar2(S2JSF)---(上)

  代码依次为:

  AddAction.java

packageexamples.jsf.action;
publicinterfaceAddAction{
  publicStringcalculate();
}

  AddActionImpl.java

packageexamples.jsf.action.impl;
importexamples.jsf.action.AddAction;
importexamples.jsf.dto.AddDto;
importexamples.jsf.logic.AddLogic;
publicclassAddActionImplimplementsAddAction{
  privateAddDtoaddDto;
  privateAddLogicaddLogic;
  publicvoidsetAddDto(AddDtoaddDto){
    this.addDto=addDto;
  }
  publicvoidsetAddLogic(AddLogicaddLogic){
    this.addLogic=addLogic;
  }
  publicStringcalculate(){
    intresult=addLogic.calculate(addDto);
    addDto.setResult(result);
    returnnull;
  }
}

  allaop.dicon

<?xmlversion="1.0"encoding="Shift_JIS"?>
<!DOCTYPEcomponentsPUBLIC"-//SEASAR2.1//DTDS2Container//EN"
  "http://www.seasar.org/dtd/components21.dtd">
<components>
  <includepath="aop.dicon"/>
  <includepath="dao.dicon"/>
  <includepath="j2ee.dicon"/>
  <component
    name="actionThrowsInterceptor"
    class="examples.jsf.interceptor.ActionThrowsInterceptor"
  />
  <component
    name="actionInterceptorChain"
    class="org.seasar.framework.aop.interceptors.InterceptorChain"
  >
    <initMethodname="add"><arg>aop.traceInterceptor</arg></initMethod>
    <initMethodname="add"><arg>actionThrowsInterceptor</arg></initMethod>
  </component>
  <component
    name="logicInterceptorChain"
    class="org.seasar.framework.aop.interceptors.InterceptorChain"
  >
    <initMethodname="add"><arg>aop.traceThrowsInterceptor</arg></initMethod>
    <initMethodname="add"><arg>aop.traceInterceptor</arg></initMethod>
    <initMethodname="add"><arg>j2ee.requiredTx</arg></initMethod>
  </component>
  <component
    name="daoInterceptorChain"
    class="org.seasar.framework.aop.interceptors.InterceptorChain"
  >
    <initMethodname="add"><arg>aop.traceInterceptor</arg></initMethod>
    <initMethodname="add"><arg>dao.interceptor</arg></initMethod>
  </component>
</components>

 

AddDto.java

packageexamples.jsf.dto;
importjava.io.Serializable;
publicclassAddDtoimplementsSerializable{
  privatestaticfinallongserialVersionUID=1L;
  privateintarg1;
  privateintarg2;
  privateintresult;
  publicAddDto(){
  }
  publicintgetArg1(){
    returnarg1;
  }
  publicvoidsetArg1(intarg1){
    this.arg1=arg1;
  }
  publicintgetArg2(){
    returnarg2;
  }
  publicvoidsetArg2(intarg2){
    this.arg2=arg2;
  }
  publicintgetResult(){
    returnresult;
  }
  publicvoidsetResult(intresult){
    this.result=result;
  }
}

  HelloDto.java

packageexamples.jsf.dto;
publicclassHelloDto{
  privateStringname="S2JSF";
  publicStringgetName(){
    returnname;
  }
  publicvoidsetName(Stringname){
    this.name=name;
  }
}

  AppRuntimeException.java

packageexamples.jsf.exception;
importjava.text.MessageFormat;
importjava.util.ResourceBundle;
publicclassAppRuntimeExceptionextendsRuntimeException{
  privatestaticfinallongserialVersionUID=1L;
  privatestaticfinalObject[]EMPTY_ARGS=newObject[0];
  privatestaticfinalStringBUNDLE_NAME="appMessages";
  privateStringmessageId;
  privateObject[]args;
  publicAppRuntimeException(StringmessageId){
    this(messageId,EMPTY_ARGS);
  }
  publicAppRuntimeException(StringmessageId,Object[]args){
    this(messageId,args,null);
  }
  publicAppRuntimeException(StringmessageId,Object[]args,Throwablecause){
    initCause(cause);
    this.messageId=messageId;
    this.args=args;
  }
  publicObject[]getArgs(){
    returnargs;
  }
  publicStringgetMessageId(){
    returnmessageId;
  }
  publicStringgetMessage(){
    ResourceBundlebundle=ResourceBundle.getBundle(BUNDLE_NAME);
    Stringpattern=bundle.getString(messageId);
    returnMessageFormat.format(pattern,args);
  }
}

 

 

ActionThrowsInterceptor.java

packageexamples.jsf.interceptor;
importjavax.faces.context.FacesContext;
importorg.aopalliance.intercept.MethodInvocation;
importorg.seasar.framework.aop.interceptors.ThrowsInterceptor;
importorg.seasar.jsf.util.MessageUtil;
importexamples.jsf.exception.AppRuntimeException;
publicclassActionThrowsInterceptorextendsThrowsInterceptor{
  privatestaticfinallongserialVersionUID=1L;
  publicStringhandleThrowable(AppRuntimeExceptionex,MethodInvocationinvocation)throwsThrowable{
    FacesContextcontext=FacesContext.getCurrentInstance();
    context.addMessage(null,MessageUtil.getErrorMessage(ex.getMessageId(),ex.getArgs()));
    returnnull;
  }
}

  AddLogic.java

packageexamples.jsf.logic;
importexamples.jsf.dto.AddDto;
publicinterfaceAddLogic{
  publicintcalculate(AddDtoaddDto);
}

  AddLogicImpl.java

packageexamples.jsf.logic.impl;
importexamples.jsf.dto.AddDto;
importexamples.jsf.logic.AddLogic;
publicclassAddLogicImplimplementsAddLogic{
  publicAddLogicImpl(){
  }
  publicintcalculate(AddDtoaddDto){
    returnaddDto.getArg1()+addDto.getArg2();
  }
}

  RequestDumpFilter.java

packageexamples.jsf.util;
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletContext;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.HttpServletRequest;
importorg.apache.commons.logging.Log;
importorg.apache.commons.logging.LogFactory;
publicfinalclassRequestDumpFilterimplementsFilter{
  privatestaticfinalLoglog=LogFactory.getLog(RequestDumpFilter.class);
  privateFilterConfigconfig=null;
  publicvoidinit(finalFilterConfigfilterConfig)throwsServletException{
    config=filterConfig;
  }
  publicvoiddestroy(){
    config=null;
  }
  privatestaticfinalStringINDENT=" ";
  privatestaticfinalStringLF=System.getProperty("line.separator");
  publicvoiddoFilter(finalServletRequestrequest,
      finalServletResponseresponse,finalFilterChainchain)
      throwsIOException,ServletException{
    if(config==null){
      return;
    }
    if(requestinstanceofHttpServletRequest){
      finalHttpServletRequesthrequest=(HttpServletRequest)request;
      log.debug(LF+LF
          +"**before*****************************************:"
          +gerServletPath(request)+LF+dumpRequest(hrequest));
      try{
        chain.doFilter(request,response);
      }finally{
        finalStringBuffersb=newStringBuffer();
        RequestDumpUtil.dumpRequestAttributes(sb,hrequest,LF,INDENT);
        RequestDumpUtil.dumpCookies(sb,hrequest,LF,INDENT);
        RequestDumpUtil.dumpSessionAttributes(sb,hrequest,LF,INDENT);
        RequestDumpUtil.dumpContextAttributes(sb,config
            .getServletContext(),LF,INDENT);
        log
            .debug(LF
                +LF
                +"**after*****************************************:"
                +gerServletPath(request)+LF+sb.toString());
      }
    }else{
      chain.doFilter(request,response);
    }
  }
  privateStringdumpRequest(finalHttpServletRequestrequest){
    finalStringBuffersb=newStringBuffer();
    finalServletContextcontext=config.getServletContext();
    RequestDumpUtil.dumpRequestAndContextProperties(sb,request,context,
        LF,INDENT);
    RequestDumpUtil.dumpRequestParameters(sb,request,LF,INDENT);
    RequestDumpUtil.dumpRequestAttributes(sb,request,LF,INDENT);
    RequestDumpUtil.dumpCookies(sb,request,LF,INDENT);
    RequestDumpUtil.dumpRequestHeaders(sb,request,LF,INDENT);
    RequestDumpUtil.dumpSessionAttributes(sb,request,LF,INDENT);
    RequestDumpUtil.dumpContextAttributes(sb,context,LF,INDENT);
    returnsb.toString();
  }
  privateStringgerServletPath(finalServletRequestrequest){
    if(requestinstanceofHttpServletRequest){
      return((HttpServletRequest)request).getServletPath();
    }
    returnnull;
  }
  publicStringtoString(){
    if(config==null){
      return("RequestDumperFilter()");
    }
    finalStringBuffersb=newStringBuffer("RequestDumperFilter(");
    sb.append(config);
    sb.append(")");
    return(sb.toString());
  }
}

 

 

分享到:
评论

相关推荐

    seasar框架S2Dao使用指南

    seasar2框架中S2Dao使用指南,轻松掌握S2Dao 访问Oracle数据库的用法,与技巧

    一个日系seasar框架Demo:S2Containor+S2Dao+SAStruts+mayaa

    当前日本流行的开发框架,官方网站:http://www.seasar.org/我上传的这个是已经把各个框架集成好的,可以直接在上面进行开发。如有需要的话还可以加上DBFlute

    s2-dao-1.0.50.zip

    s2-dao-1.0.50.zip seasar框架的讲解s2-dao

    seasar2中文文档

    seasar2文档内容 快速上手 最初的一步 更进一步 S2Container指南 需要作成的文件 S2Container的定义 S2Container的生成 SingletonS2ContainerFactory的使用 S2ContainerFactory的使用 组件的取得 ...

    小日本的开源框架 Seasar2

    小日本的开源框架 Seasar2 所 谓“Seasar2”就是一个“轻量级容器”,面向无法摆脱“Java 应用开发”之烦恼的所谓“开发者”,它能够保证开发的“高生产率和高品质”。并且同“其它轻量级容器”不同的是,“完全不...

    seasar s2dao

    seasar s2dao

    s2-dao-1.0.49.zip

    无须用XML定义映射及实装代码的O/R Mapping 软件框架

    S2Tiger-2.3.23.zip

    DI Container with AOP

    Seasar2其实就是类似于Spring的一个开源框架

    所谓“Seasar2”就是一个“轻量级容器”,面向无法摆脱“Java 应用开发”之烦恼的所谓“开发者”,它能够保证开发的“高生产率和高品质”。并且同“其它轻量级容器”不同的是,“完全不需要书写设定文件”,“就算是...

    基本Seasar2 Web工程项目源码

    Seasar2这个框架在日本十分的流行。Seasar2其实就是类似于spring的一个提供DI功能的开源框架,但比Sping轻量级。 并且同“其它轻量级容器”不同的是,“完全不需要书写设定文件”,“就算是应用程序发生改动也无需...

    Seasar2的英文介绍

    seasar2的英文介绍,主要介绍seasar框架。pdf格式。

    seasar2.PPT

    关于seasar2的PPT文件,经典!欢迎下载!

    s2hibernate

    s2hibernate需要的jar包,主要用于日系seasar框架。

    seasar2

    日本比较流行的框架 很不错的幻灯片

    seasar教程,java开发框架之一

    seasar教程,最流行的java开发框架之一,再过几年可能成为主流. struts与Spring与Hibernate的简化版本,国外很多大公司己经用了几年了,NEC,LG的软件开发都是用这个的。兄弟们快学吧

    S2Flex2-1.1.0

    支持在Flash播放器中用Flex调用S2Container组件的软件库

    seasar2构建工程

    seasar2,构建工程的pdf,讲解如何建工程。入门级资料。

    s2vali-0.6.0-bin.zip

    日本鬼子的mvc框架。MVC Framework inspired by seasar2

    seasar2 官方例子代码

    seasar2 官方例子代码。 学习通过的话;对于java的开发就大有帮助。

    seasar2.3

    seasar2.3之S2Backport175-2.3.22.zip

Global site tag (gtag.js) - Google Analytics