开始用的是asp.net 现在学习jsp 感觉 和asp.net 比起来 jsp 好麻烦 ... 呵呵 。
编写了一个小程序 出现了好多错误,好伤心,决心 把程序仔细研究,自己 解决问题 之后 ,又故意制造了几个错误 ,呵呵 ,总结诶了一下子 。记下来 防止以后再次犯错 。
一、出现
org.apache.jasper.JasperException: org.apache.jasper.JasperException: Unable to load class for JSP
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:156)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
org.apache.jasper.JasperException: Unable to load class for JSP
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:620)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:144)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
解决 :关键是确认你的类文件存在并且配置正确 。我用的时候,是直接用编译好的class 文件,放在了WEB-INF/classes文件夹下面了, 可是 找到源文件 ,添加了一个包 ,然后把类放在这个包里面 ,再次调用就可以了。
二、现象:
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 /javabeanExe.jsp at line 7
4: <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
5: <title>无标题文档</title>
6: </head>
7: <jsp:useBean id="bean000" scope="application" class="my.mybeans0" />
8: <jsp:getProperty name="bean000" property="visitCount" />
9: <body>
10: </body>
出现这个问题的原因是第一次的时候,javabean 编译成功了,但是这个id="bean000" 还在内测变量中保存着,这么以来<jsp:useBean id="bean000" scope="application" class="my.mybeans0" />
我 改变了class="my.mybeans0" 里面的东西 ,还是用 id="bean000" 就会出现这个错误。
有意思的是 ,如果你在jsp源代码里面把class=“” 中的类文件改改 ,只要不重新启动Tomcat ,程序中就照样可以使用 bean000。
解决 :1:把id="bean000" 引号中的名字改改 ,
2:重新启动Tomcat 。
三、现象:
org.apache.jasper.JasperException: /javabeanExe.jsp(7,0) The value for the useBean class attribute my.beans is invalid.
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1272)
org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1178)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2417)
org.apache.jasper.compiler.Node$Root.accept(Node.java:495)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
org.apache.jasper.compiler.Generator.generate(Generator.java:3426)
解决 :重新启动tomcat ,然后刷新,就可以解决,如果再次出现
在 beans 文件中
package test;
import java.io.*;
public class beans {
private int VisitCount=0;
public void setvisitCount(int count)
{
this.VisitCount=count;
}
public int getvisitCount()
{
VisitCount++;
return VisitCount;
}
}
属性的大小写都是没有关系的 ,我试过……….