20090324工作日志

本文介绍了如何在Hibernate中配置SQL Server 2005及其兼容性问题,并讲解了几个重要的Hibernate属性设置方法,如控制台输出SQL语句、数据库映射更新方式等。此外还覆盖了Struts2中Session的使用及框架提供的多种拦截器的功能。
摘要由CSDN通过智能技术生成

1.SqlServer2005用的Jar包,可以向下兼容(通俗来说就是:现在用sqlserver2005做的项目完全移植在sqlserver2000上时,什

么都不用改就能用)。
hibernate.cfg.xml中主要代码如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
    <property name="hibernate.connection.url">jdbc:sqlserver://127.0.0.1:1433;databaseName=s2sh</property>
    <property name="hibernate.connection.username">sa</property>
    <property name="hibernate.connection.password"></property>
    <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.hbm2ddl.auto">update</property>
    <mapping resource="com/s2sh/javamao/entity/User.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

 2.总结一下用过的几个hibernate属性的用法:
hibernate.show_sql------值有true or false。
说明:hibernate.show_sql?控制台输出sql语句:控制台不输出sql语句;
hibernate.hbm2ddl.auto------用过的值有create or update。
说明:前提是数据库里已有该数据库,hibernate.hbm2ddl.auto值为create时,无论该数据库是否有内容,重新生成;
值为update时,就是更新该数据库中的内容了。

3.struts2中使用session的方法:
在继承了ActionSupport的类里,通过“ServletActionContext.getRequest().getSession().setAttribute("username", "peixian");
将内容放进去。在页面里用“${sessionScope.username }”就可以得到了。

4.struts2框架中给我们提供了很多实用的Interceptor,它的定义上面已经给出,它的具体功能如下:

          timer:记录Action执行的时间,并做为日志信息输出;

          logger:在日志信息中输出要执行的Action信息;

          chain:将前一个执行结束的Action属性设置到当前的Action中。它被用在ResultType为“chain”指定结果的Action中,该结

果Action对象会从OgnlValueStack中获得前一个Action对应的属性,它实现Action链之间的数据传递;

          static-params:将xwork.xml配置文件里定义的Action参数,设置到对应的Action中。Action参数使用<param />标签,是

<action />标签的直接子元素。我们这里定义的Action类必需实现com.opensymphony.xwork.config.entities. Parameterizable接

口;

          params:将Request请求的参数设置到相应Action对象的属性中,用户注册例子用到过这个拦截器;

          model-driven:如果Action实现ModelDriven接口,它将getModel()取得的模型对象存入OgnlValueStack中;

          component:激活组件功能支持,让注册过的组件在当前Action中可用,即为Action提供IoC(依赖倒转控制)框架的支

持;

          token:核对当前Action请求(request)的有效标识,防止重复提交Action请求(request)。

          token-session:功能同上,但是当提交无效的Action请求标识时,它会将请求数据保存到session中。

          validation:实现使用xml配置文件({Action}-validation.xml)对Action属性值进行验证,详细请看后面介绍的验证框架。

          workflow:调用Action类的验证功能,假设Action使用ValidationAware实现验证(ActionSupport提供此功能),如果验证

没有通过,workflow会将请求返回到input视图(Action的<result />中定义的)。

          servlet-config:提供Action直接对HttpServletRequest或HttpServletResponse等JavaServlet api的访问,Action要实现相应

的接口,例如:ServletRequestAware或ServletResponseAware等。如果必需要提供对JavaServlet api的访问,我们建议使用

ServletActionContext,在前面ActionContext章节中有介绍。

          prepare:在Action执行之前调用Action的prepare()方法,这个方法是用来准备Action执行之前要做的工作。它要求我们的

Action必需实现com.opensymphony.xwork. Preparable接口

conversionError:用来处理框架进行类型转化(Type Conversion)时的出错信息。它将存储在ActionContext中的类型转化

(Type Conversion)错误信息转化成相应的Action字段的错误信息,保存在堆栈中。根据需要,可以将这些错误信息在视图中

显示出来。

5.如何自定义一个拦截器?
自定义一个拦截器需要三步:
1 自定义一个实现Interceptor接口(或者继承自AbstractInterceptor)的类。
2 在struts.xml中注册上一步中定义的拦截器。
3 在需要使用的Action中引用上述定义的拦截器,为了方便也可将拦截器定义为默认的拦截器,这样在不加特殊声明的情况下所

有的Action都被这个拦截器拦截。
Interceptor接口声明了三个方法:

public interface Interceptor extends Serializable {
    void destroy();
    void init();
    String intercept(ActionInvocation invocation) throws Exception;
}

 

Init方法在拦截器类被创建之后,在对Action镜像拦截之前调用,相当于一个post-constructor方法,使用这个方法可以给拦截器

类做必要的初始化操作。
Destroy方法在拦截器被垃圾回收之前调用,用来回收init方法初始化的资源。
Intercept是拦截器的主要拦截方法,如果需要调用后续的Action或者拦截器,只需要在该方法中调用invocation.invoke()方法即

可,在该方法调用的前后可以插入Action调用前后拦截器需要做的方法。如果不需要调用后续的方法,则返回一个String类型的

对象即可,例如Action.SUCCESS。

另外AbstractInterceptor提供了一个简单的Interceptor的实现,这个实现为:

public abstract class AbstractInterceptor implements Interceptor {
     public void init() {
    }
    public void destroy() {
    }
    public abstract String intercept(ActionInvocation invocation) throws Exception;
}

 在不需要编写init和destroy方法的时候,只需要从AbstractInterceptor继承而来,实现intercept方法即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值