Eclipse ';esapi';在WebSphere7中未定义

Eclipse ';esapi';在WebSphere7中未定义,eclipse,installation,websphere-7,esapi,Eclipse,Installation,Websphere 7,Esapi,一直在遵循针对Eclipse的esapi4java-core-2.0-install-guide.pdf,并将其应用到WebSphere7.5环境中 步骤1-我在库中添加了esapi.jar(项目>属性>Java构建路径>库选项卡>添加外部jar) 步骤2-我在计算机上的文件夹中找到了esapi&validation.properties文件 步骤3-我选择为所有运行配置(Windows>首选项>Java>已安装的JRE)添加esapi。我突出显示了WebSphereApplicationSer

一直在遵循针对Eclipse的esapi4java-core-2.0-install-guide.pdf,并将其应用到WebSphere7.5环境中

步骤1-我在库中添加了esapi.jar(项目>属性>Java构建路径>库选项卡>添加外部jar)

步骤2-我在计算机上的文件夹中找到了esapi&validation.properties文件

步骤3-我选择为所有运行配置(Windows>首选项>Java>已安装的JRE)添加esapi。我突出显示了WebSphereApplicationServerV7.0JRE,选择了“编辑”,并将esapi.jar添加到该库列表中。在同一个表单上,我将-Dorg.owasp.esapi.resources=“/path/to/.esapi”参数添加到默认VM参数提示符,即esapi&validation.properties文件所在的路径

以下是JSP页面上失败的代码:

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ page import="java.net.*" %>

<script type="text/javascript" language="javascript">

function validateForm()
{

    var userURL = "http://www.google.com";
    var isValidURL = ESAPI.validator().isValidInput("URLContext", userURL, "URL", 255, false); 
    if (isValidURL) {
        alert("true");
    } else {
    alert("false");
    }
}

</script>

函数validateForm()
{
var userURL=”http://www.google.com";
var isvalidull=ESAPI.validator().isValidInput(“URLContext”,userURL,“URL”,255,false);
如果(IsValidul){
警惕(“真实”);
}否则{
警告(“假”);
}
}
在执行这段代码时,我得到一个错误: “ESAPI”未定义(发生在var isValidURL语句上)


我遗漏了什么?

我看不出您在jsp中导入了esapi

试试这个:

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ page import="java.net.*, org.owasp.esapi.ESAPI, org.owasp.esapi.Validator" %>


<script type="text/javascript" language="javascript">

function validateForm()
{

    var userURL = "http://www.google.com";
    var isValidURL = <% ESAPI.validator().isValidInput("URLContext", userURL, "URL", 255, false); %>
    if (isValidURL) {
        alert("true");
    } else {
    alert("false");
    }
}

</script>
ESAPI不是一个
JavaScript
库,这是一个严重的错误。此呼叫应如下所示:

var isValidURL = <% ESAPI.validator().isValidInput("URLContext", userURL, "URL", 255, false); %>
var isvalidull=

一般来说,如上所述,您希望在将使用此jsp作为输入的控制器上执行此验证,而不是在jsp本身上。(Scriptlet很慢,应该避免。)

我添加了import语句-谢谢-但仍然收到相同的错误。由于安装说明不清楚(关于将VM参数分配给哪个JRE,我将其任意分配给WebSphere Application Server v7.0 JRE),因此我还尝试在管理控制台>应用程序服务器>(我的服务器)>Java和流程管理>流程定义>Java虚拟机中设置通用VM参数。这也没有什么区别。我尝试在server.xml中添加systemproperties以指向这两个.properties文件,但仍然不起作用。想法?你得到的是堆栈跟踪还是浏览器错误?如果是堆栈跟踪,请将其添加到问题中。如果是从浏览器,请将您的作业修改为
isvalidul
avgvstvs-您的更正确实解决了我报告的问题-谢谢。现在我有了一个新的问题。已找到ESAPI.properties,但我收到“在应用程序(myapp)EAR中的servlet/WEB-INF/tiles组件/frm/main.jsp的服务方法之一中创建的未捕获异常。创建的异常:com.ibm.websphere.servlet.error.ServletErrorReport:java.lang.NoClassDefFoundError:org.apache.commons.fileupload.ProgressListener”。我确实下载了org.apache.commons.fileupload.jar并将其添加到EAR的依赖项中,但这并没有解决它。缺少什么?您想要的确切库就在这里:我将确保该库确实进入了服务器的类路径。如果您使用的是maven/gradle,您可能需要在构建之前运行“清理”。
var isValidURL = <% ESAPI.validator().isValidInput("URLContext", userURL, "URL", 255, false); %>