java中执行JS脚本
package 测试包; import javax.script.*; public class SSSSSSSSS { public SSSSSSSSS() { // TODO Auto-generated constructor stub } public static void main(String[] args) { // TODO Auto-generated method stub ScriptEngineManager sem=new ScriptEngineManager(); ScriptEngine se=sem.getEngineByName("javascript"); try{se.eval("var a=3;var b=4;print(a+b)"); //执行js代码 }catch(Exception e){e.printStackTrace();} } }
补充:今天在后台想对URL进行编码,URL中有参数
String url = "http://www.baidu.com?param=中国";
System.out.println(URLEncoder.encode(url));
结果: (对一些特殊字符,比如// ? & 也进行转义)
http%3A%2F%2Fwww.baidu.com%3Fparam%3D%E4%B8%AD%E5%9B%BD
于是想到在Java中调用JS的encodeURI()方法:
package cn.xm.exam.test; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class PlainTest { private static final Logger LOGGER = LoggerFactory.getLogger(PlainTest.class); public static void main(String[] args) { String url = "http://www.baidu.com?param=中国"; System.out.println(encodeURI(url)); } public static String encodeURI(String url) { if ("".equals(url)) { return ""; } ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine se = sem.getEngineByName("javascript"); String jsCommand = "encodeURI('" + url + "');"; LOGGER.debug("jsCommand -> {}", jsCommand); try { String result = (String) se.eval(jsCommand); // 执行js代码 return result; } catch (Exception e) { LOGGER.error("encodeURI error,jsCommand ->{}", jsCommand, e); return ""; } } }
结果:
http://www.baidu.com?param=%E4%B8%AD%E5%9B%BD
【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix