- 浏览: 56942 次
- 性别:
- 来自: 北京
最新评论
-
wokeke:
写得真好!!支持!
Hibernate缓存配置/批量处理 -
fuanyu:
QuoteServerThread 是哪里来的???里面都看 ...
总结java socket编程 -
tinguo002:
呃 firefox 下拉框添加删除把我难住了咯
在这里看到 ...
关于select 添加 删除 option 的兼容性问题
jsf.dicon
<?xmlversion="1.0"encoding="Shift_JIS"?>
<!DOCTYPEcomponentsPUBLIC"-//SEASAR//DTDS2Container2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<componentsnamespace="jsf">
<includepath="jsfErrorPage.dicon"/>
<componentclass="org.seasar.jsf.runtime.CompositeTaglibManager">
<initMethodname="addTaglibManager">
<arg>
<componentclass="org.seasar.jsf.runtime.FileSystemTaglibManagerImpl">
<initMethodname="init"/>
<destroyMethodname="destroy"/>
</component>
</arg>
</initMethod>
<initMethodname="addTaglibManager">
<arg>
<componentclass="org.seasar.jsf.runtime.ServletContextTaglibManagerImpl">
<initMethodname="init"/>
<destroyMethodname="destroy"/>
</component>
</arg>
</initMethod>
</component>
<componentclass="org.seasar.jsf.runtime.JsfConfigImpl">
<initMethodname="addTaglibUri">
<arg>"h"</arg>
<arg>"http://java.sun.com/jsf/html"</arg>
</initMethod>
<initMethodname="addTaglibUri">
<arg>"f"</arg>
<arg>"http://java.sun.com/jsf/core"</arg>
</initMethod>
<initMethodname="addTaglibUri">
<arg>"s"</arg>
<arg>"http://www.seasar.org/jsf"</arg>
</initMethod>
<initMethodname="addTaglibUri">
<arg>"x"</arg>
<arg>"http://myfaces.apache.org/tomahawk"</arg>
</initMethod>
<initMethodname="addTaglibUri">
<arg>"hello"</arg>
<arg>"http://examples.jsf/taglib"</arg>
</initMethod>
<initMethodname="addTaglibUri">
<arg>"r"</arg>
<arg>"http://examples.jsf.hoge/taglib"</arg>
</initMethod>
</component>
<componentclass="org.seasar.jsf.runtime.TagPoolImpl"/>
<componentclass="org.seasar.jsf.runtime.TagProcessorTreeFactoryImpl">
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.PassThroughElementSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.SelectManyCheckboxSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.SelectOneRadioSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.SelectItemSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.InsertSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.ValidatorSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.InjectSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.MetaContentTypeSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.HtmlSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.OutputTextSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.TitleSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.OutputLinkSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.CommandButtonSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.CommandLinkSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.FormSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.BaseSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.InputTextSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.InputHiddenSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.InputSecretSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.InputTextareaSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.SelectBooleanCheckboxSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.SelectOneMenuSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.InputRadioSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.SelectManyListboxSelector"/>
</arg>
</initMethod>
<initMethodname="addTagSelector">
<arg>
<componentclass="org.seasar.jsf.selector.ElementSelector"/>
</arg>
</initMethod>
</component>
<componentclass="org.seasar.jsf.runtime.ViewTemplateFactoryImpl"/>
<componentclass="org.seasar.jsf.runtime.ViewRendererImpl"/>
<component
name="webappConfigManager"
class="org.seasar.jsf.webapp.ServletContextWebappConfigManagerImpl">
<initMethodname="init"/>
</component>
</components>
jsfErrorPage.dicon
<?xmlversion="1.0"encoding="Shift_JIS"?>
<!DOCTYPEcomponentsPUBLIC"-//SEASAR//DTDS2Container2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<componentsnamespace="jsfErrorPage">
<componentclass="org.seasar.jsf.runtime.ErrorPageManagerImpl">
<initMethodname="addErrorPage">
<arg>@org.seasar.framework.exception.SQLRuntimeException@class</arg>
<arg>"/errorpage/errorPageHsqldb.html"</arg>
</initMethod>
<initMethodname="addErrorPart">
<arg>@org.seasar.framework.exception.SQLRuntimeException@class</arg>
<arg>"/insert/errorPageHsqldb.html"</arg>
</initMethod>
</component>
</components>
log4j.properties
log4j.category.org.seasar=DEBUG,C
log4j.additivity.org.seasar=false
log4j.category.examples=DEBUG,C
log4j.additivity.examples=false
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.Target=System.out
log4j.appender.C.ImmediateFlush=true
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%-5p%d[%t]%m%n
log4j.rootLogger=INFO,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d[%t]%-5p%c-%m%n
#myfaceslogger
log4j.logger.org.apache.myfaces=INFO
log4j.logger.org.apache.myfaces.config=INFO
log4j.logger.org.apache.myfaces.application=INFO
log4j.logger.org.apache.myfaces.application.jsp=INFO
log4j.logger.org.apache.myfaces.lifecycle=INFO
log4j.logger.org.apache.myfaces.taglib=INFO
log4j.logger.org.apache.myfaces.util.DebugUtils=INFO
log4j.logger.org.apache.myfaces.renderkit.html.HtmlResponseWriterImpl=WARN
log4j.logger.org.apache.myfaces.renderkit.html.HtmlRenderKitImpl=WAR
teedaCustomize.dicon
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEcomponentsPUBLIC"-//SEASAR//DTDS2Container2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
<componentclass="org.seasar.teeda.core.render.DefaultComponentIdLookupStrategy"/>
<componentclass="org.seasar.teeda.core.application.impl.DefaultComponentLookupStrategy"/>
</components>
teedaErrorPage.dicon
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEcomponentsPUBLIC"-//SEASAR//DTDS2Container2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<componentsnamespace="teedaErrorPage">
<componentclass="org.seasar.teeda.core.util.ServletErrorPageManagerImpl"/>
</components>
addadd.html
<htmlxmlns:m="http://www.seasar.org/maya"m:extends="/WEB-INF/layout/layout.html">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=Windows-31j"/>
<title>Add</title>
</head>
<body>
<spanm:inject="f:param"m:name="layoutTitle"m:value="Add"/>
<spanm:inject="s:insert"m:name="body">
<form>
<spanm:inject="h:messages"m:globalOnly="false"m:showDetail="true"/>
<inputtype="text"m:value="#{addDto.arg1}"/>+
<inputtype="text"m:value="#{addDto.arg2}"/>=
<spanm:value="#{addDto.result}"/>
<inputtype="submit"value="calculate"m:action="#{addAction.calculate}"/>
</form>
</span>
</body>
</html>
hellohello.html
<htmlxmlns:m="http://www.seasar.org/maya"m:extends="/WEB-INF/layout/layout.html">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=Windows-31j"/>
<title>Hello</title>
</head>
<body>
<spanm:inject="f:param"m:name="layoutTitle"m:value="Hello"/>
<spanm:inject="s:insert"m:name="body">
Hello<spanm:value="#{helloDto.name}">hoge</span>
<formaction="hoge"m:passthrough="true"></form>
</span>
</body>
</html>
WEB-INFlayoutcsslayout.html
<htmlxmlns:m="http://www.seasar.org/maya">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=Windows-31j"/>
<linkrel="stylesheet"type="text/css"href="css/global.css"/>
<titlem:value="#{layoutTitle}">S2JSFExample</title>
</head>
<body>
<divclass="menu">
<spanm:inject="s:insert"m:src="/WEB-INF/layout/menu.html"/>
</div>
<divclass="level0">
<divclass="level1">
<divclass="header">
<spanm:inject="s:insert"m:src="/WEB-INF/layout/header.html"/>
</div>
<divclass="body">
<spanm:inject="s:insert"m:name="body"/>
</div>
</div>
</div>
</body>
</html>
WEB-INFlayoutfooter.html
<htmlxmlns:m="http://www.seasar.org/maya">
<body>
<spanm:inject="s:insert">
TheSeasarFoundation
</span>
</body>
</html>
WEB-INFlayoutheader.html
<htmlxmlns:m="http://www.seasar.org/maya">
<body>
<spanm:inject="s:insert">
<imgm:inject="h:graphicImage"m:url="/images/seasar.gif"/>
</span>
</body>
</html>
WEB-INFlayoutlayout.html
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<htmlxmlns:m="http://www.seasar.org/maya">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=Windows-31j"/>
<linkm:inject="s:link"rel="stylesheet"type="text/css"href="/css/global.css"/>
<titlem:value="#{layoutTitle}"/>
</head>
<body>
<tableborder="0"cellspacing="5">
<tr>
<tdcolspan="2"><spanm:inject="s:insert"m:src="/WEB-INF/layout/header.html"/></td>
</tr>
<tr>
<tdwidth="140"valign="top">
<spanm:inject="s:insert"m:src="/WEB-INF/layout/menu.html"/>
</td>
<tdvalign="top"align="left">
<spanm:inject="s:insert"m:name="body"/>
</td>
</tr>
<tr>
<tdcolspan="2">
<hr/>
</td>
</tr>
<tr>
<tdcolspan="2">
<spanm:inject="s:insert"m:src="/WEB-INF/layout/footer.html"/>
</td>
</tr>
</table>
</body>
</html>
WEB-INFlayoutmenu.html
<htmlxmlns:m="http://www.seasar.org/maya">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=Windows-31j"/>
<title>S2JSFExample</title>
</head>
<body>
<spanm:inject="s:insert">
<form>
<ul>
<li>
<am:action="hello">Hello</a>
</li>
<li>
<am:action="add">Add</a>
</li>
</ul>
</form>
</span>
</body>
</html>
faces-config.xml
<?xmlversion="1.0"?>
<!DOCTYPEfaces-configPUBLIC
"-//SunMicrosystems,Inc.//DTDJavaServerFacesConfig1.0//EN"
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>
<application>
<message-bundle>appMessages</message-bundle>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>ja</supported-locale>
</locale-config>
</application>
<converter>
<converter-for-class>java.util.Date</converter-for-class>
<converter-class>org.seasar.jsf.convert.S2DateTimeConverter</converter-class>
</converter>
<navigation-rule>
<navigation-case>
<from-outcome>hello</from-outcome>
<to-view-id>/hello/hello.html</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<navigation-case>
<from-outcome>add</from-outcome>
<to-view-id>/add/add.html</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<lifecycle>
<phase-listener>org.seasar.teeda.core.event.PhaseChangeTracer</phase-listener>
</lifecycle>
</faces-config>
web.xml
<?xmlversion="1.0"?>
<!DOCTYPEweb-appPUBLIC
"-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
<description>
Statesavingmethod:"client"or"server"(=default)
SeeJSFSpecification2.5.2
</description>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.html</param-value>
</context-param>
<!--ExtensionsFilter-->
<filter>
<filter-name>extensionsFilter</filter-name>
<filter-class>org.apache.myfaces.component.html.util.ExtensionsFilter</filter-class>
<init-param>
<param-name>uploadMaxFileSize</param-name>
<param-value>100m</param-value>
<description>Setthesizelimitforuploadedfiles.
Format:10-10bytes
10k-10KB
10m-10MB
1g-1GB
</description>
</init-param>
<init-param>
<param-name>uploadThresholdSize</param-name>
<param-value>100k</param-value>
<description>Setthethresholdsize-files
belowthislimitarestoredinmemory,filesabove
thislimitarestoredondisk.
Format:10-10bytes
10k-10KB
10m-10MB
1g-1GB
</description>
</init-param>
<init-param>
<param-name>uploadRepositoryPath</param-name>
<param-value>/temp</param-value>
<description>Setthepathwheretheintermediaryfileswillbestored.
</description>
</init-param>
</filter>
<filter>
<filter-name>s2filter</filter-name>
<filter-class>org.seasar.framework.container.filter.S2ContainerFilter</filter-class>
</filter>
<filter>
<filter-name>encodingfilter</filter-name>
<filter-class>org.seasar.extension.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>Windows-31j</param-value>
</init-param>
</filter>
<filter>
<filter-name>requestDumpFilter</filter-name>
<filter-class>examples.jsf.util.RequestDumpFilter</filter-class>
</filter>
<!--ExtensionsFilter-->
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>/faces/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>s2filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingfilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>requestDumpFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.seasar.teeda.core.webapp.TeedaConfigureListener</listener-class>
</listener>
<!--facesServlet-->
<servlet>
<servlet-name>facesServlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>s2servlet</servlet-name>
<servlet-class>org.seasar.framework.container.servlet.S2ContainerServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>s2servlet</servlet-name>
<url-pattern>/s2servlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
index.html
<htmlxmlns:m="http://www.seasar.org/maya"m:extends="/WEB-INF/layout/layout.html">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=Windows-31j"/>
<title>S2JSFExample</title>
</head>
<body>
<spanm:inject="f:param"m:name="layoutTitle"m:value="Home"/>
<spanm:inject="s:insert"m:name="body">
<h1>WelcometoS2JSFExample</h1>
</span>
</body>
</html>
以上代码是从S2JSF自带的sample中抽出来的,更多用法还请下载S2JSF。
http://s2jsf.seasar.org/ja/
上例中使用的lib库均为S2JSF自带的sample中取得,列表如下:
aopalliance-1.0.jar
commons-beanutils-1.6.1.jar
commons-collections-3.1.jar
commons-el-1.0.jar
commons-fileupload-1.0.jar
commons-lang-2.1.jar
commons-logging-1.1.jar
geronimo-jsp_2.0_spec-1.0.jar
geronimo-jta_1.1_spec-1.0.jar
hsqldb-1.8.0.1.jar
javassist-3.4.ga.jar
jstl-1.1.2.jar
log4j-1.2.13.jar
nekohtml-0.9.3-nirvana.jar
ognl-2.6.7.jar
poi-2.5.1-final-20040804.jar
s2-dao-1.0.43.jar
s2-extension-2.4.13-sources.jar
s2-extension-2.4.13.jar
s2-framework-2.4.13-sources.jar
s2-framework-2.4.13.jar
s2-jsf-1.1.2-sources.jar
s2-jsf-1.1.2.jar
teeda-core-1.0.7-sources.jar
teeda-core-1.0.7.jar
teeda-extension-1.0.7.jar
tomahawk-1.1.1.jar
xercesImpl-2.6.2-sources.jar
xercesImpl-2.6.2.jar
相关推荐
使用Seasar2的基本功能(如S2Container和S2AOP)时,需要在CLASSPATH下包含一系列特定的JAR文件,包括aopalliance、commons-logging、javassist、ognl和s2-framework等。 如果要利用Seasar2的扩展功能,如S2JTA、S2...
S2Dao是Seasar2框架的一个重要组成部分,作为一个轻量级的持久化解决方案,它的主要特点是简化了Object-Relational Mapping(O/R映射)的过程,无需繁琐的XML配置。S2Dao的核心优势在于: 1. **无需XML配置**:与...
首先,S2Container是Seasar框架的核心,它是一个轻量级的IoC(Inversion of Control)容器。IoC容器负责管理和装配对象,使得开发者可以专注于业务逻辑,而不是对象的创建和依赖关系。S2Container提供了声明式依赖...
标题 "sa_framework, s2-tiger, s2-extension2.4 日文的API" 暗示了我们正在探讨的是Seasar2框架的一个特定版本,包括s2-tiger和s2-extension2.4的组件,这些组件都有日文的API文档。Seasar2是一个Java企业级应用...
Seasar2是一个开源的Java应用框架,其核心组件之一就是S2Tiger,你提到的"S2Tiger-2.3.23.zip"应该是Seasar2的一个版本更新,主要聚焦于依赖注入(DI)和面向切面编程(AOP)。在深入探讨这些知识点之前,我们先了解...
1. "s2dao":这个目录很可能包含了Seasar2 DAO框架的核心库,包括必要的Java类和接口,使得开发者可以方便地进行数据库操作。 2. "s2dao-tiger":可能是一个针对特定JVM版本或者特定数据库优化的模块,例如“Tiger”...
在这个过程中,我们将学习Seasar2中的核心组件之一——`S2Container`。 ##### 登场人物 - **问候语类** (`Greeting`):接口形式,用于定义问候语的行为。 - **问候客户端类** (`GreetingClient`):接口形式,用于...
S2-DAO是Seasar框架中的一个重要部分,全称为"Seasar2 Data Access Object",它提供了数据访问层的抽象,使得开发者能够更方便地进行数据库操作,而无需直接编写SQL语句。这个"seasar框架的讲解s2-dao"压缩包,显然...
这份幻灯片的内容主要围绕S2Struts展开,S2Struts是Seasar2框架的一个组件,它结合了Seasar2的强大功能和Struts的灵活性。 ### S2Struts概述 S2Struts是一个基于Seasar2的Web应用开发框架,它融合了Struts的一些...
《S2Flex2-1.1.0:Seasar2框架与Flex交互的深度解析》 在现代Web应用开发中,交互性和用户体验是至关重要的因素。S2Flex2-1.1.0是一个专为Flash播放器设计的软件库,它使得开发者能够利用Adobe Flex这一强大的...
Seasar2框架包含多个组件,如S2Container(容器)、S2DAO(数据访问对象)、S2Action(动作)以及S2Remoting(远程调用)等。这些组件相互协作,构建出一个强大的企业级应用开发环境。 1. S2Container:作为Seasar2...
3. **S2Bootstrap**:Seasar2启动的核心是`S2Bootstrap`类,它负责初始化框架并管理应用的生命周期。在项目中,通常需要编写一个主类,通过调用`S2Bootstrap.launch`方法来启动应用。 4. **S2Container**:Seasar2...
3. **S2JUnit**:这是Seasar2提供的单元测试框架,扩展了标准的JUnit,提供了数据库回滚、事务管理等功能,使得在测试环境中更加方便地进行数据库操作。 4. **S2Aop**:面向切面编程模块,允许开发者定义切面,从而...
然而,尽管Seasar2在当时是流行的框架之一,随着Spring框架的崛起,Seasar2的使用逐渐减少。不过,对于学习和理解组件化、容器化以及面向切面编程等概念,Seasar2仍是一个有价值的参考和学习资源。
Seasar2是一个开源的Java框架,主要功能包括依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect Oriented Programming,简称AOP)。这个框架的设计目标是提高开发效率,通过将组件(Plain Old Java ...
seasar教程,最流行的java开发框架之一,再过几年可能成为主流. struts与Spring与Hibernate的简化版本,国外很多大公司己经用了几年了,NEC,LG的软件开发都是用这个的。兄弟们快学吧
然而,你提到的是"seasar2 samples",但结合描述,似乎这里指的是.NET环境下的一个类似实现,可能是基于C#的一个库,命名为s2dao.net。这是一个用于学习数据库操作的示例项目。 1. **S2DAO.NET**:假设s2dao.net是...