当前位置:编程学习 > 网站相关 >>

基类

在SSH的基础上,再加一套基类,主要用于对象的增、删、改、ID主键查询等。

        1. 关键成员变量

        entity、entityClass、entityClassName

        2. 泛型、反射

        利用泛型和反射技术,生成、保存、和查询实体对象。

        3. Preparable、ModelDriven

Preparable预处理接口
        publicvoid prepareInput() {

             this.prepareModel();

         }

  

         publicvoid prepareShow() {

             this.prepareModel();

         }

  

         protectedvoid prepareModel() {

              if(getSID() != null) {

                   entity = getBaseService().get(getSID());

                   if(entity == null) {

                      thrownew IllegalArgumentException("id not exist");

                   }

              }

         }

  

         publicvoid prepare() throws Exception {

              if(null == entity) {

                  entity = entityClass.newInstance();

             }

         }

 ModelDriven模型驱动
        在struts2中,提供了一种直接使用领域对象的方式,就是让action实现ModelDriven接口,ModelDriven让你可以直接操作应用程序中的领域对象,允许你在web层和业务层使用相同的对象。

         public T getModel() {

              returnentity;

          }

执行顺序:Preparable --> ModelDriven --> Action方法
        4. 条件查询

        对于仓储操作的查询细节不应该暴漏给Service层,更不应该暴漏给Action层,所以条件查询要放在自己Dao的实现类中。

        一般列表页面只表示用户特别关注和常用的字段,对于列表查询,不需要把对象所有字段都取出来,这样一是取数据会慢一点、传输数据也会慢、占用不必要的内存,所以采用hibernate中“new map”方式来取得所需字段。

        5. 分页

        分页所需的变量和行为,封装到基类中。

        6. Message

        利用Struts2,集中管理Message。

        7. 异常处理

        让SSH框架来进行异常处理(AOP技术),方法中只保留业务逻辑代码,但在出现异常后,控制台和日志中要输出最接近、详细的异常信息。

        (1)在struts2中的defaultStack易做图中配置参数

             <interceptor-ref name="defaultStack" >

                 <param name="exception.logEnabled">true</param> 

                 <param name="exception.logLevel">error</param>

             </interceptor-ref>

        (2)配合log4j中设置

        log4j.logger.com.opensymphony.xwork2 = WARN

        log4j.logger.com.opensymphony.xwork2 = ERROR

        (3)配置struts2全局异常  www.zzzyk.com

             <global-exception-mappings>

                    <exception-mapping result="error" exception="java.lang.Exception" ></exception-mapping>

             </global-exception-mappings>

 

             <global-results>

                   <result name="invalidLogin">index.jsp</result>

                   <result name="error">/common/globalerror.vm</result>

            </global-results>

        (4)全局异常页面(VM中实现)

            #* @vtlvariable name="exception" type="java.lang.Exception" *# 

            #* @vtlvariable name="result" type="com.jd.common.web.result.Result" *# 

            #if($exception) 

                  #if($!exception.class.易做图Name=="NoSuchMethodException") 

                         $!response.setStatus(404) 

                         404! 您请求的内容不存在 

                  #else

                       出错了:$exception

                       ##${exception.printStackTrace()}

                  #end 

            #elseif($result) 

                  #if($result.resultCode) 

补充:综合编程 , 其他综合 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,