The type javax.servlet.jsp.PageContext cannot be resolved.错误

问题遇到的现象和发生背景

做smartupload上传图片的时候一直出现The type javax.servlet.jsp.PageContext cannot be resolved.错误。按照网上的说法导入了包也不行,请问是怎么回事呢?(代码应该没错)

问题相关代码,请勿粘贴截图
upload_do.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

<%@ page import="java.text.*"%>
<%@ page import="com.jspsmart.upload.SmartUpload" %>
<%@ page import="com.jspsmart.upload.Request" %>
<%@ page import="com.jspsmart.upload.File" %>
<html>
<head><title>处理上传的文件</title></head>
<body>
<h2>处理上传的文件</h2>
<hr>
<%
    /*******************************************************/
    /*     该实例中尽可能多地用到了一些方法,在实际应用中            */
    /*     我们可以根据自己的需要进行取舍!                         */
    /*******************************************************/
    // 新建一个SmartUpload对象,此项是必须的
    SmartUpload myupload = new SmartUpload();
    // 初始化,此项是必须的
    myupload.initialize(pageContext);
    // 限制每个上传文件的最大长度
    myupload.setMaxFileSize(1024*1024);
    // 限制总上传数据的长度
    myupload.setTotalMaxFileSize(5*1024*1024);
    // 设定允许上传的文件(通过扩展名限制)
    myupload.setAllowedFilesList("doc,txt,jpg,gif");
    // 设定禁止上传的文件(通过扩展名限制)
    myupload.setDeniedFilesList("exe,bat,jsp,htm,html");

    try{
        myupload.upload();  //上传文件,此项是必须的
        int count = myupload.getFiles().getCount();    //统计上传文件的总数
        Request myRequest = myupload.getRequest();  //取得Request对象
        String rndFilename,fileExtName,fileName,filePathName,memo;
        Date dt = null;
        SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        for (int i=0;i<count;i++){//逐一提取上传文件信息,同时可保存文件
            File file = myupload.getFiles().getFile(i);    //取得一个上传文件
            if (file.isMissing()) continue;    //若文件不存在则继续
            fileName = file.getFileName();//取得文件名
            filePathName = file.getFilePathName(); //取得文件全名
            fileExtName = file.getFileExt();// 取得文件扩展名
            dt = new Date(System.currentTimeMillis()); //取得随机文件名
            Thread.sleep(100);
            rndFilename= fmt.format(dt)+"."+fileExtName;
            memo = myRequest.getParameter("memo"+i);

            //显示当前文件信息
            out.println("第"+(i+1)+"个文件的文件信息:<br>");
            out.println("文件名为:"+fileName+"<br>");
            out.println("文件扩展名为:"+fileExtName+"<br>");
            out.println("文件全名为:"+filePathName+"<br>");
            out.println("文件大小为:"+file.getSize()+"字节<br>");
            out.println("文件备注为:"+memo+"<br>");
            out.println("文件随机文件名为:"+rndFilename+"<br><br>");
            //将文件另存,以应用的根目录作为上传文件的根目录(需确保目录存在)
            file.saveAs("/upload/" + rndFilename, myupload.SAVE_VIRTUAL);
        }
        out.println(count+"个文件上传成功!<br>");
    }catch(Exception ex){
        out.println("上传文件超过了限制条件,上传失败!<br>");
        out.println("错误原因:<br>"+ex.toString());
    }
%>
</body>
</html>

img

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

myupload.initialize(pageContext);
pageContext这个对象来自于哪里?

upload_do.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
 
<%@ page import="java.text.*"%>
<%@ page import="com.jspsmart.upload.SmartUpload" %>
<%@ page import="com.jspsmart.upload.Request" %>
<%@ page import="com.jspsmart.upload.File" %>
<html>
<head><title>处理上传的文件</title></head>
<body>
<h2>处理上传的文件</h2>
<hr>
<%
    /*******************************************************/
    /*     该实例中尽可能多地用到了一些方法,在实际应用中            */
    /*     我们可以根据自己的需要进行取舍!                         */
    /*******************************************************/
    // 新建一个SmartUpload对象,此项是必须的
    SmartUpload myupload = new SmartUpload();
    // 初始化,此项是必须的
    ServletConfig config=getServletConfig();
    myupload.initialize(config,request,response);
    // 限制每个上传文件的最大长度
    myupload.setMaxFileSize(1024*1024);
    // 限制总上传数据的长度
    myupload.setTotalMaxFileSize(5*1024*1024);
    // 设定允许上传的文件(通过扩展名限制)
    myupload.setAllowedFilesList("doc,txt,jpg,gif");
    // 设定禁止上传的文件(通过扩展名限制)
    myupload.setDeniedFilesList("exe,bat,jsp,htm,html");
 
    try{
        myupload.upload();  //上传文件,此项是必须的
        int count = myupload.getFiles().getCount();    //统计上传文件的总数
        Request myRequest = myupload.getRequest();  //取得Request对象
        String rndFilename,fileExtName,fileName,filePathName,memo;
        Date dt = null;
        SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        for (int i=0;i<count;i++){//逐一提取上传文件信息,同时可保存文件
            File file = myupload.getFiles().getFile(i);    //取得一个上传文件
            if (file.isMissing()) continue;    //若文件不存在则继续
            fileName = file.getFileName();//取得文件名
            filePathName = file.getFilePathName(); //取得文件全名
            fileExtName = file.getFileExt();// 取得文件扩展名
            dt = new Date(System.currentTimeMillis()); //取得随机文件名
            Thread.sleep(100);
            rndFilename= fmt.format(dt)+"."+fileExtName;
            memo = myRequest.getParameter("memo"+i);
 
            //显示当前文件信息
            out.println("第"+(i+1)+"个文件的文件信息:<br>");
            out.println("文件名为:"+fileName+"<br>");
            out.println("文件扩展名为:"+fileExtName+"<br>");
            out.println("文件全名为:"+filePathName+"<br>");
            out.println("文件大小为:"+file.getSize()+"字节<br>");
            out.println("文件备注为:"+memo+"<br>");
            out.println("文件随机文件名为:"+rndFilename+"<br><br>");
            //将文件另存,以应用的根目录作为上传文件的根目录(需确保目录存在)
            file.saveAs("/upload/" + rndFilename, myupload.SAVE_VIRTUAL);
        }
        out.println(count+"个文件上传成功!<br>");
    }catch(Exception ex){
        out.println("上传文件超过了限制条件,上传失败!<br>");
        out.println("错误原因:<br>"+ex.toString());
    }
%>
</body>
</html>

img

这个在哪声明的?