问题标签 [servletexception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2033 浏览

jsf - 找不到属性的 javax.el.E​​LException

我有以下html文件:

LoginBean 如下:

尽管 LoginBean 上存在 loginPro 方法,但我仍继续收到以下消息:

javax.servlet.ServletException:/index.xhtml:在类型 beans.LoginBean javax.faces.webapp.FacesServlet.service(FacesServlet.java:659) org.apache.tomcat.websocket.server.WsFilter 上找不到属性“loginPro”。 doFilter(WsFilter.java:52)

有什么意见吗?

0 投票
1 回答
3631 浏览

java - Tomcat 将 HttpServlet 抛出的 ServletExceptions 记录为“严重”,尽管以推荐的方式进行处理

问题描述

当我的 HttpServlet 抛出 ServletException 时,Tomcat 正在记录一条包含堆栈跟踪的 SEVERE 消息,尽管它已正确重定向到 web.xml 中的另一个 HttpServlet。

Tomcat 使用堆栈跟踪记录以下消息:

我做了什么?

首先,MyHttpServlet 抛出一个 ServletException,在它的 doGet() 方法中包装了一个 CustomException(Exception 的子类):

然后,抛出的CustomException被重定向到MyServletExceptionHandler(映射到位置'/MyServletExceptionHandler'。这个重定向在web.xml中以如下方式定义:

最后,MyServletExceptionHandler 接收到抛出的异常并打印出来:

这会导致预期的“MyServletExceptionHandler 捕获 Throwable: CustomException”打印,所以这确实有效,但不知何故 Tomcat 也会记录上面提到的 SEVERE 消息,包括该堆栈跟踪。这弄乱了我的日志记录。

我为什么要这样?

根据 Java Beat 的OCEJWCD 6 Mock Exam – 4,上述方法是处理 Servlet 中的异常处理的正确方法。问题 29 状态(剧透警告:粗体为正确答案):

如果发生从 java.lang.Exception 扩展的业务异常,以下哪项是向客户端发送错误页面的明智方法?

  1. 捕获异常并使用 RequestDispatcher 将请求转发到错误页面
  2. 不要捕获异常并在 web.xml 中定义“异常到错误页面”映射
  3. 捕获异常,将其包装到 ServletException 中并在 web.xml 中定义“业务异常到错误页面”映射
  4. 捕获异常,将其包装到 ServletException 中,并在 web.xml 中定义 'ServletException to error-page' 映射
  5. 什么都不做,servlet容器会自动发送一个默认的错误页面

第三个答案(标记为正确)清楚地表明我重新引导异常的方式是一个明智的解决方案。

进一步讨论材料

我在此页面上找到了以下引用(来自 CodeRanch.com 的 Tom Holloway 的 10-2-2012)

实际上,ServletException 在 webapp 中无处可去,因此让它出现在主控制台上并没有那么不合理,因为它表明应用程序本身没有处理问题。

事实上,Javadocs 是这样描述 ServletException 构造函数的:

“用指定的消息构造一个新的 servlet 异常。该消息可以写入服务器日志和/或显示给用户。”

请注意,它明确表示服务器日志。

服务器可以在这里以多种方式参与。首先,您应该能够在 web.xml 中定义一个通用异常处理程序,以允许应用程序处理异常,该处理程序不仅可以记录到应用程序日志,还可以确定应该采取什么恢复操作(如果有)采取(更通用的服务器代码无法做到的事情)。其次,您可以定义一个自定义错误页面,在这种情况下,Tomcat 将捕获 ServletException 并调度该页面。但是请注意,操作词是 page。与登录屏幕一样,这些页面直接从 Tomcat 调用,因此无法通过 servlet 进行路由。换句话说,使用 HTML 或 JSP,而不是 Struts 或 JSF。

然而,底线是抛出 ServletExceptions 是糟糕的应用程序设计的标志。这意味着某人太懒或太匆忙而无法正确处理问题。与此相比,记录错误的位置是次要的。

这句话让我质疑 Java Beat 的 OCEJWCD 模拟考试(上面提到过)和我自己的解决方案作为良好实践。你认为业务异常应该由另一个 Servlet 处理吗?如果是这样,您认为 Servlet 容器 (Tomcat) 是否应该记录这些异常的堆栈跟踪?如果没有,那么最佳做法是什么?

最后的评论

  • 抛出 RuntimeExceptions 而不是 ServletExceptions 会导致相同的 SEVERE 日志。
  • 此 Bitbucket 存储库提供了该问题的一个工作示例。
0 投票
1 回答
736 浏览

java - 异常中的Spring mvc空servlet名称

我在 spring mvc 中有下一个问题。

这是我要测试的控制器中的方法:

弹簧配置文件

网络 XML

测试

我在控制器中有更多方法和更多测试,但只有 1 不起作用。我有以下例外:

javax.servlet.ServletException:无法在名称为“”的 servlet 中解析名称为“组”的视图

为什么servlet名称为空?当我运行我的应用程序时,控制器中的 getGroups() 方法工作正常,但没有通过测试。

当我将视图解析器从 ftl 更改为 jsp

它与此视图解析器完美配合。

0 投票
0 回答
809 浏览

jsp - ServletException:tmpFile.renameTo(classFile) 失败

在将战争部署到 JBOSS 7.1.0 之后,我遇到了下面提到的异常。错误信息

'[ServletException in:/WEB-INF/modules/pages/SomeJspPage.jsp] tmpFile.renameTo(classFile) 失败'

显示在 jsp 页面中,并且在 server.log 上生成以下异常

发现当 Jboss 服务器重新启动时,该特定页面的问题得到解决,但可能涉及任何其他 jsp 页面。

谁能知道如何解决这个问题?

0 投票
1 回答
349 浏览

servlets - Netbeans 中的 Servlet 异常

我在 JSP 中的登录表单是:

我的 Servlet 是

这是我的 Web.xml

我收到错误 HTTP 状态 404说明请求的资源不可用
**或者我收到错误 HTTP 状态 500 ** 说明 java.servlet.ServletException: Wrapper could not find servlet p1.cust_care

如果有人有解决方案通知

0 投票
2 回答
1496 浏览

java - 尝试运行 servlet 时出现 Servlet 异常

我是 servlet 的新手。我正在低于 sevlets 异常。

我的 web.xml 代码。

调用此 servlet 的 Html 表单。

我得到的例外。

根本原因。

最后一天类似的代码工作正常。但我也在使用 git SVN,我用相同的代码设置了一个创建新项目。但它不工作。我也下载了一些样本,但没有工作。

这是我的 LoginServlet 类。它位于 JavaResources->src-mypackage

0 投票
2 回答
1139 浏览

jsp - renderURL 在 MVCPortlet jsp 页面上不起作用

嗨,我在 liferay 上构建了一个 MVCPortlet。我使用了一个 view.jsp,它使用 renderURL 指向另外两个 jsp 页面,但是每当我单击两个链接之一时,我都会在 eclipse 控制台中遇到异常。

这是portlet的view.jsp的代码

我还有两个文件 addNewSite.jsp 和 listWebSites.jsp 位于 portlet 项目的同一目录中

这是堆栈跟踪。

0 投票
1 回答
3197 浏览

java - Etat HTTP 500 - javax.servlet.ServletException:javax.servlet.jsp.JspException:找不到 ActionMappings 或 ActionFormBeans 集合

我是 Struts 的新手,我遵循有关如何创建 Struts Web 应用程序的教程。这是我创建的文件。

web.xml

Struts-config.xml

索引.jsp

登录操作.java

登录表单.java

但是在运行时,出现以下错误

Etat HTTP 500 - javax.servlet.ServletException:javax.servlet.jsp.JspException:找不到 ActionMappings 或 ActionFormBeans 集合

编辑:完整的堆栈跟踪

我用谷歌搜索并尝试了所有提出的解决方案,但错误仍然存​​在。任何想法请。

PS:我使用 Struts 1.1

0 投票
1 回答
1639 浏览

jakarta-ee - HTTP 500 javax.servlet.ServletException:找不到文件

我正在开发一个 J2EE 应用程序,它在从 Eclipse 运行时运行良好,但是当我将它部署到 tomcat 上时出现以下异常,我不明白出了什么问题,因为我需要刷新几次,直到页面显示

(eclipse在尝试导出war时返回空文件,所以我通过在tomcat/webapps/我的项目中复制WebContent中的所有文件进行部署,并在我的WEB-INF中复制类)

menu_dashboard_top.jsp 在 WebContent 中,它不是一个 servlet,只是一个 jsp 页面,其中包含我在所有网页中包含的菜单

我已经在 web.xml 中映射了我的所有 servlet。这是我的 web.xml 文件

0 投票
1 回答
542 浏览

java - Apache Tomcat Servlet - 线程“主”java.lang.ClassFormatError 中的异常

我正在尝试在 Apache Tomcat 服务器中运行 java.class 文件。我使用 Maven 构建。

我使用以下命令:

这是错误:

还有我的 Java 版本:

我已经阅读了几个关于这个错误的帖子,但到目前为止我还没有成功解决这个问题。任何帮助将不胜感激!