下面的项目可能要用到TERASOLUNA。
为了逼自己每天都能学习点东西,特此写这个博客记录学习结果。
虽然可能性很大,但还是希望不要半途而废。
PS:Spring没学过。
[b]【Transaction管理功能】[/b]
下例为对于以execute开头的方法,进行Transaction管理。
上面的例子是发生例外时,进行rollback。
但有时不想抛出例外,仅仅想rollback的话可以这样写。
[b]【数据库操作】[/b]
SQL的定义等配置和iBATIS一样。
Terasoluna的QueryDAOiBatisImpl提供了以下的方法。
executeForObject (String sqlID, Object bindParams, Class clazz)
executeForObjectArray(String sqlID, Object bindParams, Class clazz)
executeForObjectArray(String sqlID, Object bindParams, Class clazz, int
beginIndex, int maxCount)
executeForObjectList(String sqlID, Object bindParams)
executeForObjectList(String sqlID, Object bindParams, int beginIndex, int
maxCount)
[b]【Util类】[/b]
Terasoluna提供以下Util类
ClassUtil:通过指定的Class名和参数生成object。
DateUtil:日期,时间和日历相关的共同方法。 例如:日本的暦元号相关的方法。
PropertyUtil:操作Property文件的类。
StringUtil:操作String的类。
例如:
1)取文件名的扩展名 (为什么这个不是FileUtil的内容。。。)
2)byte数组 转换成16进制的String
3)日文全半角转换
4)html的escape < & > ¥" → < & > "
5)指定encode,取得String的byte长度
[b]【Message管理和国际化】[/b]
略
[b]【登录状态检查】[/b]
貌似终于来了一个实用点的功能。
web.xml的配置
Bean的定义。
AuthenticationController的例子
为了逼自己每天都能学习点东西,特此写这个博客记录学习结果。
虽然可能性很大,但还是希望不要半途而废。
PS:Spring没学过。
[b]【Transaction管理功能】[/b]
下例为对于以execute开头的方法,进行Transaction管理。
<!-- DataSourceの設定。 -->
<bean id="dataSource" class="……">……</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 単一のJDBCデータソース向けのトランザクションマネージャ。 -->
<tx:advice id="transactionInterceptor" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="execute*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
</tx:attributes>
</tx:advice>
<!-- AOPの設定 -->
<aop:config>
<aop:pointcut id="blogicBeans" expression="bean(*BLogic)"/>
<aop:pointcut id="serviceBeans" expression="bean(*Service)"/>
<aop:advisor
pointcut-ref="blogicBeans"
advice-ref="transactionInterceptor"/>
<aop:advisor
pointcut-ref="serviceBeans"
advice-ref="transactionInterceptor"/>
</aop:config>
上面的例子是发生例外时,进行rollback。
但有时不想抛出例外,仅仅想rollback的话可以这样写。
if(有业务错误){
//仅仅想rollback
TransactionUtil.setRollbackOnly();
}
[b]【数据库操作】[/b]
SQL的定义等配置和iBATIS一样。
Terasoluna的QueryDAOiBatisImpl提供了以下的方法。
executeForObject (String sqlID, Object bindParams, Class clazz)
executeForObjectArray(String sqlID, Object bindParams, Class clazz)
executeForObjectArray(String sqlID, Object bindParams, Class clazz, int
beginIndex, int maxCount)
executeForObjectList(String sqlID, Object bindParams)
executeForObjectList(String sqlID, Object bindParams, int beginIndex, int
maxCount)
[b]【Util类】[/b]
Terasoluna提供以下Util类
ClassUtil:通过指定的Class名和参数生成object。
DateUtil:日期,时间和日历相关的共同方法。 例如:日本的暦元号相关的方法。
PropertyUtil:操作Property文件的类。
StringUtil:操作String的类。
例如:
1)取文件名的扩展名 (为什么这个不是FileUtil的内容。。。)
2)byte数组 转换成16进制的String
3)日文全半角转换
4)html的escape < & > ¥" → < & > "
5)指定encode,取得String的byte长度
[b]【Message管理和国际化】[/b]
略
[b]【登录状态检查】[/b]
貌似终于来了一个实用点的功能。
web.xml的配置
<web-app>
<filter>
……
<filter-name>authenticationControlFilter</filter-name>
<filter-class>
jp.terasoluna.fw.web.thin.AuthenticationControlFilter
</filter-class>
<init-param>
<param-name>controller</param-name>
<param-value>
sampleAuthenticationController
</param-value>
</init-param>
</filter>
……
<filter-mapping>
<filter-name>authenticationControlFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
……
<error-page>
<exception-type>
jp.terasoluna.fw.web.thin.UnauthenticatedException
</exception-type>
<location>/authenticatedError.jsp</location>
</error-page>
……
Bean的定义。
……
<bean id="sampleAuthenticationController"
class="jp.sample.SampleAuthenticationController"/>
……
AuthenticationController的例子
package jp.terasoluna.sample;