日期:2014-05-17  浏览次数:20733 次

为什么我的jsp页面不能直接调用静态方法?
本帖最后由 dhloveyou2013 于 2013-03-20 00:12:51 编辑
这是一个在线统计的JAVA类
package com.suda.hxl.exam.common;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class OnlineCounter implements HttpSessionListener {
private static long count=0;

public void sessionCreated(HttpSessionEvent arg0) {
count++;

}

public void sessionDestroyed(HttpSessionEvent arg0) {
count--;

}
public static long getCount(){
return count;
}

}

在要显示在线人数的页面top.jsp中导入
<%@ page import="com.suda.hxl.exam.common.*" %>

在线人数<%=OnlineCounter.getCount()%>
==================================================
各位师兄,这代码没问题吧,我试过在Action中使用OnlineCounter.getCount()是有结果返回的,就是直接放到JSP页面中使用就不行了,只导入那个包就报错,郁闷的很哟....
这个是只导入静态方法包后执行显示top.jsp时报的错误信息:
----------------------
2013-3-20 0:08:20 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 6 in the generated java file
Syntax error on token ";", delete this token

Stacktrace:
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)

----------------------

------解决方案--------------------
贴出你JSP<html>之前的部分。那里有点问题,导致编译出来的java文件,多了一个分号。

怀疑是 import="这个部分" 或者<%@ page xxx="其他这种地方出问题" %>。

请检查你的类似tomcat/work/Catalina/localhost/YOUR_CONTEXT_PATH/org/apache/jsp目录或者更里面的top_jsp.java看看他第六行的前后内容是什么?

估计是import com.suda.hxl.exam.common.*;;
------解决方案--------------------
引用:
贴出你JSP<html>之前的部分。那里有点问题,导致编译出来的java文件,多了一个分号。

怀疑是 import="这个部分" 或者<%@ page xxx="其他这种地方出问题" %>。

请检查你的类似tomcat/work/Catalina/localhost/YOUR_CONTEXT_PATH/org/apache/jsp目录或者更里面的top_jsp.java看看他第六行的前……

先实例化,然后再调用试试;
<%OnlineCounter onlineCounter=new OnlineCounter();
onlineCounter.getCount();%>


------解决方案--------------------
首先 类似import="java.sql.*"不需要封号,然后直接用OnlineCounter.count试试