jsp中使用JavaBean出现“引用类不可用”

do_upload.jsp
[code="java"]<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB2312"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="org.apache.commons.fileupload.servlet.*"%>
<%@ page import="org.apache.commons.fileupload.disk.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="picDeal.*" %>

/jsp:useBean
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">




文件上传


上传中.....
<%
String uploadPath=application.getRealPath("/upload");
String picName=null;
int width=0,height=0;
//目标文件夹的路径必须使用绝对路径,不能用相对路径
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(isMultipart==true){
try{
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = upload.parseRequest(request);//得到所有的文件
Iterator itr = items.iterator();
while(itr.hasNext()){//依次处理每个文件
FileItem item=(FileItem)itr.next();
String fileName=item.getName();//获得文件名,包括路径
if(fileName!=null)
{
File fullFile=new File(item.getName());
picName=fullFile.getName();
File savedFile=new File(uploadPath,fullFile.getName());
item.write(savedFile);
}
}
out.println("upload succeed!");
out.println("上传的图片如下:");
//分析图片, 获取图片的信息
pic.setData(picName);
session.setAttribute("picture",pic);
%>











上传的图片如下:
>


<%
}
catch(Exception e){
e.printStackTrace();
out.print("failed!");
}
}
else{
out.println("the enctype must be multipart/form-data");
}
%>


[/code]
PicRgb

[code="java"]package picDeal;
import java.awt.*;
import java.awt.image.*;
import java.io.*;

import javax.imageio.*;

public class PicRgb {
private int []rData;
private int []gData;
private int []bData;
private int width;
private int height;
//分析图片,参数为图片的名字
public PicRgb()
{

}
public void setData(String name){
    Image image=null;
    try{
    File sourceimage = new File("upload/"+name);
    image=ImageIO.read(sourceimage);
    }
    catch(IOException e){
    }
    //读取图像的高度&宽度
    this.width=image.getWidth(null);
    this.height=image.getHeight(null);
    System.out.println(width);
    System.out.println(height);
    //读取图片像素信息
    Image im=Toolkit.getDefaultToolkit().getImage("upload/"+name);
    this.rData=new int[256];
    this.gData=new int[256];
    this.bData=new int[256];
    int []pixels=new int[width*height];
    try{
        PixelGrabber pg=new PixelGrabber(im,0,0,width,height,pixels,0,width);
        pg.grabPixels();
    }catch(InterruptedException e){
        e.printStackTrace();
    }
    ColorModel cm=ColorModel.getRGBdefault();
    int red,green,blue;
    for(int i=0;i<width*height;i++){
        red=cm.getRed(pixels[i]);
        this.rData[red]++;
        green=cm.getGreen(pixels[i]);
        this.gData[green]++;
        blue=cm.getBlue(pixels[i]);
        this.bData[blue]++;
    }
}

public void setRData(int[] r)
{
this.rData=r;
}
public void setGData(int[] g)
{
this.gData=g;
}
public void setBData(int[] b)
{
this.bData=b;
}
public void setWidth(int w)
{
this.width=w;
}
public void setHeight(int h)
{
this.height=h;
}
public int getWidth()
{
return this.width;
}
public int getHeight()
{
return this.height;
}
public int[] getRData()
{
return this.rData;
}
public int[] getGData()
{
return this.gData;
}
public int[] getBData()
{
return this.bData;
}
}
[/code]

当使用up_load.jsp页面时 出现错误
提示 useBean使用的类不可用……弄了一下午,头都大了 - -



/jsp:useBean 你的pic 这个类不可用。因为你还加上
[code="java"]/bean:define[/code]

其中: PicRgb 这个类的方法名要不能带参数,默认为getXXX(). 其中XXX的第一个单词要大写。因为这是jsp:useBean 约定写法。

demo.jsp:
[code="java"]/jsp:useBean
/bean:define


insert

id: /html:text
sname: /html:text
price: /html:text
acount: /html:text
html:submitsubmit/html:submit
/html:form

<table border='1'>
        <tr>
            <td>
                id
            </td>
            <td>
                sname
            </td>
            <td>
                price
            </td>
            <td>
                acount
            </td>
        </tr>
        <logic:iterate id="stock" name="stockList">
            <tr>
                <td>
                    <bean:write name="stock" property="id" />
                </td>
                <td>
                    <bean:write name="stock" property="sname" />
                </td>
                <td>
                    <bean:write name="stock" property="price" />
                </td>
                <td>
                    <bean:write name="stock" property="acount" />
                </td>
            </tr>
        </logic:iterate>
    </table>
</center>


/html:html
[/code]
[code="java"]public class StockDao {
private Access access;
// private Stock stock;
private ResultSet rs;
private Connection conn;
public static void main(String[] args) {
System.out.println(new StockDao().getFindAllStock());

}

public List getFindAllStock(){
    access=new Access();
    List list = new ArrayList();
    String sql="select * from stock";
    System.out.println(sql);
    try {
        rs=access.query(sql);
        while(rs.next()){
            Stock stock=new Stock();
            stock.setId(rs.getString(1));
            stock.setSname(rs.getString(2));
            stock.setPrice(rs.getString(3));
            stock.setAcount(rs.getString(4));
            list.add(stock);
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return list;
}[/code]