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

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

红色的表示固定。

时间: 2024-10-07 06:13:27

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

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

记得我在兴安得力实习要转正的时候,我领导象征性的给我出了一套测试题目,里面就有js闭包和页面刷新等题目.今天把很久之前的测试题目之一,js页面刷新的方法以及页面自动刷新跳转和返回上一页和下一页等方法总结一下,仅供大家参考! 一.javascript页面刷新重载的方法: <a href="javascript:location.reload();">点击重新载入页面</a> <a href="javascript:history.go(0);&qu

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

先看看ASP.NET页面刷新的实现方法: 第一: C#代码   private void Button1_Click( object sender, System.EventArgs e ) { Response.Redirect( Request.Url.ToString( ) ); } 第二: C#代码   private void Button2_Click( object sender, System.EventArgs e ) { Response.Write( " < scri

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

 项目中经常遇到刷新后重复的向数据库增加一条相同的记录,造成数据重复,如何规避这些问题呢?下面我们就一起讨论一下在asp.net怎样防止页面刷新或后退引起重复提交数据的问题: 其实asp.net防止刷新是asp.net开发中经常遇到的问题.通常有多种方法来实现:(下面只是个人总结的一些方法)不全,也很希望朋友们能多多补充.谢谢. 1:请求转发(即在数据提交操作后立即转跳到其他页面,防止页面刷新引起回发操作) 2:不保存缓存 Response.Cache.SetNoStore(); (即提交后表单

页面刷新的一些方法

页面刷新方法注意点: location.reload();页面刷新,浏览器会重新向服务器端发请求,并下载资源,不会使用浏览器缓存 history.go(0)页面刷新,浏览器会重新向服务器端发请求,并下载资源,不会用浏览器缓存 而location.href=location.href页面刷新并且浏览器会使用缓存数据 但有一点很值得注意的地方是location.href=location.href会让html页面刷新,而其他资源即使改变了也不会及时更新,但是当资源改变并用reload更新时.浏览器可

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

这两天客户的需求不能定下来,做闲人好长时间了,不如来整理下最近碰到的一些个小麻烦. 正题: 场景一. 最近在开发的过程中使用到了百度的富客户端文本编辑器(ueditor)---这是一款功能很强大的文本编辑器, 现在需求:当在这个页面打开以后需要把用户上次编辑的信息写回到此文本编辑器中去,这里使用的方法是ueditor给定的方法.同时使用iframe对此编辑器进行了页面嵌套的显示. 1 //将html代码展示到编辑器中. 2 function insertHtml(value) { 3 setCo

js 获取当前页面路径 &amp; 页面刷新几种方法

设置或获取对象指定的“文件名”或路径. <script> alert(window.location.pathname) </script> 设置或获取整个 URL 为字符串. <script> alert(window.location.href); </script> 设置或获取与 URL 关联的端口号码. <script> alert(window.location.port) </script> 设置或获取 URL 的协议部分

AngularJS进阶(二十八)解决AngualrJS页面刷新导致异常显示问题

解决AngualrJS页面刷新导致异常显示问题 绪 俗话说,细节决定成败,编程亦是如此.编程过程中我们可能会不自觉的忽视一些细节问题,殊不知,这些细节正是导致页面显示出现问题的地方.今略举一例,与君共勉之. 页面正常加载后,显示如下: 按F5刷新之后,页面如下所示: 很明显,页面显示出现了异常.回过头再看看Chrome的错误提示, 具体代码如下: 正是以上代码导致了错误的发生. 追根溯源 让我们回顾一下,错误到底是如何发生的.正常加载情况下,页面正常显示很容易理解,程序是按照既定的数据流走的.但

03 页面刷新和表格刷新

表格赋予id var table = layui.table; table.render({ elem: '#test' ,url:'http://localhost:7300/mock/5e06d6ef83b40c266813ee7f/example/user/list' ,toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板 ,defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标.如无

Ajax局部页面刷新

ajax自动刷新局部页面 通过 AJAX,JavaScript 可使用 JavaScript 的 XMLHttpRequest 对象来直接与服务器进行通信.通过这个对象, JavaScript 可在不重载页面的情况与 Web 服务器交换数据. AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面. 实验中利用JSP+ajax来实现自动刷新页面,并读/写数据库中的数据. 下面介绍一下利用JSP+ajax来实现局部页面刷新的