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.文件内容:

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

红色的表示固定。

struts2 笔记03 异常支持、防止页面刷新和后退、方法验证的更多相关文章

  1. html-javascript前端页面刷新重载的方法汇总

    记得我在兴安得力实习要转正的时候,我领导象征性的给我出了一套测试题目,里面就有js闭包和页面刷新等题目.今天把很久之前的测试题目之一,js页面刷新的方法以及页面自动刷新跳转和返回上一页和下一页等方法总 ...

  2. ASP.NET页面刷新的实现方法总结

    先看看ASP.NET页面刷新的实现方法: 第一: private void Button1_Click( object sender, System.EventArgs e ) { Response. ...

  3. asp.net 防止页面刷新或后退引起重复提交

     项目中经常遇到刷新后重复的向数据库增加一条相同的记录,造成数据重复,如何规避这些问题呢?下面我们就一起讨论一下在asp.net怎样防止页面刷新或后退引起重复提交数据的问题: 其实asp.net防止刷 ...

  4. 关于页面刷新或者调用方法事获取不到元素信息或者出现缺少对象错误的换位思考setTimeout的使用

    这两天客户的需求不能定下来,做闲人好长时间了,不如来整理下最近碰到的一些个小麻烦. 正题: 场景一. 最近在开发的过程中使用到了百度的富客户端文本编辑器(ueditor)---这是一款功能很强大的文本 ...

  5. WebForm中如何防止页面刷新,后退导致的重复提交

    当用户按下浏览器中的 F5 键刷新当前页面时,对这一过程进行检测所需的操作步骤.页面刷新是浏览器对特定用户操作(按 F5 键或单击"刷新"工具栏按钮)的响应.页面刷新操作是浏览器内 ...

  6. Struts2笔记03——架构(转)

    原始内容:https://www.tutorialspoint.com/struts_2/basic_mvc_architecture.htm 架构(很重要!尤其是图!) 从一个比较高的层次来看,St ...

  7. javascript页面刷新的一些方法

    在使用js刷新页面的时候,有时会遇到表单的重复提交问题 这时就需要一些强制刷新的办法,从网上大概搜了一下,js的刷新方法大致有以下几种, 刷新页面,不提示重新发送: window.location.r ...

  8. 解决vue页面刷新或者后退参数丢失的问题

    原文链接: 点我 在商城类的项目中,会经常遇到列表数据筛选查询的情景,当要打开某一项的详情页或者暂时离开列表页,再返回(后退时),选择的筛选条件会全部丢失,辛辛苦苦选择好的条件全没了,还得重新选择,如 ...

  9. jquery页面刷新reload

    今天知道了jquery页面刷新的一个方法,很简单的一句: window.location.reload()刷新当前页面,不得不说我jquery学的很糟糕,明明都学过,但是等用到的时候就想不起来了.不过 ...

随机推荐

  1. WPF数据库连接错误:The user is not associated with a trusted SQL Server connection.

    我当初安装sql server的时候选的Window Authentication mode,没选SQL Server Windows Authentication. 后来做WPF时连接数据库时需要一 ...

  2. 如何查看Servlet、JSP的版本(Tomcat V7.0.70)

    1. 简要说明:Tomcat6.0 所支持的是Servlet2.5,Tomcat 7.0 所支持的Servlet3.0,Servlet2.5 和Servlet3.0的差异较大,对于Servlet3.0 ...

  3. Maven集成Sonar

    Sonar对maven提供了简单可配的支持,要做的事情很简单--在maven/conf下settings.xml <profiles></profiles>标签之间添加如下内容 ...

  4. 微信公众平台开发(98) UnionID

    关键字 微信公众平台 微信开放平台 UnionID作者:方倍工作室原文:http://www.cnblogs.com/txw1958/p/weixin98-get-user-UnionID.html ...

  5. OProfile 性能分析工具

    OProfile 性能分析工具 官方网站:http://oprofile.sourceforge.net/news/ oprofile.ko模块本文主要介绍Oprofile工具,适用系统的CPU性能分 ...

  6. Java遇见HTML——JSP篇之JSP内置对象(下)

    一.什么是session 1.session表示客户端与服务器的一次会话2.Web中的session指:用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间 ...

  7. 有用C函数集锦

    1. offsetof #include <stddef.h> size_t offsetof(type, member); The macro offsetof() returns th ...

  8. Java基础之写文件——将多个字符串写入到文件中(WriteProverbs)

    控制台程序,将一系列有用的格言写入到文件中. 本例使用通道把不同长度的字符串写入到文件中,为了方便从文件中恢复字符串,将每个字符串的长度写入到文件中紧靠字符串本身前面的位置,这可以告知在读取字符串之前 ...

  9. SQLSERVER:Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.

    背景: 在最近开发中遇到一个问题,对一个数据库进行操作时,我采用64个并行的任务每个任务保证一个数据库连接对象:但是每个任务内部均包含有24个文件需要读取,在读取文件之后,我们需要快速将这24个文件批 ...

  10. leetcode-99 Recover_Binary_Search_Tree

    题目要求: Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without ch ...