我正在为Tomcat服务器上用.jsp技术编写的软件开发一个插件。
开发主要软件的软件公司(我只编写一个插件来管理该软件的日历事件),告诉我最好不要修改web.xml文件和其他配置文件。 事先,我没有访问(因而无法修改)Web应用程序的源代码。我只能添加jsp页面和.jars。
我可以将.jsp页面以及.js或.css文件放在前端的WEB-INF文件夹中。 我还可以访问WEB-INF / lib目录,使用我的后端逻辑为后端库添加我的.jar文件。
我有以下问题:
在这种情况下,我需要通过jquery.ajax方法从我的FrontEnd.jsp页面调用我的.jar库中的函数。我怎样才能做到这一点?
我应该这样做:
FrontEnd.jsp (调用jquery.ajax(传递方法调用))
- > Backend.jsp (读取request.getParameter(方法)并在BackEndLibrary.jar中调用相应的方法)
- > - > .jar库(执行服务器端代码并将结果返回到Backend.jsp)
< - Backend.jsp (获取响应并将其序列化为JSON对象)
< - < - FrontEnd.jsp(通过jquery.ajax方法获取JSON对象)
示例:
的 FrontEnd.jsp 的
$("#click").click(function () {
event= $("#event").val();
date = $("#date").val();
methodBackEnd = "getEventByDate";
// call the ajax backend jsp passing the BackEnd Method to invoke
$.ajax({
type: "POST",
url: "BackEnd.jsp",
data: "{'event':'" + event + "','date':'" + date + "','methodBackEnd':'" + methodBackEnd + "'}",
contentType: "application/json",
async: false,
success: function (data) {
$("#response").html(data.d);
}
});
});
它称之为 的 BackEnd.jsp
<!-- this is the import of my .jar library -->
<%@page import="com.xyz.eventmanagement.*"%>
switch (request.getParameter("methodBackEnd").toString()){
case "getEventByDate":
// call getEventByDate method in the .jar and return a JSON object to the frontend
break;
case "getEventByDescription":
// call getEventByDescription method in the .jar and return a JSON object to the frontend
break;
default:
// don't call anything
break;
}
您认为这是正确的吗?有不同的方法来实现这一目标吗?我知道这有点奇怪,但我无法修改(例如)web.xml来更改url-patterns。 谢谢。