在服务器网站上做跳转,苏州网站的建设,网址安全中心检测,南通免费建设网站前言#xff1a;很多网站为了给用户很好的用户体验性#xff0c;都会提供比较友好的异常界面#xff0c;现在我们在来回顾一下Servlet中如何进行异常处理的。 1#xff1a;声明式异常处理 什么是声明式#xff1a;就是在web.xml中声明对各种异常的处理方法。 是通过er…前言很多网站为了给用户很好的用户体验性都会提供比较友好的异常界面现在我们在来回顾一下Servlet中如何进行异常处理的。 1声明式异常处理 什么是声明式就是在web.xml中声明对各种异常的处理方法。 是通过error-page元素来声明的error-page下面有几个子元素如下图 error-codehttp错误代码 exception-typejava异常类的完整名 location响应http错误代码或者java异常的资源路径 下面通过例子一一讲解: 1首先我们做个最简单的先在程序中加一个FileNotFound.html文件文件内容如下 1 html2 head3 meta charsetUTF-84 title页面没有发现/title5 /head6 body7 你访问的页面并不存在或者被移到其他位置。p8 如有其他问题请联系a href#管理员/a9 /body
10 /html View Code 然后我们在web.xml中加入下面代码 error-pageerror-code404/error-codelocation/FileNotFound.html/location
/error-page 如果开启tomcat 在浏览器输入http://localhost:8080/servlet-test/index1.jsp 然后会出现下面 2然后我们发现如果我声明越来越多的异常时候会出现越来越多的html这样的静态代码那么可以能否在后台操作呢答案是肯定的现在我们用一个Servlet类来进行响应 首先来看一副关于servlet相关属性的图 现在我以其中status_code作为例子先建立一个ErrorHandlerServlet如下 1 public class ErrorHandlerServlet extends HttpServlet{2 3 private static final long serialVersionUID 1L;4 protected void service(HttpServletRequest request,HttpServletResponse response) throws IOException5 {6 7 response.setContentType(text/html;charsetgb2312);8 PrintWriter outresponse.getWriter();9 Integer status_code(Integer)request.getAttribute(javax.servlet.error.status_code);
10 out.println(htmlheadtitle错误列表/title/head);
11 out.println(body);
12
13 switch(status_code)
14 {
15 case 401:
16 out.println(h2http错误码status_code/h2);
17 out.println(你并没有被授权);
18 out.println(如有其他问题请联系a href#管理员/a);
19 break;
20 case 404:
21 out.println(h2http错误码status_code/h2);
22 out.println(你访问的页面并不存在或者被移到其他位置);
23 out.println(如有其他问题请联系a href#管理员/a);
24 break;
25 }
26
27 out.println(/body/html);
28 out.close();
29 } ErrorHandlerServlet 然后在配置web.xml 1 servlet2 servlet-nameErrorHandlerServlet/servlet-name3 servlet-classcom.lp.servlet.ErrorHandlerServlet/servlet-class4 /servlet5 servlet-mapping6 servlet-nameErrorHandlerServlet/servlet-name7 url-pattern/errorHandler/url-pattern8 /servlet-mapping9 error-page
10 error-code404/error-code
11 location/errorHandler/location
12 /error-page web.xml 现在我们再次开启tomcat 在浏览器输入http://localhost:8080/servlet-test/index1.jsp 可以看到如下图 3我们发现发现关于exception-type都没有用上那么关于怎么用exception-type呢下面来用实例讲解 我们在写一个关于文件操作的Servlet类FileExceptionServlet 1 public class FileExceptionServlet extends HttpServlet{2 /**3 * 4 */5 private static final long serialVersionUID 1L;6 public void doGet(HttpServletRequest request,HttpServletResponse response) throws FileNotFoundException 7 { 8 File filenew File(1.txt);9 FileInputStream fileInputStreamnew F
10 }
11 } FileExceptionServlet 在这里我们并没有1.txt文件注意声明的FileNotFoundException异常在配置中会用的到 同样我们在写一个关于处理Servlet异常的ExceptionHandlerServlet类 1 public class ExceptionHandlerServlet extends HttpServlet{2 3 /**4 * 5 */6 private static final long serialVersionUID 1L;7 protected void service(HttpServletRequest request,HttpServletResponse response) throws IOException8 {9 response.setContentType(text/html;charsetgb2312);
10 PrintWriter outresponse.getWriter();
11 out.println(htmlheadtitle错误列表/title/head);
12 out.println(body);
13 out.println(应用程序出错);
14 out.println(错误原因可能是某个服务器端文件被删除);
15 out.println(请联系a href#管理员/a);
16 out.println(/body/html);
17 out.close();
18 } ExceptionHandlerServlet 然后再次配置web.xml 1 servlet2 servlet-nameExceptionHandlerServlet/servlet-name3 servlet-classcom.lp.servlet.ExceptionHandlerServlet/servlet-class4 /servlet5 servlet-mapping6 servlet-nameExceptionHandlerServlet/servlet-name7 url-pattern/exceptionHandler/url-pattern8 /servlet-mapping9 error-page
10 exception-typejava.io.FileNotFoundException/exception-type
11 location/exceptionHandler/location
12 /error-page web.xml 然后启动tomcat输入http://localhost:8080/servlet-test/exceptionHandler看到 2编程式的异常处理 这个在实际开发中运用的比较多主要采取try catch捕获异常 然后进行处理。举一个小例子比喻我们上面说的文件操作如果发现文件不存在的时候我们可以把这个错误记录在日志便于查阅ok我看一下 1 public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException 2 { 3 try {4 File filenew File(1.txt);5 SuppressWarnings(unused)6 FileInputStream fileInputStreamnew FileInputStream(file);7 } catch (FileNotFoundException e) {8 getServletContext().log(e.getMessage());9 response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,文件未能发现);
10 }
11 } View Code 从中我们可以看出采用了sendError这个方法目的就是可以把一些错误信息很好的展现出来日志这里就是简单提下在实际中可能根据不同业务选择的不一样。 然后再次配置wen.xml servletservlet-nameFileExceptionServlet/servlet-nameservlet-classcom.lp.servlet.FileExceptionServlet/servlet-class/servletservlet-mappingservlet-nameFileExceptionServlet/servlet-nameurl-pattern/fileexception/url-pattern/servlet-mapping 再次运行http://localhost:8080/servlet-test/fileexception 好了关于Servlet异常就说这么多了随着技术不停的更新处理异常的方式也越来越多但是这些基础的还是应该了解和学习下的 转载于:https://www.cnblogs.com/LipeiNet/p/5684003.html