Web层框架对网站中所有异常的统一处理

一个网站的异常信息作为专业的人士,是不会轻易暴露给用户的,因为那样狠不安全,显得你漏是一回事,只要还是考虑到网站的数据安全问题,下面给大家分享一下一些常见的web层框架是如何处理统一的异常。 

  之前都是在Struts2的配置文件中配置拦截器来统一处理系统中所有的异常,给大家带点伪代码吧,好歹曾经用过,呵呵。

配置文件配置信息如下:

 1   <package name="base" extends="struts-default"> 2         <!-- 异常处理 --> 3         <interceptors> 4             <!-- 1.声明自定义异常拦截器 --> 5             <interceptor name="exceptionInterceptor" class="com.it.yycg.framework.exception.ExceptionInterceptor"></interceptor> 6             <!-- 2.声明拦截器栈  --> 7             <interceptor-stack name="customStack"> 8                 <interceptor-ref name="exceptionInterceptor"/> 9                 <interceptor-ref name="defaultStack"/>10             </interceptor-stack>11         </interceptors>12         <!-- 设置默认执行的拦截器 -->13         <default-interceptor-ref name="customStack"/>14         <!-- 公用的 result -->15         <global-results>16             <result name="error_jsp" >/common/error.jsp</result>17             <!-- 拒绝访问返回页面 -->18             <result name="refuse" >/common/refuse.jsp</result>19         </global-results>20         21         <!-- 配置访问Action返回jsp页面的标签 
22             Struts默认执行类ActionSupport中的execute()方法23             class默认ActionSupport24             成功后的返回name默认为success25         -->26         <action name="ui_*_*">27             <result>/business/{1}/{2}.jsp</result>28         </action>        
29     </package>

Java类伪代码如下:

          ExceptionInterceptor          serialVersionUID = -3570177760250354837L       String intercept(ActionInvocation actionInvocation)          HttpServletRequest request =         String result =                                    result =         }                                         ExceptionResultInfo exceptionResultInfo =                            (e                  exceptionResultInfo =             }   (e  UnknownAccountException || e                  ResultInfo resultInfo = ResultUtil.createFail("用户名或密码错误!"                 exceptionResultInfo =              }   (e                  ResultInfo resultInfo = ResultUtil.createFail("没有权限!"                 exceptionResultInfo =

首先说说springmvc处理统一异常的方式,目前就我了解的有三种:直接使用springmvc提供的异常处理器、自己手动配置自定义全局异常处理器和使用注解(该种方式没用过)。  

  先说一下第一种吧,它是直接在springmvc的核心配置文件中配置springmvc自身提供的简单异常处理器。

 1   <!-- springmvc提供的简单异常处理器 --> 2     <!-- <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> 3          定义默认的异常处理页面 4         <property name="defaultErrorView" value="/WEB-INF/jsp/exception.jsp"/>                                    
 5         定义异常处理页面用来获取异常信息的变量名,也可不定义,默认名为exception 
 6         <property name="exceptionAttribute" value="ex"/> 7         定义需要特殊处理的异常,这是重要点 
 8         <property name="exceptionMappings"> 9             <props>10                 <prop key="com.tgsit.cjd.model.CustomException">exception</prop>11             </props>12             还可以定义其他的自定义异常13         </property>14     </bean> -->

  第二种就是自己定义一个异常处理器,然后通过在springmvc的核心配置文件中配置即可。

自定义异常处理器类伪代码如下:

 1 /** 2  * 自定义全局异常处理器: 3  */ 4 public class CustomExceptionResolver implements HandlerExceptionResolver { 5     @Override 6     public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, 7             Exception ex) { 8          9         ex.printStackTrace();10         CustomException customException = null;11         //如果抛出的是自定义的异常则直接转换12         if(ex instanceof CustomException) {13             customException = (CustomException) ex;14         } else {15             //如果抛出的不是自定义的异常则重新构造一个未知错误异常16             new SysException("系统正在维护中,请稍后重试...");17         }18         //向前台返回错误信息19         ModelAndView modelAndView = new ModelAndView("exception");20         modelAndView.addObject("message", customException.getMessage());21         return modelAndView;22     }23 }

springmvc配置文件配置信息如下(各位在迫不得已的情况复制的时候记得修改一下包名):

1 <!-- 配置自定义的全局异常处理器      只要实现HandlerExceptionResolver接口就是全局异常处理器-->2 <bean class="com.tgsit.cjd.utils.CustomExceptionResolver"/>
时间: 2024-11-03 21:52:43

Web层框架对网站中所有异常的统一处理的相关文章

从零开始编写自己的C#框架(17)——Web层后端首页

后端首页是管理员登陆后进入的第一个页面,主要是显示当前登陆用户信息.在线人数.菜单树列表.相关功能按键和系统介绍.让管理员能更方便的找到息想要的内容. 根据不同系统的需要,首页会显示不同的内容,比如显示公司公告.公司新闻.内部短消息.个人事务.各种业务提醒......等各种内容,这些大家可以需要去进行呈现. 先上代码 Main.aspx 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=&qu

Web应用框架在WEB工程中的作用

Web应用框架(Web application framework)是一种开发框架,用来支持动态网站.网络应用程序及网络服务的开发.它的出现是为了减轻网页开发时共通性活动的工作负荷并且可提升代码的可再用性.它是经过长期实践被大家认可的,正确,高效的代码. 常用的Web应用框架有MVC,CMS等.而这次我们团队所使用的Web应用框架就是MVC模式,这种模式的优点有很多例如耦合性低.重用性高.部署快.维护容易等详情参考百度百科http://baike.baidu.com/view/5432454.h

从零开始编写自己的C#框架(18)——Web层后端权限模块——菜单管理

从本章开始,主要讲解的是页面中对框架相关功能的调用方法,比如列表页面(又分为有层次感列表和普通列表).编辑页面.多标签页面等,只要熟悉了这些函数的使用方法,那么开发起来就会很便捷了. 1.如图先创建菜单列表与编辑页面 MenuInfoList.aspx 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MenuInfoList.aspx.cs" Inherits=&quo

从零开始编写自己的C#框架(15)——Web层后端登陆功能

对于一个后端管理系统,最重要内容之一的就是登陆页了,无论是安全验证.用户在线记录.相关日志记录.单用户或多用户使用帐号控制等,都是在这个页面进行处理的. 1.在解决方案中创建一个Web项目,并将它设置为启动项 2.添加引用 3.添加WebManage文件夹与Login.aspx文件 4.添加登陆页面HTML代码 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx

从零开始编写自己的C#框架(19)——Web层后端权限模块

不知不觉本系统写了快三个月了,最近写页面的具体功能时感觉到有点吃力,很多地方如果张嘴来讲的话可以说得很细,很全面,可写成文字的话,就不太会写了,有些地方想讲得清晰的话,得用多几倍的文字+实例+变化中的图片才能表达得清楚,而写这些又太费时间了,近段时间又特忙,所以只能是尽力而为,希望大家自行研究,如果有什么地方不明白的,发发评论或邮件给我,我再重新详细讲解. 说回正题,对于页面访问权限以及每个按键的权限控制,很久以前用过好几种不同的方法,比如为每个控件分配名称或编码,然后在写代码时绑定这些值,又比

在WEB工程的web层中的编程技巧

本篇以看传智播客方立勋老师的<JDBC入门>之<实现客户关系管理案例>视频有感,从中提取方老师在设计管理系统的简单案例中对自己比较有用的部分,以便日后在开发过程中希望能有所帮助. 在这个视频中,该客户关系管理系统的界面由简单的“添加客户”和“查看客户”两个超链接构成.其中“查看客户”的功能涉及使用数据库来进行网页显示的分页效果,该功能的实现请看相关博客. 在“添加客户”的功能中,方老师很灵巧的将一个Servlet的doGet方法和doPost方法一起使用,这样减少了类的定义,优化了

基于Maven在Spring中集成CXF Web Service框架

引言: 在跨系统和跨平台的系统通信中,WebService是一个事实上的标准,其以平台无关性,获得了广泛的应用.本文将讲述如何基于Spring来集成CXF,并开发出第一个Hello World的应用. 1.  Web Service是什么? Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序. Web Service技术, 能使

在ABP的Web层中实现复杂请求跨域访问

在最近的项目中,后端使用ABP,前端采用React,前后端完全分离.其中大部分接口都通过WebApi层调用,项目中未使用Session.但最后在做一个留言的验证码时,使用了Session验证的方式,所以将验证码请求与校验功能放在了Web层.由于测试阶段前后端不同域,涉及到跨域请求的问题.跨域问题可以通过代理等手段解决,但是也可以在后端做些简单的修改来进行实现.WebApi的跨域处理比较简单,有官方给出的解决方案.但是Web层一般不涉及跨域,所以自己进行了探索实现. 一.常见方案 在web.con

Spring官方文档翻译——15.1 介绍Spring Web MVC框架

Part V. The Web 文档的这一部分介绍了Spring框架对展现层的支持(尤其是基于web的展现层) Spring拥有自己的web框架--Spring Web MVC,在前两章中会有介绍.剩下的章节则用来介绍Spring和其他web技术的集成,比如Struts和JSF(这里只提两个). 本节以对Spring MVC portlet框架的介绍结尾. 第十五章--Web MVC框架(Web MVC framework) 第十六章--视图技术(View technologie) 第十七章--