假设虚拟路径是d:/webAppjap文件放在d:/webApp 下 且可以建子目录
class 放在d:/webApp/web-inf/classes 下
jar 放在d:/webApp/web-inf/lib 下
class 放在d:/webApp/web-inf/classes 下
jar 放在d:/webApp/web-inf/lib 下
解决方案 »
- 急!求高手解决 servlet异常:Cannot forward after response has been committed
- 关于解决getOutputStream() has already been called for this response异常
- AJAX到DIV里显示servlet读取的数据!!!
- 迷茫
- 如何将%传到下一个页面?万分火急!!!
- jsp的简单问题,在线等,急!解决即给分。
- String page = request.getParameter("page"); 有错吗?
- 用rst.getString("fieldname")怎么出错呀?!
- 如何固定JsplitPaneL活动范围?(在线等待)
- Spring-MVC-hibernate中存储实体到数据库的问题
- 多了一个“'”怎么办?
- MVC或JAVABAEN中,多数据库问题怎么样解决呀?
A Servlet Exception Has Occurred
org.apache.jasper.JasperException: Unable to compile class for JSP..\work\localhost\_\_0002fsensory_0002fcount_0002ejspcount_jsp_0.java:3: Class counter not found in import.
import counter;
^
1 errorcount.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import = "counter" %>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<TITLE>计数器演示程序</TITLE>
</HEAD>
<BODY>
<!--创建并调用bean(counter)-->
<jsp:useBean id="counter" class="counter" scope="request">
</jsp:useBean>
<%
//调用counter对象的ReadFile方法来读取文件lyfcount.txt中的计数
String cont=counter.ReadFile("/lyfcount.txt");
//调用counter对象的ReadFile方法来将计数器加一后写入到文件lyfcount.txt中
counter.WriteFile("/lyfcount.txt",cont);%>
您是第<font color="red"><%=cont%></font>位访问者
</BODY>
counter.java
import java.io.*;
public class counter extends Object {
private String currentRecord = null;//保存文本的变量
private BufferedReader file; //BufferedReader对象,用于读取文件数据
private String path;//文件完整路径名
public counter() {
}
//ReadFile方法用来读取文件filePath中的数据,并返回这个数据
public String ReadFile(String filePath) throws FileNotFoundException
{
path = filePath;
//创建新的BufferedReader对象
file = new BufferedReader(new FileReader(path));
String returnStr =null;
try
{
//读取一行数据并保存到currentRecord变量中
currentRecord = file.readLine();
}
catch (IOException e)
{//错误处理
System.out.println("读取数据错误.");
}
if (currentRecord == null)
//如果文件为空
returnStr = "没有任何记录";
else
{//文件不为空
returnStr =currentRecord;
}
//返回读取文件的数据
return returnStr;
}
//ReadFile方法用来将数据counter+1后写入到文本文件filePath中
//以实现计数增长的功能
public void WriteFile(String filePath,String counter) throws FileNotFoundException
{
path = filePath;
//将counter转换为int类型并加一
int Writestr = Integer.parseInt(counter)+1;
try {
//创建PrintWriter对象,用于写入数据到文件中
PrintWriter pw = new PrintWriter(new FileOutputStream(filePath));
//用文本格式打印整数Writestr
pw.println(Writestr);
//清除PrintWriter对象
pw.close();
} catch(IOException e) {
//错误处理
System.out.println("写入文件错误"+e.getMessage());
}
}
}
http://localhost:8080/sensory/count.jsp
count.jsp 放在root/sensory/count.jsp
counter.java root/sensory/下有
E:\Jsp\Tomcat\webapps\ROOT\WEB-INF\classes也有??
问为什么找不到??
有counter.class文件 编译正确
?
3X
WEB-INF/classes/bean/counter.javacounter.java
package bean;
.....cout.jsp
<jsp:useBean id="counter" class="bean.counter" scope="request" />
在TOMCAT中,默认的发布目录只有WEPAPPS下的ROOT、EXAMPLE以及MANAGER目录,也就是说通常情况下放置到上面三个目录中的JSP文件以及相应的CLASS文件、包(放置在相应WEB-INF中的CLASSES目录中)才能被系统读取、解释。
JSP、CLASS文件(包)的目录结构:
自己目录
----JSP文件
----WEB-INF
-----CLASSES
----CLASS文件或包
另外,自己新建立的目录需要部署到CONF下的SERVER.XML文件中才能被TOMCAT读取,修改
SERVER.XML文件,在<Context................../>标识位置后加上类似下面的一行:
<Context path="/test" docBase="test" debug="0" reloadable="true" crossContext="true"/>(test为自己在WEBAPPS下新建立的目录)
保存文件后再运行自己的JSP文件应该就能找到了!