ref:如何将自定义异常的信息显示在jsp页面上
ref:https://blog.csdn.net/tao_ssh/article/details/53486449
在项目中,经常会抛出异常,输出比较友好的信息来提示用户,并指导用户行为。
大体思路:首先自定义一个异常类MyException,继承RuntimeException,定义一些变量和对应的setter、getter方法。然后创建servlet,在需要抛出异常的地方throw new MyException()。再创建一个过滤器捕获抛出的异常,转发到提示页面msg.jsp,显示对应的异常信息。(过滤器捕捉异常,然后转发到显示页面)
代码示例如下:
一、异常MyException
package com.myee.exception; /**
* Created by want on 2016/12/6.
*/
public class MyException extends RuntimeException {
public static final String INFO = "INFO";
public static final String ERROR = "ERROR";
public static final String SUCCESS = "SUCCESS";
protected String type = "INFO";
protected String code = "0";
protected String codeStr = "respCode";
protected String msgStr = "respMsg";
protected String url = ""; public String getCodeStr() {
return this.codeStr;
} public void setCodeStr(String codeStr) {
this.codeStr = codeStr;
} public String getMsgStr() {
return this.msgStr;
} public void setMsgStr(String msgStr) {
this.msgStr = msgStr;
} public String getUrl() {
return this.url;
} public void setUrl(String url) {
this.url = url;
} public String getCode() {
return this.code;
} public void setCode(String code) {
this.code = code;
} public MyException() {
} public MyException(String msg) {
super(msg);
} public MyException(String msg, String url) {
super(msg);
this.url = url;
} public MyException(String msg, String url, String msgStr) {
super(msg);
this.url = url;
this.msgStr = msgStr;
} public String getType() {
return this.type;
}
}
二、过滤器ExeceptionFilter
package com.myee.filter; import com.myee.exception.MyException; import javax.servlet.*;
import java.io.IOException; /**
* Created by want on 2016/12/6.
*/
public class ExeceptionFilter implements Filter { @Override
public void init(FilterConfig filterConfig) throws ServletException { } @Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
try {
filterChain.doFilter(servletRequest, servletResponse);
} catch (MyException e) {
/* e.printStackTrace();此处过滤器捕获异常,注意filter在servlet外层监听*/
servletRequest.setAttribute("url", e.getUrl());
servletRequest.setAttribute("type", e.getType());
servletRequest.setAttribute("code", e.getCode());
servletRequest.setAttribute("codeStr", e.getCodeStr());
servletRequest.setAttribute("msgStr", e.getMsgStr());
servletRequest.getRequestDispatcher("/msg.jsp").forward(servletRequest, servletResponse);//将错误信息转发到msp.jsp
}
} @Override
public void destroy() {
}
}
三、Servlet
package com.myee.servlet;
import com.myee.exception.MyException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; /**
* Created by want on 2016/12/6.
*/
public class MyServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req , resp );
} public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
if(req !=null){
throw new MyException("我的自定义异常!!!","/index.jsp","正常抛出了");//抛出异常
}
req.getRequestDispatcher("/index.jsp").forward(req,resp);
}
}
四、web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>ee</servlet-name>
<servlet-class>com.myee.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ee</servlet-name>
<url-pattern>/myee</url-pattern>//访问myee页面才抛出异常
</servlet-mapping> <filter>
<filter-name>exefilter</filter-name>
<filter-class>com.myee.filter.ExeceptionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>exefilter</filter-name>
<url-pattern>/*</url-pattern>//其他页面正常访问
</filter-mapping> </web-app>
五、index.jsp和msg.jsp
①index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>首页</title>
</head>
<body>
<div style="width: 300px;height: 500px;margin: 10px auto;padding: 10px">
<h4>hello world!</h4>
<a href="/myee">访问</a>
</div>
</body>
</html>
②msg.jsp
<%@ page contentType="text/html;charset=utf-8" language="java" %>
<head>
<title>提示窗</title> </head>
<body>
<div style="width: 300px;height: 500px;margin: 10px auto;padding: 10px">
<div><h4>系统提示</h4></div>
<p>msg:${msg}</p><br>
<p>提示信息:${msgStr}</p>
<a href="${url}">确定</a>
</div> </body>
</html>
ref:如何将自定义异常的信息显示在jsp页面上的更多相关文章
- 从数据库提取数据通过jstl显示在jsp页面上
从数据库提取数据通过jstl显示在jsp页面上 1.ConnectDB.java连接数据库,把数据转换成list public class ConnectDB { private final stat ...
- activity通过流程实例id动态获取流程图并展示在jsp页面上
提供的Service方法如下: Java /** * 获取当前任务流程图 * * @param processInstanceId * @return */ @Override public Inpu ...
- javaweb jsp页面上传excel文件
servlet: private static final long FILE_MAX_SIZE = 4 * 1024 * 1024; if (!ServletFileUpload.isMultipa ...
- 个人总结-7- 实现图片在MySQL数据库中的存储,取出以及显示在jsp页面上
昨天主要是进行对数据库的内容提取出来并进行动态显示,这个只需要设置一个servlet从数据库中获取数据即可,只是图片比较特殊,不能显示. 今天准备继续找方法来实现图片得录入和显示到jsp中,准备从网上 ...
- jquery 获取json文件数据,显示到jsp页面上, 或者html页面上
[{"name":"中国工商银行","code":102},{"name":"中国农业银行",&qu ...
- 如何将jsp页面的table报表转换到excel报表导出
假设这就是你的jsp页面: 我们会添加一个“导出到excel”的超链接,它会把页面内容导出到excel文件中.那么这个页面会变成这个样子 在此,强调一下搜索时关键词的重要性,这样一下子可以定位到文章, ...
- javascript 如何访问 action或者controller 传给 jsp 页面的值
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...
- MyEclipse设置jsp页默认打开方式
可以用来设置jsp页默认打开是代码编辑模式而不是半视图半代码的模式. 1.选择菜单Window→Preferences. 2.选择General→Editors→File Associations.在 ...
- jsp页面的html代码显示不出来,提示Uncaught SyntaxError: Unexpected token <
jsp页面的html代码显示不出来,提示Uncaught SyntaxError: Unexpected token < <input type="hidden" na ...
随机推荐
- HDU 5446 lucas CRT
n中选m个模M,M为多个素数之积 $n, m, k (1 \leq m \leq n \leq 10^{18}, 1 \leq k \leq 10)$,$M = p_1 · p_2 · · · p_k ...
- js小记 unicode 编码解析
var str = "\\u6211\\u662Funicode\\u7F16\\u7801"; // 关于这样的数据转换为中文问题,常用的两种方法. // 1. eval 解析 ...
- Xilinx Altera FPGA中的逻辑资源(Slices VS LE)比较
前言 经常有朋友会问我,“我这个方案是用A家的FPGA还是X家的FPGA呢?他们的容量够不够呢?他们的容量怎么比较呢?”当然,在大部分时候,我在给客户做设计的时候,直接会用到最高容量的产品,因为我们的 ...
- 对于最近一星期jsp培训有感
这周上课是jsp的培训,找的是外面的一个培训机构的讲师,人挺好的,讲的也不错,不过交给我们的任务是一星期做出一个网站模型——新闻发布系统. 由于我们组本科学计算机的人实在太少了,所以这个重担落在我的身 ...
- Tju_Oj_2790Fireworks Show
这个题主要在于时间复杂度的计算,N是10的6次方,C是10的2次方,OJ系统可接受的时间是10的7次方(室友说是无数先人测出来了┭┮﹏┭┮),所以如果普通遍历的话肯定会超时.而代码中是跳着走了,相当于 ...
- 【leetcode 简单】 第六十八题 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q 的祖先且 x ...
- spfa+floyed+最长路+差分约束系统(F - XYZZY POJ - 1932)(题目起这么长感觉有点慌--)
题目链接:https://cn.vjudge.net/contest/276233#problem/F 题目大意:给你n个房子能到达的地方,然后每进入一个房子,会消耗一定的生命值(有可能是负),问你一 ...
- 在mac环境下用QT使用OpenGL,glut,glfw
只需要在新建工程中.pro文件中添加: #opengl glut LIBS+= -framework opengl -framework glut 就可以使用glut了. 继续添加: ##glfw L ...
- springcloud的Turbine配置监控多个服务的一些坑!!!!InstanceMonitor$MisconfiguredHostException,No message available","path":"/actuator/hystrix.stream,页面不显示服务或者一直loading
踩了几个小时坑,使用仪表盘监控单个服务的时候很容易,但是一到多个服务,瞬间坑就来了,大概碰到下面三个: 1InstanceMonitor$MisconfiguredHostException, No ...
- 【Python学习笔记】Jupyter Lab目录插件安装
Jupyter Lab目录插件安装 当然首先你得有python和已经安装了jupyter lab. 1 安装jupyter_contrib_nbextensions 首先先安装jupyter_cont ...