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

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

阅读更多

RequestDumpUtil.java

packageexamples.jsf.util;
importjava.util.Collections;
importjava.util.Enumeration;
importjava.util.Iterator;
importjava.util.Locale;
importjava.util.SortedSet;
importjava.util.TreeSet;
importjavax.servlet.ServletContext;
importjavax.servlet.http.Cookie;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpSession;
publicclassRequestDumpUtil{
  publicstaticvoiddumpRequestHeaders(finalStringBuffersb,
      finalHttpServletRequestrequest,finalStringlf,
      finalStringindent){
    for(finalIteratorit=toSortedSet(request.getHeaderNames())
        .iterator();it.hasNext();){
      finalStringname=(String)it.next();
      finalStringvalue=request.getHeader(name);
      sb.append(indent);
      sb.append("[header]").append(name);
      sb.append("=").append(value);
      sb.append(lf);
    }
  }
  publicstaticvoiddumpContextAttributes(finalStringBuffersb,
      finalServletContextservletContext,finalStringlf,
      finalStringindent){
    if(servletContext==null){
      return;
    }
    for(finalIteratorit=toSortedSet(servletContext.getAttributeNames())
        .iterator();it.hasNext();){
      finalStringname=(String)it.next();
      finalObjectattr=servletContext.getAttribute(name);
      sb.append(indent);
      sb.append("[context]").append(name).append("=").append(attr);
      sb.append(lf);
    }
  }
  publicstaticvoiddumpCookies(finalStringBuffersb,
      finalHttpServletRequestrequest,finalStringlf,
      finalStringindent){
    Cookiecookies[]=request.getCookies();
    if(cookies==null){
      cookies=newCookie[0];
    }
    for(inti=0;i<cookies.length;i++){
      sb.append(indent);
      sb.append("[cookie]").append(cookies[i].getName());
      sb.append("=").append(cookies[i].getValue());
      sb.append(lf);
    }
  }
  publicstaticvoiddumpRequestAttributes(finalStringBuffersb,
      finalHttpServletRequestrequest,finalStringlf,
      finalStringindent){
    for(finalIteratorit=toSortedSet(request.getAttributeNames())
        .iterator();it.hasNext();){
      finalStringname=(String)it.next();
      finalObjectattr=request.getAttribute(name);
      sb.append(indent);
      sb.append("[request]").append(name).append("=").append(attr);
      sb.append(lf);
    }
  }
  publicstaticvoiddumpSessionAttributes(finalStringBuffersb,
      finalHttpServletRequestrequest,finalStringlf,
      finalStringindent){
    finalHttpSessionsession=request.getSession(false);
    if(session==null){
      return;
    }
    for(finalIteratorit=toSortedSet(session.getAttributeNames())
        .iterator();it.hasNext();){
      finalStringname=(String)it.next();
      finalObjectattr=session.getAttribute(name);
      sb.append(indent);
      sb.append("[session]").append(name).append("=").append(attr);
      sb.append(lf);
    }
  }
  privatestaticSortedSettoSortedSet(finalEnumerationenu){
    finalSortedSetset=newTreeSet();
    set.addAll(Collections.list(enu));
    returnset;
  }
  publicstaticvoiddumpRequestParameters(finalStringBuffersb,
      finalHttpServletRequestrequest,finalStringlf,
      finalStringindent){
    for(finalIteratorit=toSortedSet(request.getParameterNames())
        .iterator();it.hasNext();){
      finalStringname=(String)it.next();
      sb.append(indent);
      sb.append("[param]").append(name).append("=");
      finalStringvalues[]=request.getParameterValues(name);
      for(inti=0;i<values.length;i++){
        if(i>0){
          sb.append(",");
        }
        sb.append(values[i]);
      }
      sb.append(lf);
    }
  }
  publicstaticvoiddumpRequestAndContextProperties(finalStringBuffersb,
      finalHttpServletRequestrequest,finalServletContextcontext,
      finalStringlf,finalStringindent){
    finalHttpSessionsession=request.getSession(false);
    sb.append(indent);
    sb.append("Requestclass="+request.getClass().getName()).append(
        ",instance=").append(request);
    sb.append(lf);
    sb.append(indent);
    sb.append("RequestedSessionId=")
        .append(request.getRequestedSessionId());
    sb.append(lf);
    sb.append(indent);
    if(session!=null){
      sb.append("SessionSessionId=").append(session.getId());
      sb.append(lf).append(indent);
    }
    sb.append("REQUEST_URI=").append(request.getRequestURI());
    sb.append(",SERVLET_PATH=").append(request.getServletPath());
    sb.append(lf).append(indent);
    if(session!=null){
      sb.append("Session::CreationTime=").append(
          session.getCreationTime());
      sb.append(",LastAccessedTime=").append(
          session.getLastAccessedTime());
      sb.append(",MaxInactiveInterval=").append(
          session.getMaxInactiveInterval());
      sb.append(lf).append(indent);
    }
    sb.append("CharacterEncoding="+request.getCharacterEncoding());
    sb.append(",ContentLength=").append(request.getContentLength());
    sb.append(",ContentType=").append(request.getContentType());
    sb.append(",Locale=").append(request.getLocale());
    sb.append(",Locales=");
    finalEnumerationlocales=request.getLocales();
    booleanfirst=true;
    while(locales.hasMoreElements()){
      finalLocalelocale=(Locale)locales.nextElement();
      if(first){
        first=false;
      }else{
        sb.append(",");
      }
      sb.append(locale.toString());
    }
    sb.append(",Scheme=").append(request.getScheme());
    sb.append(",isSecure=").append(request.isSecure());
    sb.append(lf).append(indent);
    sb.append("SERVER_PROTOCOL=").append(request.getProtocol());
    sb.append(",REMOTE_ADDR=").append(request.getRemoteAddr());
    sb.append(",REMOTE_HOST=").append(request.getRemoteHost());
    sb.append(",SERVER_NAME=").append(request.getServerName());
    sb.append(",SERVER_PORT=").append(request.getServerPort());
    sb.append(lf);
    sb.append(indent);
    sb.append("ContextRealPath=").append(context.getRealPath("/"));
    sb.append(lf).append(indent);
    sb.append("SERVER_SOFTWARE=").append(context.getServerInfo());
    sb.append(",ServletContextName=").append(
        context.getServletContextName());
    sb.append(",MajorVersion=").append(context.getMajorVersion());
    sb.append(",MinorVersion=").append(context.getMinorVersion());
    sb.append(lf).append(indent);
    sb.append("ContextPath=").append(request.getContextPath());
    sb.append(",REQUEST_METHOD=").append(request.getMethod());
    sb.append(",QUERY_STRING=").append(request.getQueryString());
    sb.append(",PathInfo=").append(request.getPathInfo());
    sb.append(",RemoteUser=").append(request.getRemoteUser());
    sb.append(lf);
  }
}

 

 

app.dicon

<?xmlversion="1.0"encoding="Shift_JIS"?>
<!DOCTYPEcomponentsPUBLIC"-//SEASAR//DTDS2Container2.4//EN"
  "http://www.seasar.org/dtd/components24.dtd">
<components>
  <includepath="jsf.dicon"/>
  <includepath="teeda.dicon"/>
  <includepath="dao.dicon"/>
  <includepath="examples/jsf/dicon/allaop.dicon"/>
  <component
    class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister"
  >
    <propertyname="instanceDef">
      @org.seasar.framework.container.deployer.InstanceDefFactory@REQUEST
    </property>
    <initMethodname="addClassPattern">
      <arg>"examples.jsf.action.impl"</arg>
      <arg>".*ActionImpl"</arg>
    </initMethod>
  </component>
  <component
    class="org.seasar.framework.container.autoregister.AspectAutoRegister"
  >
    <propertyname="interceptor">actionInterceptorChain</property>
    <initMethodname="addClassPattern">
      <arg>"examples.jsf.action.impl"</arg>
      <arg>".*ActionImpl"</arg>
    </initMethod>
  </component>
  <component
    class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister"
  >
    <propertyname="instanceDef">
      @org.seasar.framework.container.deployer.InstanceDefFactory@REQUEST
    </property>
    <initMethodname="addClassPattern">
      <arg>"examples.jsf.dto"</arg>
      <arg>".*Dto"</arg>
    </initMethod>
  </component>
  <component
    class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister"
  >
    <initMethodname="addClassPattern">
      <arg>"examples.jsf.logic.impl"</arg>
      <arg>".*LogicImpl"</arg>
    </initMethod>
  </component>
  <component
    class="org.seasar.framework.container.autoregister.AspectAutoRegister"
  >
    <propertyname="interceptor">logicInterceptorChain</property>
    <initMethodname="addClassPattern">
      <arg>"examples.jsf.logic.impl"</arg>
      <arg>".*LogicImpl"</arg>
    </initMethod>
  </component>
</components>

 

 

 appMessages.properties和appMessages_ja.properties暂为空。

  convention.dicon

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEcomponentsPUBLIC"-//SEASAR//DTDS2Container2.4//EN"
  "http://www.seasar.org/dtd/components24.dtd">
<components>
  <componentclass="org.seasar.framework.convention.impl.NamingConventionImpl"/>
</components>

  jdbc.dicon(本例中未使用数据库,可按实际情况更改配置)

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEcomponentsPUBLIC"-//SEASAR//DTDS2Container2.4//EN"
  "http://www.seasar.org/dtd/components24.dtd">
<componentsnamespace="jdbc">
  <includepath="jta.dicon"/>
  <includepath="jdbc-extension.dicon"/>
  <componentclass="org.seasar.extension.jdbc.impl.BasicResultSetFactory"/>
  <componentclass="org.seasar.extension.jdbc.impl.ConfigurableStatementFactory">
    <arg>
      <componentclass="org.seasar.extension.jdbc.impl.BasicStatementFactory"/>
    </arg>
    <propertyname="fetchSize">100</property>
    <!--
    <propertyname="maxRows">100</property>
    -->
  </component>
  <!--
  <componentclass="org.seasar.extension.jdbc.impl.OracleResultSetFactory"/>
  <componentclass="org.seasar.extension.jdbc.impl.BooleanToIntStatementFactory"/>
  -->
  <!--forHSQLDB-->
  <componentname="xaDataSource"
    class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
    <propertyname="driverClassName">
      "org.hsqldb.jdbcDriver"
    </property>
    <propertyname="URL">
      "jdbc:hsqldb:hsql://localhost:9001"
      <!--
      "jdbc:hsqldb:file:"
        +@org.seasar.framework.util.ResourceUtil@getBuildDir(@org.seasar.extension.dbcp.impl.ConnectionPoolImplTest@class).getCanonicalPath()
        +"/data/demo"
      -->
    </property>
    <propertyname="user">"sa"</property>
    <propertyname="password">""</property>
  </component>
  <!--forOracle-->
  <!--
  <componentname="xaDataSource"
    class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
    <propertyname="driverClassName">
      "oracle.jdbc.driver.OracleDriver"
    </property>
    <propertyname="URL">
      "jdbc:oracle:thin:@xxx:1521:xxx"
    </property>
    <propertyname="user">"xxx"</property>
    <propertyname="password">"xxx"</property>
  </component>
  -->
  <!--forPostgreSQL-->
  <!--
  <componentname="xaDataSource"
    class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
    <propertyname="driverClassName">
      "org.postgresql.Driver"
    </property>
    <propertyname="URL">
     "jdbc:postgresql://localhost/TEST"
    </property>
    <propertyname="user">"xxxx"</property>
    <propertyname="password">"xxxx"</property>
  </component>
  -->
  <!--MySQL
  -MySQL4.0以下でマルチバイト文字を扱う場合には,URL指定の後に,
    以下の接続パラメータを追加で指定してください.
    useUnicode=true
    characterEncoding=[MySQLのエンコーディングに対応した
    Javaのエンコーディング名]
    例:"jdbc:mysql://localhost:3306/test?useUnicode=true"+
    "&characterEncoding=Windows-31J"
  -MySQL5.0以降で,エンコーディングがeucjpmsの列を扱う場合には,
    URL指定の後に,以下の接続パラメータを追加で指定してください.
    characterEncoding=UTF-8またはWindows-31J
    characterSetResults=UTF-8またはWindows-31J
    例:"jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8"+
    "&characterSetResults=UTF-8"
    この指定をしない場合,Java側でUCS-2⇔EUC_JP_Solarisの変換が
    行なわれるため,ユーザー定義外字などの一部の文字が化けます.
    この指定をすることで,MySQL側でeucjpms⇔ucs2⇔utf8(cp932)の
    変換が行なわれ,Java側でUCS-2⇔UTF-8(Windows-31J)の変換が
    行なわれるようになります.この結果,文字化けを防げます.
    なおJISX0212(補助漢字)を使用する場合は,Windows-31Jではなく
    UTF-8を指定する必要があります.
  -上記以外の場合は,my.cnfでdefault-character-setの設定を適切に
    (cp932やutf8など.デフォルトのlatin1は不可)行なっていれば,
    文字化けは防げます.
  <componentname="xaDataSource"
    class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
    <propertyname="driverClassName">
      "com.mysql.jdbc.Driver"
    </property>
    <propertyname="URL">
      "jdbc:mysql://localhost:3306/test"
    </property>
    <propertyname="user">"xxx"</property>
    <propertyname="password">"xxx"</property>
  </component>
  -->
  <!--forSQLServer-->
  <!--
  <componentname="xaDataSource"
    class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
    <propertyname="driverClassName">
      "net.sourceforge.jtds.jdbc.Driver"
    </property>
    <propertyname="URL">
      "jdbc:jtds:sqlserver://localhost/TEST;instance=SQLEXPRESS"
    </property>
    <propertyname="user">"xxxx"</property>
    <propertyname="password">"xxxx"</property>
  </component>
  -->
  <componentname="connectionPool"
    class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
    <propertyname="timeout">600</property>
    <propertyname="maxPoolSize">10</property>
    <propertyname="allowLocalTx">true</property>
    <destroyMethodname="close"/>
  </component>
  <componentname="DataSource"
    class="org.seasar.extension.dbcp.impl.DataSourceImpl"
  />
  <!--fromJNDI-->
  <!--
  <componentname="DataSource"
    class="javax.sql.DataSource">
    @org.seasar.extension.j2ee.JndiResourceLocator@lookup("java:comp/env/jdbc/DataSource")
  </component>
  -->
</components>

分享到:
评论

相关推荐

    小日本的开源框架 Seasar2

    接着,下载并解压S2xxx.zip文件,然后在Eclipse中通过"文件→导入→既存的工程"引入seasar2目录。使用Seasar2的基本功能(如S2Container和S2AOP)时,需要在CLASSPATH下包含一系列特定的JAR文件,包括aopalliance、...

    seasar框架S2Dao使用指南

    S2Dao是Seasar2框架的一个重要组成部分,作为一个轻量级的持久化解决方案,它的主要特点是简化了Object-Relational Mapping(O/R映射)的过程,无需繁琐的XML配置。S2Dao的核心优势在于: 1. **无需XML配置**:与...

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

    首先,S2Container是Seasar框架的核心,它是一个轻量级的IoC(Inversion of Control)容器。IoC容器负责管理和装配对象,使得开发者可以专注于业务逻辑,而不是对象的创建和依赖关系。S2Container提供了声明式依赖...

    sa_framework,s2-tiger,s2-extension2.4 日文的api

    标题 "sa_framework, s2-tiger, s2-extension2.4 日文的API" 暗示了我们正在探讨的是Seasar2框架的一个特定版本,包括s2-tiger和s2-extension2.4的组件,这些组件都有日文的API文档。Seasar2是一个Java企业级应用...

    S2Tiger-2.3.23.zip

    Seasar2是一个开源的Java应用框架,其核心组件之一就是S2Tiger,你提到的"S2Tiger-2.3.23.zip"应该是Seasar2的一个版本更新,主要聚焦于依赖注入(DI)和面向切面编程(AOP)。在深入探讨这些知识点之前,我们先了解...

    seasar2中文文档

    在这个过程中,我们将学习Seasar2中的核心组件之一——`S2Container`。 ##### 登场人物 - **问候语类** (`Greeting`):接口形式,用于定义问候语的行为。 - **问候客户端类** (`GreetingClient`):接口形式,用于...

    s2-dao-1.0.49.zip

    标题中的“s2-dao-1.0.49.zip”指的是Seasar2项目中的一个特定版本,DAO(Data Access Object)模块的压缩包。Seasar2是一个Java平台上的开源框架,它旨在简化企业级应用的开发过程,尤其是数据库相关的操作。DAO层...

    s2-dao-1.0.50.zip

    S2-DAO是Seasar框架中的一个重要部分,全称为"Seasar2 Data Access Object",它提供了数据访问层的抽象,使得开发者能够更方便地进行数据库操作,而无需直接编写SQL语句。这个"seasar框架的讲解s2-dao"压缩包,显然...

    seasar2

    这份幻灯片的内容主要围绕S2Struts展开,S2Struts是Seasar2框架的一个组件,它结合了Seasar2的强大功能和Struts的灵活性。 ### S2Struts概述 S2Struts是一个基于Seasar2的Web应用开发框架,它融合了Struts的一些...

    S2Flex2-1.1.0

    《S2Flex2-1.1.0:Seasar2框架与Flex交互的深度解析》 在现代Web应用开发中,交互性和用户体验是至关重要的因素。S2Flex2-1.1.0是一个专为Flash播放器设计的软件库,它使得开发者能够利用Adobe Flex这一强大的...

    Seasar2最新版

    Seasar2框架包含多个组件,如S2Container(容器)、S2DAO(数据访问对象)、S2Action(动作)以及S2Remoting(远程调用)等。这些组件相互协作,构建出一个强大的企业级应用开发环境。 1. S2Container:作为Seasar2...

    seasar2构建工程

    8. **配置文件**:Seasar2项目中通常包含多个配置文件,如`s2-tight coupling.xml`、`s2-component.xml`等,它们定义了框架的行为、组件配置和依赖关系。 9. **部署与运行**:完成编码和配置后,可以使用Ant或Maven...

    seasar2 官方例子代码

    3. **S2JUnit**:这是Seasar2提供的单元测试框架,扩展了标准的JUnit,提供了数据库回滚、事务管理等功能,使得在测试环境中更加方便地进行数据库操作。 4. **S2Aop**:面向切面编程模块,允许开发者定义切面,从而...

    seasar2.PPT

    在实际开发中,Seasar2提供了诸如数据库访问(S2DAO)、事务管理(S2Transaction)、会话管理(S2Session)等功能,大大简化了企业级应用的开发工作。此外,Seasar2还支持MVC(Model-View-Controller)架构,通过S2...

    Seasar2的英文介绍

    然而,尽管Seasar2在当时是流行的框架之一,随着Spring框架的崛起,Seasar2的使用逐渐减少。不过,对于学习和理解组件化、容器化以及面向切面编程等概念,Seasar2仍是一个有价值的参考和学习资源。

    seasar教程,java开发框架之一

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

    seasar2 samples

    1. **S2DAO.NET**:假设s2dao.net是针对.NET平台的一个数据访问对象(DAO)框架,类似于Java中的Seasar2 S2DAO。DAO模式是设计模式之一,用于在业务逻辑和数据库之间创建一层抽象,使得代码对具体数据库的依赖性降低...

Global site tag (gtag.js) - Google Analytics