Struts2day05学习笔记

1.自定义拦截器
   1.implements Interceptor
   2.extends AbstractInterceptor
  二) 在struts.xml中
    <interceptors>
      <interceptor name="xx" class="xx"/>
      ..
      <interceptor-stack name="xxx">
        <interceptor-ref name="xx">
      <param name="属性">值</param>
    </interceptor-ref>
      </interceptor-stack>
    </interceptors>
  在Action中覆盖拦截器中属性值
    <interceptor-ref name="拦截器栈">
      <param name="拦截器.属性">值</param>
    </interceptor-ref>

    对于方法过滤的拦截器
      extends MethodFilterInterceptor
    关键是在struts.xml中的配置
      <interceptor-ref name='x'>
      <!--不需要拦截的方法-->
        <param name="excludeMethods">方法名</param>
    <!--需要拦截-->
    <param name="includeMehtods"></param>
      </interceptor-ref>

2.表单的重复提交 token
  在页面表单中使用<s:token></s:token>

3.文件的上传
  页面 <form enctype="multipart/form-data" method="post">
          File <input type="file" name="pic"/>
        </form>
  Action
     属性 private File pic;
          private String picFileName;文件名称
      private String picContentType;文件类型
     如何由逻辑路径获得绝对路径
       1.implements ServletRequestAware/ServletContextAware
       2.ServletActionContext 工具类,获得Servlet API

4.在src中提供struts.properties配置文件
  修改文件上传异常的错误信息
    1.在src中创建 资源文件
       上传文件太大
       struts.messages.error.file.too.large
       上传的类型不允许
       struts.messages.error.content.type.not.allowed
    2.要再struts.xml中配置资源文件


5.Struts2.0的异常处理机制
  1.什么是异常?软件在开发和运行过程中可能遇到的错误。【对象】
  2.异常的种类?
   Check异常【检测时异常】在编译过程中必须进行处理(编译器不通过)
      IOException / ClassNOTFoundException
   Runtime异常[运行时异常] 运行时出现的异常,在程序开发过程中不需要额外的处理
      NUllPOINException/ArrayOutofIndexException
   自定义异常
     如何定义异常
       1.写一类继承Exception/RuntimeException
        A  public class MyException extends Exception{   }
       继承了Exception,检测异常,必须进行处理 try...catch/throw
        B  public class MyExceptionA extends RuntimeException{}
       继承了RuntimeException,运行时异常,不做处理
     如何定义异常的方式?
        现在java开发思路,主要的异常处理采用RuntimeException
      jdbc和hibernate

    3.如何处理异常
      try..catch:如果try块中出现异常,交给catch块处理,如果发生的异常在本类中能够             处理则使用try..catch
      throw :     如果异常本类不能处理,将异常抛给调用者

   4.在J2EE体系中如何处理异常
     MVC模型:DB-->DAO-->BIZ-->Action
    DB数据库:数据库异常和java的关系不大,主要讨论Dao/Biz/Action的异常处理
        DAO操作数据库的异常:Dao层异常不能处理,抛给Biz层
    Biz Dao的异常,业务异常:向上抛Action
    Action Dao的异常,业务异常:Action的异常不能向上抛,只能处理,使用try..catch
                                Struts2.0只能使用一个页面处理异常,告诉用户异常的原因。
 
   在实际开发过程中对于
       Dao层的异常,不需要具体交代,整个封装告知数据库异常即可
       业务异常,需要具体交代【余额不足,账户不存在】

   Struts2.0对于异常处理的机制
     问题:如果在Action中使用大量的try...catch语句会造成代码的结构,以及可维护性的降低
     在Action中不处理异常,主要在配置文件struts.xml中进行处理

你可能感兴趣的:(struts2)