系统中的许多异常信息,很多都是需要提示给用户的,通过一个错误界面显示出来,我采用的方法即是捕获到异常后,forward到一个错误页面,一般情况下这是没有问题的。
但是如果是用js发起的ajax请求,出现异常后也forward到错误页,返回错误页的HTML数据,就没有道理了,ajax请求的异常应该返回一个请求未能完成的简单响应信息,可能是XML、json或文本而不是完整的页面。也就是说,应该forward到另一个不同的错误处理URL。问题在于,服务器端无法知道一个请求是通过地址栏或链接发起的,还是通过javascript发起的,有什么办法可以较好地解决呢?我们系统的URL规则本身无法判断是正常请求还是ajax请求,每个action(即一个功能的URL)配置中都有一个view属性,view是展示层,每个action可以更换不同展示层而展示html或ajax响应,所以无论返回数据是什么类型,action名是一样的。并且一种常见的异常是URL错误,请求了不存在的action(通常用404错误表示的),即使想通过该action配置的不同view类型判断也不可能,因为action不存在,这时应提示用户此URL不存在,如果用户是浏览器发起的请求则用HTML页面显示提示,如果是ajax发起的,则应返回简单的响应数据,但依据什么判断做不同转向呢?
但是如果是用js发起的ajax请求,出现异常后也forward到错误页,返回错误页的HTML数据,就没有道理了,ajax请求的异常应该返回一个请求未能完成的简单响应信息,可能是XML、json或文本而不是完整的页面。也就是说,应该forward到另一个不同的错误处理URL。问题在于,服务器端无法知道一个请求是通过地址栏或链接发起的,还是通过javascript发起的,有什么办法可以较好地解决呢?我们系统的URL规则本身无法判断是正常请求还是ajax请求,每个action(即一个功能的URL)配置中都有一个view属性,view是展示层,每个action可以更换不同展示层而展示html或ajax响应,所以无论返回数据是什么类型,action名是一样的。并且一种常见的异常是URL错误,请求了不存在的action(通常用404错误表示的),即使想通过该action配置的不同view类型判断也不可能,因为action不存在,这时应提示用户此URL不存在,如果用户是浏览器发起的请求则用HTML页面显示提示,如果是ajax发起的,则应返回简单的响应数据,但依据什么判断做不同转向呢?
解决方案 »
- sql语句中有int类型时,该怎么表示
- 有用XFire或者Axis2做Web Service的朋友没?
- 请问
- struts+spring时,关于singleton使用的讨论
- Java web开发(struts+spring+mybatis)中,图表一般用什么做?
- 用hibernate的时候 用哪个检索方式比较多?
- 专业英语求助(1)---Configurable Conflict Resolution
- 向各位大虾请教一下:关于java的学习!!
- UTF-8格式的网页提交Form里的中文数据到JSP,该如何在JSP中写入数据库?
- struts2.1+spring3.1.1+hibernate4.1.4取不到数据,运行creageQuery()跳出未执行了
- struts2怎么下载在内存中生成CSV文件?
- 关于大字符串(大于4k),通过存储过程写入Oracle的问题
如果是用jquery实现Ajax请求,则http 头中会有一个特殊标记,以此可以区分两种不同请求。