我一直在研究一个JSP / struts项目,现在我只是在开始实际项目之前尝试获得基本的第一页并且正在工作但是我对struts和部署页面之后很新在MyEclipse中,我在尝试通过浏览器访问localhost页面时遇到错误。我得到的错误是:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot retrieve definition for form bean userLoginForm
它从那里继续,但那是基本信息。
初始JSP页面的代码是
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<html>
<head>
<title>JSP for UserLoginForm form</title>
</head>
<body>
<html:form action="/userLogin">
userName : <html:text property="userName"/><html:errors property="userName"/><br/>
enter : <html:text property="enter"/><html:errors property="enter"/> <br/>
server : <html:text property="server"/><html:errors property="server"/><br/>
password : <html:text property="password"/><html:errors property="password"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
</html>
使用的xml文件是:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<data-sources />
<form-beans >
<form-bean name="UserLoginForm" type="strutsPackage.struts.form.UserLoginForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="userLoginForm"
input="/login.jsp"
name="userLoginForm"
path="/userLogin"
scope="request"
type="strutsPackage.struts.action.UserLoginAction">
<forward name="failure" path="/login.jsp" />
<forward name="success" path="/login.jsp" />
</action>
</action-mappings>
<message-resources parameter="strutsPackage.struts.ApplicationResources" />
</struts-config>
,操作页面为:
package strutsPackage.struts.action;
import javax.servlet.http.HttpServletRequest;
/**
* MyEclipse Struts
* Creation date: 04-18-2013
*
* XDoclet definition:
* @struts.action path="/userLogin" name="userLoginForm" input="/login.jsp" scope="request" validate="true"
* @struts.action-forward name="failure" path="/login.jsp"
* @struts.action-forward name="success" path="/login.jsp"
*/
public class UserLoginAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
UserLoginForm userLoginForm = (UserLoginForm) form;
if(userLoginForm.getUserName().equals("myeclipse") && userLoginForm.getPassword().equals("myeclipse"))
{
request.setAttribute("userName", userLoginForm.getUserName());
return mapping.findForward("success");
}
return mapping.findForward("failure");
}
}
每隔一段时间我会得到一个不同的错误页面
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /login.jsp at line 10
7: <title>JSP for UserLoginForm form</title>
8: </head>
9: <body>
10: <html:form action="/userLogin">
11: userName : <html:text property="userName"/><html:errors property="userName"/><br/>
12: enter : <html:text property="enter"/><html:errors property="enter"/><br/>
13: server : <html:text property="server"/><html:errors property="server"/><br/>
这些错误似乎是因为不明显的原因而互换的,但令我感到困惑的是,昨天我的页面显示得很好,没有再触摸它了,今天当我试图打开它时,我得到了第一个错误页面。我已经尝试重新部署网站,但我仍然得到同样的东西。
所以我不知道这是我的代码或我的Tomcat版本的问题,还是我的代码有问题。
非常感谢任何帮助。
答案 0 :(得分:0)
"userLoginForm"
与表单bean定义中的"UserLoginForm"
不同。他们需要是一样的。
此外,目前还不清楚你是否真的使用 XDoclet;如果你是,你需要说多少,因为它会产生各种配置工件。
无关:除非你有充分的理由,否则不要费心学习Struts 1.它很古老,它是EOLed,不应该用于新的开发。 Struts 2或Spring MVC是典型的替代品,如果你绑定到JVM,你可以转到JSF,Play,Grails,JRuby on Rails等。