500.jsp 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" %>
  2. <%@include file="/common/taglibs.jsp"%>
  3. <%@ page import="java.io.PrintWriter"%>
  4. <%@ page import="java.io.StringWriter"%>
  5. <%@ page import="java.net.InetAddress"%>
  6. <%@ page import="java.util.Enumeration"%>
  7. <%@ page import="org.slf4j.Logger"%>
  8. <%@ page import="org.slf4j.LoggerFactory"%>
  9. <%response.setStatus(200);%>
  10. <%
  11. pageContext.setAttribute("ctx", request.getContextPath());
  12. Throwable ex = null;
  13. if (exception != null) {
  14. ex = exception;
  15. }
  16. if (request.getAttribute("javax.servlet.error.exception") != null) {
  17. ex = (Throwable) request.getAttribute("javax.servlet.error.exception");
  18. }
  19. //记录日志
  20. Logger logger = LoggerFactory.getLogger("500.jsp");
  21. String requestInfo = "";
  22. try {
  23. StringBuilder buff = new StringBuilder();
  24. buff.append(InetAddress.getLocalHost())
  25. .append("\n");
  26. buff.append("Header....\n");
  27. Enumeration<String> e = request.getHeaderNames();
  28. String key;
  29. while(e.hasMoreElements()){
  30. key = e.nextElement();
  31. buff.append(key)
  32. .append("=")
  33. .append(request.getHeader(key))
  34. .append("\n");
  35. }
  36. buff.append("Attribute....\n");
  37. e = request.getAttributeNames();
  38. while(e.hasMoreElements()){
  39. key = e.nextElement();
  40. buff.append(key)
  41. .append("=")
  42. .append(request.getAttribute(key))
  43. .append("\n");
  44. }
  45. buff.append("Parameter....\n");
  46. e = request.getParameterNames();
  47. while(e.hasMoreElements()){
  48. key = e.nextElement();
  49. buff.append(key)
  50. .append("=")
  51. .append(java.util.Arrays.asList(request.getParameterValues(key)))
  52. .append("\n");
  53. }
  54. requestInfo = buff.toString().replaceAll("<", "&lt;");
  55. } catch(Throwable t) {
  56. logger.error("fetch request info error", t);
  57. }
  58. logger.error(requestInfo, ex);
  59. %>
  60. <!doctype html>
  61. <html lang="en">
  62. <head>
  63. <%@include file="/common/meta.jsp"%>
  64. <title>500 - <spring:message code="core.500.error" text="系统内部发生错误"/></title>
  65. <link href="${ctx}/s/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  66. <link href="${ctx}/s/bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet">
  67. <script type="text/javascript" src="${ctx}/s/jquery/jquery.min.js"></script>
  68. <script type="text/javascript">
  69. $(function() {
  70. $('#targetContentDiv').height($(window).innerHeight() - 150);
  71. })
  72. </script>
  73. <style type="text/css">
  74. #targetContentDiv {
  75. background-color: #b8b8b8;
  76. padding: 70px 0 80px;
  77. text-align: center;
  78. }
  79. #targetContentDiv h1 {
  80. font-size: 120px;
  81. letter-spacing: -2px;
  82. line-height: 1;
  83. }
  84. #targetContentDiv p {
  85. font-size: 40px;
  86. font-weight: 200;
  87. line-height: 1.25;
  88. font-weight: bold;
  89. padding: 10px;
  90. }
  91. #targetContentDiv li {
  92. display: inline;
  93. list-style: none outside none;
  94. }
  95. </style>
  96. </head>
  97. <body>
  98. <div id="targetContentDiv">
  99. <div class="container">
  100. <h1>500</h1>
  101. <p><spring:message code="core.500.error" text="系统内部发生错误"/></p>
  102. <ul>
  103. <li><a class="btn btn-primary" href="${ctx}/"><spring:message code="core.500.back" text="返回首页"/></a></li>
  104. <li><a class="btn" href="javascript:void(0);" onclick="">联系管理员</a></li>
  105. <li><a class="btn" href="javascript:void(0);" onclick="$('#output').show();$('#targetContentDiv').hide();">显示详情</a></li>
  106. </ul>
  107. </div>
  108. </div>
  109. <div id="output" style="display:none">
  110. <div style="text-align:center;" class="container">
  111. <a class="btn btn-info container" href="javascript:void(0);" onclick="$('#output').hide();$('#targetContentDiv').show();">返回</a>
  112. </div>
  113. <pre>
  114. <%=requestInfo%>
  115. <hr>
  116. <%
  117. StringWriter writer = new StringWriter();
  118. ex.printStackTrace(new PrintWriter(writer));
  119. out.println(writer.toString());
  120. %>
  121. </pre>
  122. </div>
  123. </body>
  124. </html>