您好我已经在我的jsp页面编写了我的javascript代码,我通过java连接url调用我的jsp,它正在执行但跳过我在页面加载时调用的javascript函数。 我无法理解为什么它没有执行我的javascript。
try {
URL myURL = new URL("http:localhost:8080/Approval.jsp?empCode=123&compCode=A");
URLConnection myURLConnection = myURL.openConnection();
myURLConnection.connect();
}
catch (IOException e) {
}
是否有任何通过连接url直接调用JavaScript。请提示?
答案 0 :(得分:0)
在Web环境中,JavaScript通常作为HTML网页的一部分包含在内,并且只在该上下文中执行。 Web浏览器通常会这样做;他们有内置的HTML和JavaScript(以及CSS等)解析源的解析器,以及在网页上下文中执行JavaScript的内置JavaScript引擎。
Java URLConnection
抽象不是Web浏览器,对HTML和JavaScript一无所知;它仅支持向URL发送请求和从URL接收响应。并且,它甚至不会这样做,因为它的connect()
方法是抽象的;它依赖于(更多)具体的子类来知道如何使用特定的协议来完成这些工作。在您的情况下,这将是HttpURLConnection
,因为您的URL使用HTTP协议。
HttpURLConnection
添加了某些HTTP功能的特定知识,例如HTTP状态代码,但它仍然对HTML和JavaScript一无所知。因此,最终结果是,虽然您的代码将正确地接收JSP在构建网页时生成的所有HTML和JavaScript,但它无法解析或执行它;就HttpURLConnection
而言,它基本上是纯文本。
您正在寻找的是用于Java的无头(无GUI)浏览器库。我建议使用HtmlUnit(http://htmlunit.sourceforge.net/),这是非常广泛使用和稳定的,可以做很多事情,包括执行JavaScript。