【发布时间】:2014-02-28 04:18:34
【问题描述】:
我正在尝试使用 maven 编写一个简单的 JSP Web 应用程序来进行构建管理。我的目录结构目前看起来像这样(但我尝试了许多其他配置,但都没有奏效):
main
`-- resources
|-- webapp
| |-- WEB-INF
| | `--web.xml
| |-- doLogin.jsp
| `-- index.jsp
`-- java
`-- com
`-- wug
`-- authen2cator
`-- LoginReq.java
index.jsp 包含一个简单的表单,其中包含指向 doLogin.jsp 的数据点 username、password 和 twofactor(此页面似乎工作正常)。
doLogin.jsp 引用一个 bean,并推送给它:
<jsp:useBean id="user" class="com.wug.authen2cator.LoginReq" scope="session" />
<jsp:setProperty name="user" property="*"/>
LoginReq.java 包含以下骨架类:
package com.wug.authen2cator;
class LoginReq
{
String username;
String password;
String twofactor;
public LoginReq() {}
public void setUsername(String n) { username = n; }
public void setPassword(String n) { password = n; }
public void setTwofactor(String n) { twofactor = n; }
public String getUsername() { return username; }
public String getPassword() { return password; }
public String getTwofactor() { return twofactor; }
}
我正在尝试在构建后使用mvn tomcat:run 启动它。 index.jsp 按预期工作,但 doLogin.jsp 抛出 500 错误,并给出以下开头的堆栈跟踪:
org.apache.jasper.JasperException: /doLogin.jsp(1,1) The value for the useBean class attribute com.wug.authen2cator.LoginReq is invalid.
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
at org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1229)
at org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1178)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
我怀疑问题出在 tomcat 环境上,但这是我第一次尝试使用 maven,我发现它的文档有些缺乏(特别是不同类型项目的目录结构是任意的并且许多项目类型的文档记录都很差)
我尝试将LoginReq 从其包装中取出,并尝试将其移动到不同的位置。如果我把它放在.../main/java 中似乎可以编译(当我生成项目时它不存在,我必须创建它)但如果我把它放在.../main/webapp/WEB-INF 中,大多数我读过的文档建议应该放置它。
我的怀疑是 tomcat 无法找到 LoginReq.class,而且我发现的任何 maven 命令组合似乎实际上都没有使用构建过程生成的正确 WAR 文件来启动 tomcat。我已经没有明智的想法了,文档也没有帮助。有人能指出我正确的方向吗?
【问题讨论】:
-
LoginReq.class 当前驻留在您的文件夹结构中的什么位置?