zoukankan      html  css  js  c++  java
  • 笔记03 异常支持、防止页面刷新和后退、方法验证

    Struts2对异常支持(声明式异常、自动的异常处理), 异常处理(运行期异常事务自动回滚)

    1. 自定义异常类,继承RuntimeException或Exception实现构造方法.

    2. 配置异常:全局页面跳转,与全局异常处理。其他包如果想使用,需要继承。

        <global-results>

                <result name="error">/error.jsp</result>

                <result name="input">/input.jsp</result>

        </global-results>

        <global-exception-mappings>

               <!--   result表示发生异常时,跳转的页面    -->

               <exception-mapping  result="error" exception="com.bjpowernode.util.MyException">    </exception-mapping>

         </global-exception-mappings>

    3. action中加入异常处理,在<action>下面。局部异常。

        <exception-mapping  result="error" exception="com.bjpowernode.util.MyException">      </exception-mapping>

    4. 在页面中可以使用el取得异常信息

        ${exception.message }<br>

        ${exceptionStack}<br>

    5. 有异常先找局部的,没有再找全局。

    防止页面刷新和后退:token令牌

    1. 页面的表单中加入token标签(自动产生token码)。token放在session中。可以看底层代码。

    2. 配置令牌可以针对不同的方法配置

    3. 令牌产生错误时返回值为invalid.token,可通过这个值跳转到错误页面 

        

    4. 使用令牌时不要用redirect或redirectAction,并且要返回当前的页面,否则token失效。    

        页面内容。对一个按钮进行测试,此按钮只有一次起作用。其他情况下将无效。

        <s:form action="testSave">

                 <s:token></s:token>

                 <s:submit value="token"></s:submit>

        </s:form>   

        <interceptor-ref name="token">

             <param name="includeMethods">save</param>

        </interceptor-ref>                

        <result name="invalid.token">/input.jsp</result> 

    5. 不让用token时用session码。

    6. 重定向将会找不到token的值,只有特定的页面有token码。

    7. token必须用strust2的标签库。用户访问网址,当服务器将某个页面解析时会为标签增加token值,然后将解析完的页面发送给用户。

    8. token拦截器可以配置在action中,值对特定的action起作用。也可以配置成全局的,对所有action起作用。可通过includeMethods和excludeMethods,来决定对哪些方法使用token标签。

    方法验证

    1. action默认执行execute()方法,该方法会抛出异常。

    2. 特定方法的验证:如要验证save(),则验证方法应该是validateSave()。执行顺序:validateSave()----validate()---save()验证结束后,发生错误后,不会继续往下执行,不再执行save方法。

        验证执行顺序:类型转换----验证框架----验证方法,若有错误会在所有的验证执行完后停止,不会执行被验证的属性或方法。

    3. validate方法先于任何方法执行,包括execute()。是验证方法。若出现错误,将不继续往下执行,直接返回页面。执行input对应的页面。页面若有接受错误的方法,将显示验证错误的原因等。

        有业务逻辑的验证不要放到validate中。

    4. 验证中的错误可以放在ActionError和fieldError里面。存储方this.addActionError(anErrorMessage)和this.addFieldError(name,errorMessage)。可以通过调用claerFieldErrors()和

        clearActionErrors()方法,来清除fieldErrors和actionErrors中的错误信息,流程继续往下执行action中的方法。clear方法不行。

    5. 页面获取验证消息:

        <body>

                <s:fielderror></s:fielderror>    //里面可以加样式,同下。

                <s:actionerror   />    //里面可以加显示的样式,如:<s:actionerror      cssStyle="color:red"/>

        </body>

        错误信息的输出内容,可以通过properties配置文件来决定输出的内容。配置文件与要验证的action放在同一个目录下,名字为要验证的action.properties。如:TestAction.properties.文件内容:

         

         表示若agebirthdaygraduation如果发生field级别的错误,会往fieldError中添加的错误信息。

         红色的表示固定。

         

  • 相关阅读:
    滴滴打车如何成就150亿估值
    互联网专车高补贴开始“退烧”
    城市拥堵加剧,都是互联网快车惹的祸?
    滴滴打车动态加价10-20余元
    专车降价滴滴快车使命终结?
    “专车”监管意见最快本月公布
    专车新规或下周发布,估计有大量司机流失
    滴滴优步神州掀新一轮融资大战
    杭州或率先放开非公司化专车
    恭喜您!获得20元现金红包一个,赶快领取!
  • 原文地址:https://www.cnblogs.com/doudouxiaoye/p/5693413.html
Copyright © 2011-2022 走看看