问题描述
我写了一个非常简单的jsp问题,该问题从一个类中获取一个数字并显示出来,但遇到错误500.
I wrote a very simple jsp problem that gets a number from a class and show it but I encountered error 500.
我在tomcat 5.5中使用eclipse:
I use eclipse with tomcat 5.5:
<%@page import="java.io.IOException"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<h1>number of shown :</h1>
<body>
<%
try{
out.print(Model.getCount());
}
catch(IOException k)
{
out.println("Eror");
}
%>
</body>
</html>
我的模型课=>
public class Model {
static int number=0;
public static int getCount()
{
number++;
return number;
}
}
我的任何模型类都是默认程序包.
any my model class is default package.
我看到的错误:
消息
说明服务器遇到一个 内部错误()阻止了它 满足此请求.
description The server encountered an internal error () that prevented it from fulfilling this request.
例外
org.apache.jasper.JasperException: 无法为JSP编译类:
org.apache.jasper.JasperException: Unable to compile class for JSP:
在第14行的第一个行发生了错误 jsp文件:/show.jsp模型不能为 已解决11:12:<%13:尝试{ 14:out.print(Model.getCount()); 15:} 16:catch(IOException k)17:{
An error occurred at line: 14 in the jsp file: /show.jsp Model cannot be resolved 11: 12: <% 13: try{ 14: out.print(Model.getCount()); 15: } 16: catch(IOException k) 17: {
Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:93) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:451) org.apache.jasper.compiler.Compiler.compile(Compiler.java:328) org.apache.jasper.compiler.Compiler.compile(Compiler.java:307) org.apache.jasper.compiler.Compiler.compile(Compiler.java:295) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:565) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:309) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259) javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:93) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:451) org.apache.jasper.compiler.Compiler.compile(Compiler.java:328) org.apache.jasper.compiler.Compiler.compile(Compiler.java:307) org.apache.jasper.compiler.Compiler.compile(Compiler.java:295) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:565) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:309) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259) javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
note根的完整堆栈跟踪 原因在Apache中可用 Tomcat/5.5.33日志.
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.33 logs.
Apache Tomcat
Apache Tomcat
推荐答案
切勿将任何类放入默认包中.程序包中的类无法访问默认程序包,并且由于Tomcat在Servlet类中转换了JSP,并且该类在程序包中,因此它无法访问您的Model类.
Never put any class in the default package. The default package is not accessible to classes in a package, and since the JSP is transformed in a servlet class by Tomcat, and this class is in a package, it can't access your Model class.
一旦它位于定义明确的程序包中,就必须将其导入,如mschonaker在他的回答中所示:
Once it's in a well-defined package, you'll have to import it, as mschonaker shows in his answer:
<%@page import="somepackage.Model"%>
这篇关于是什么导致此jsp错误500?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!