我正在尝试使用maven编写一个简单的JSP Web应用程序来进行构建管理。我的目录结构目前看起来像这样(但我尝试了很多其他配置,但没有一个配置有效):
main
`-- resources
|-- webapp
| |-- WEB-INF
| | `--web.xml
| |-- doLogin.jsp
| `-- index.jsp
`-- java
`-- com
`-- wug
`-- authen2cator
`-- LoginReq.java
index.jsp
包含一个简单的表单,其数据点username
,password
和twofactor
指向doLogin.jsp(此页面似乎工作正常)。
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。我已经没有明智的想法,而且文档没有帮助。有人能指出我正确的方向吗?
答案 0 :(得分:1)
必须将LoginReq类声明为public。