如何在JavaScript中使用JSP标记?

时间:2010-01-25 10:29:52

标签: javascript jsp

如何在JavaScript文件中使用JSP标记?

有什么办法吗?

5 个答案:

答案 0 :(得分:5)

JSP是一种在服务器端运行的视图技术,您可以使用它来编写HTML / CSS / JS等模板文本。您可以使用JSP taglibs和EL来控制页面流和使用Java代码动态输出。这也涉及JavaScript内容/输出。 JSP运行后,它基本上生成一个HTML页面并将其发送到客户端。您可以使用JSP动态输出后端数据,就好像它是JavaScript变量一样。例如:

<script>
    var foo = '${someBean.someProperty}';
</script>

一旦HTML页面(内置CSS / JS)到达客户端(右键单击页面和视图源,您将看不到任何Java / JSP代码行),然后HTML将开始被解释, CSS将开始应用,JS将开始执行。客户端没有Java / JSP代码的方法。如果您在客户端中查看生成的源,上面的示例现在将如下所示:

<script>
    var foo = 'somePropertyValue';
</script>

这样JavaScript就可以即时访问服务器端变量。

现在反过来了;让JavaScript访问/调用Java / JSP代码的唯一方法是实际向服务器端发送HTTP请求。这可以通过以下几种方式完成:执行window.location执行同步GET请求,执行form.submit()执行同步GET或POST请求,或执行XMLHttpRequest#send()执行异步请求(也称为Ajax)。

或者您也可以让JavaScript设置表单的(隐藏)输入字段,以便在用户提交表单时“自动”使用表单提交。无论哪种方式,服务器端的Java / JSP代码都能够以通常的请求参数方式访问JavaScript控制的值。

要了解有关Java / JSP和JavaScript之间隔离墙的更多信息,您可能会发现this article非常有用。

答案 1 :(得分:2)

当我想在客户端暴露的会话或上下文中有值时,我想知道这一点。我用javascript mime类型创建一个jsp文件,它只包含全局变量值。然后我将其包含在页面顶部,并在必要时重用这些值。

例如:

**globalVar.jsp** 

var ctxPath = "<%=request.getContextPath()%>";

**script.js**

ajaxURL = ctxPath + "/path/to/call?param=value";

您甚至可以将其命名为outlined here

答案 2 :(得分:1)

是的,您可以使用JSP生成JavaScript以发送到浏览器。只需将<script>标记指向一个URL,该URL指向一个JSP页面,该页面将响应的MIME类型设置为“text / javascript”。

不,您不能在浏览器中使用JavaScript中的JSP标记。 JSP是一种服务器端技术,这意味着必须在服务器上完成处理。

答案 3 :(得分:1)

@BalusC回答解释什么是服务器端和客户端编程。但是,我想强调一点,如果你真的想在jsp中运行javascript,那么你可以给它文件扩展名.jsp而不是.js,因为确定文件是否是javascript文件是MIME媒体类型。您可以使用以下命令从JSP设置MIME:

<%@ page contentType="text/javascript" %>

现在您可以在jsp中使用javascript,如:

var someMessage = "${someMessage}"
var anotherMessage = "${anotherMessage}"/>"

现在,您可以直接链接到它:

<script type="text/javascript" src="/script.jsp"></script>

答案 4 :(得分:0)

您可以轻松地使用java标记分配给稍后在javascript代码中调用的java变量。

<% String name="Peter" %>

然后在javascript ..

<script type="text/javascript">

var _name =&lt;%= name%&gt;