问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么在 js 代码中使用 jsp 标签或 Java 代码

发布网友 发布时间:2022-05-01 01:13

我来回答

3个回答

热心网友 时间:2022-04-10 15:24

JSP 标签还是很方便的,比如 Struts、Spring 等提供给我们的 JSP 标签,可以用它们来获取变量或进行一些计算。比如
struts2 的 <s:url value="/admin/unmi.action"/>
会为我们自动在前面附加上应用上下文,如实际会生成
/testsite/admin/unmi.action。还有更多更方便的标签使用,比如用标签获取到 session 或请求中的数据作为 js
的变量等。

引申此话题的,其实不光是在 JS 中使用 JSP 标签,可用 JSP 标签的地方当然可以直接写 Java 代码,即 ScriptLet 代码。

如果是在 JSP 中内嵌的 JS 代码,那当然好办,JSP 文件中能用什么标签,js 代码中也能随便用,因为 JSP 标签会先在服务端解释生成相应的 JS 代码,丢给客户端执行。

那如果是在单独的 JS 文件中想要使用 JSP 标签,该如何办呢?还直接像 JSP 那样使用标签的话,对不起 JS
文件中给你原样显示出来,因为 JS 文件不被服务器端解释。其实到现在问题也基本有了答案,要解决的问题就是要让服务端去解释你的标签,有两种方案。

一. js 文件命名为 JSP 文件,写 js 内容,其中用标签,然后用 <script src="/scripts/tags.js.jsp"></script> 把该 JSP 文件当作 JS 文件那样引入。

因为 JSP 文件会被服务端解释,所以把该 JSP 文件当作 JS 文件来写,JS 文件里应该是什么,你的 JSP
文件也应该输出什么,只是里面可以放标签,要知道它将会输出什么。用 <script> 来引入的话,页面顺理的把它认为是一段外部 JS
代码。

例如文件 /scripts/tags.js.jsp 中的内容是:

<%@ taglib prefix="s" uri="/struts-tags" %>
var currentUser = '<s:property value="#session.userName" />';
alert("currentUser: " + currentUser);

那么在某个网页中用 <script src="/scripts/tags.js.jsp"></script> 引入该文件时,上面的 JS 代码将会弹出当前 session 中的用户名来。

上面代码执行都没问题的,但是你直接浏览 http://unmi/testsite/scripts/tags.js.jsp 你看到的是挤在一团的代码,不像查看普通 JS 文件那样有清晰的换行和退格,原因是浏览器默认只认扩展名,它的 mime 类型,也就是 Content-Type text/html。要让它更像是个 JS 文件那得给它加上响应类型的设置,在 tags.js.jsp 文件第一行加上:

<%response.setContentType("text/javascript;charset=utf-8");%>

这时候对于浏览器来说,无论从哪个方向来看它都是个切切实实的 JS 文件,只扩展名不同罢了。

上面的方法实际表现是没什么问题的,不过还有两点不那么完美,第一,文件名看起来像 JSP 文件,有些令人误解;第二,在 IDE 中打开该 JSP 文件,没法应用 JS 的语法加亮,给编辑带来不少麻烦。下面的方法充分解决前面两个问题。

二. 直接在 JS 文件中使用 JSP 标签

讲下原理,不是说应用服务器端默认不解释 JS 中的标签吗,那我们可以让个别的 JS 文件同样受到服务器端的关注,不是把 js 原文直接抛给客户端,而是先解释其中的标签,或是其中的 java 代码。

Tomcat 这种应用服务器我们通常也会称它为 Servlet 容器,因为它执行的是 Servlet,JSP 自然也是 Servlet。在 %TOMCAT_HOME%/conf/web.xml 中我们可以看到实际处理 JSP 文件的 Servlet 是:

<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>

org.apache.jasper.servlet.JspServlet,所以我们可以在自己应用的 web.xml
文件中配置某些特别的文件同样由 JspServlet 来处理。比如要特别处理 /scripts/tags.js 文件,在应用的 web.xml
中只要加上:

<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/scripts/tags.js</url-pattern>
</servlet-mapping>

注意,上面是 Tomcat 6.x 或更早版中应用的 web.xml 的写法,后来 servlet-mapping 中
url-pattern 可同时写多个,加上 Tomcat 7 自身的古怪,这一设置会覆盖掉原 jsp 的设置,所以在 Tomcat 7
中应用必须配置成如下(也就是必须默认项也带上,然而列出自己的希望被当作 jsp 的 js 文件,可多个,不把 *.jsp/*.jspx
带上的话,你原有的 jsp 会当作文本文件直接展示出源码来):

<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
<url-pattern>/scripts/tags.js</url-pattern>
</servlet-mapping>

我们配置 /scripts/tags.js 要由 JspServlet 来处理,不会影响到现有的其他任何 JS 文件。

那现在的 /scripts/tags.js 可不是普通的 js 文件了,它可是具有放置 JSP 标签和写 Java
代码的超能力了,因为其中的 JSP 标签和 Java 代码首先会经由服务端来解释。它集 JS 和 JSP 于一身,另外也别忘了给该 JS
文件前面加上代码:

<%response.setContentType("text/javascript;charset=utf-8");%>

不然单独浏览它也就只是不那么好看。

无疑,这是目前我能想的最完美的一种方式了,且兼容于其他的 Servlet 容器,也不用改动公共部分的东西。/scripts/tags.js 在 JS IDE 中打开也漂亮多了,因为它就是个 JS 文件,只是被赋予了 JSP 的功能。

热心网友 时间:2022-04-10 16:42

这个是不可能的,只能通过调用接口方式

热心网友 时间:2022-04-10 18:17

JS 是嵌入在 是JSP中的,所以,在JSP中使用即是 。。。。。。。。。。。。。
怎么在 js 代码中使用 jsp 标签或 Java 代码

/testsite/admin/unmi.action。还有更多更方便的标签使用,比如用标签获取到 session 或请求中的数据作为 js 的变量等。引申此话题的,其实不光是在 JS 中使用 JSP 标签,可用 JSP 标签的地方当然可以直接写 Java 代码,即 ScriptLet 代码。如果是在 JSP 中内嵌的 JS 代码,那当然好办,JSP 文件中...

jsp页面嵌入java代码怎么写(jsp页面中java代码无效)

总的来说就是用js去发送http请求。1、写一个新的action或xxx.jsp,专门执行pdao.delpinfo(sfzh);2、用ajax,或form,或隐藏的iframe去请求这个xxx.jsp jstl标签中怎么嵌入Java代码要怎么嵌入java代码呢?jsp页面中嵌入java代码叫做小脚本,如:String str = "java";out.print(str);但是jstl本来就是...

请问如何在js中遍历jsp页面里的java代码(如List&lt;xxx&gt;),程序代码如下

if(str.length()&gt;0){ str="["+str.substring(0,str.length()-1)+"]";} 然后js里面这样var list='&lt;%=str %&gt;';list=new Function("return "+ list)();这样后list就是个和java中list差不多的对象数组了 list[i].id等价于java的list2.get(i).getId()...

jsp中不能出现java代码

因为JSP是一种视图技术,现在的视图技术有很多,JSTL算是一种,然后还有freemaker等 因为在JSP里面添加java代码为显的很混乱,后期维护不方便 如果一个项目比较小使用带java代码的JSP页面也可以,但是不推荐 这个具体的还是要看公司的要求和项目需求了~~...

单独的js文件,怎样才能使用Java代码?

它包含两个主要的部分:允许JavaScript从WEB服务器上一个遵循了AJAX原则的Servlet中获取数据.另外一方面一个JavaScript库可以帮助网站开发人员轻松地利用获取的数据来动态改变网页的内容.DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码.这样WEB开发人员就可以在JavaScript里使用Java代码就像它们...

如何在java中运行jsp页面呢?

1、首先在eclipse中新建动态网站程序。2、创建工程名称 jQuery,点击Finsh。3、在webContent下边新建一个html。4、输入名称htlloWorld。5、同样的右键新建一个file,取名js以放置用到的js文件。6、把使用到的jQuery文件放入js文件夹中。7、打开html页面。8、首先引入jQuery文件,并在代码中添加一个button...

在js中怎么获取jsp页面的值

jsp在页面上获取java参数总共有以下方法:(1)直接在URL请求后添加 如:&lt;a href="thexuan.jsp?action=transparams&amp;detail=directe")直接传递参数, 特别的在使用response.sendRedirect做页面转向的时候,也可以用如下代码: response.sendRedirect("thexuan.jsp?action=transparams&amp;detail=directe") ,可用...

如何在JavaScript中使用java类中的方法

{ var result = xmlHttp.responseText;document.getElementById("select_employees").innerHTML = result;} } 思想就是,通过HTML控件的事件调用JS的方法,在JS理通过httprequest对象的open方法调用服务器脚本--- 在服务器脚本里 你可以用javabean的方法,并且把计算结果传递给JS.曲线实现了你的思想 ...

JSP里面怎么调用java类里面的方法。

首先你写的是Javascript的代码,而Javascript是不用String声明变量,而是var 首先你得从JSP原理学起,前后台的代码本身是没有关联关系的,只是通过页面GET或POST时的参数,后台代码进行不同的处理,你需要手动实现一个请求比如action=save,后台switch request["action"]然后如果是"save",就做你的SAVE函数 ...

在JSP页面如何使用JAVA代码修改页面内容?

name&gt;sex&gt;age &lt; List list= request.getParameter("list");for(Object o :list){ &gt; &lt;%=o.getName()%&gt;&gt;&lt;%=o.getsex()%&gt;&gt;&lt;%=o.getAge()%&gt;&lt;/ &lt; }%&gt;

jsp标签使用 javascript与jsp jsp常用标签有哪些 jsp中c标签 js javascript HTML object标签jsp js和jsp能一起用吗 jsp调用js函数 jsp三个标签
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...这一夜你还会为他熬夜吗?你有什么最想对他说的? 西南大学党委宣传部主要职责 平衡车进水晒干能用吗 平衡车进水了怎么办?可以晒吗? 客厅装修需要哪些电位 遗产继承如何规定 郴州酒店有哪些 郴州最大的酒店排名,郴州市内景区酒店 郴州酒店排名前十名,郴州旅游住酒店推荐 求生欲是什么意思? 翡翠手镯太小怎么戴 翡翠手镯小了怎么戴进去 求水系、冰雪系、雨系、雾系法术或魔法招式名字,小说里的,自创的也行 在哪些情况下聘用单位可以随时单方面解除聘用合同? 我要写小说,是魔法世界,我需要几个(火系,水系,雷系,光系,飞系)的招数,要名字,好听点的! 求教大神,怎么在js文件当中写java代码? 聘用工可以随时解除合同吗 问道水系名称 一个字的 世界河流名称 机场流量控制导致航班晚点10个小时,最后航班取消,请问大家这个能索赔吗? 聘用合同怎么解除 有周杰伦的一路向北高音质分享一下吗 急帮忙起个问道名字我是水系 空中流量控制造成飞机延误4小时以上,是否可以叫航空公司赔偿? 世界上河流的名字(所有) 珍珠奶茶里的珍珠一次吃太多会有副作用吗?会不会影响消化?对胃不好... 求一个问道水系名字,带水的名字..好听有意思的!! 高人指点!!!谢谢 林俊杰直播改编周杰伦《一路向北》,你更喜欢哪个版本? 给我提供一些好听的地名和河流名! 飞机经常因为流量限制而晚点,可流量限制具体指什么呢? 请问与水有关的名字有哪些?要好听一些 《一路向北》哪看? 单独的js文件,怎样才能使用Java代码? 问道水系男名字2---6个字!大方霸气点 开展“职工小家”建设有什么重要性? 中国有名的河流的名字叫什么 在单独的js文件中如何嵌入java代码,谢谢! 请问在javascript中可不可以插入java代码 各位,js文件中怎么引入java代码 交强险季度险合法吗 js中可以调用java代码吗 求一篇银行职员(非党员)学习十七界四中全会心得 js中如何实例化java类 怎么在js调用java方法 请问给车买交强险二个季度可以 Javascript:js里面写的是java语句? 飞机因为流量管制延误到底是什么原因? 车辆交强险可以交一季度的吗 为什么飞广州的飞机大多都因为流量控制原因延迟了? 交强险可以按月购买吗 js 执行java代码问题 js 怎么调用JAVA类的方法?具体代码?