Java 从jsp调用jquery.ajax而不更改url模式
我正在为Tomcat服务器上用.jsp技术编写的软件开发一个插件 开发主软件的软件公司(我只编写了一个插件来管理该软件的日历事件)告诉我,最好不要修改web.xml文件和其他配置文件。 事先,我无法访问(因此无法修改)web应用程序的源代码。我只能添加jsp页面和.jar 我可以将.jsp页面以及.js或.css文件放在前端的WEB-INF文件夹中。 我还可以访问WEB-INF/lib目录,用我的后端逻辑为后端库添加我的.jar文件 我有以下问题: 在这个场景中,我需要通过jquery.ajax方法从FrontEnd.jsp页面调用.jar库中的函数。我如何才能做到这一点?Java 从jsp调用jquery.ajax而不更改url模式,java,ajax,jsp,jquery,servlets,Java,Ajax,Jsp,Jquery,Servlets,我正在为Tomcat服务器上用.jsp技术编写的软件开发一个插件 开发主软件的软件公司(我只编写了一个插件来管理该软件的日历事件)告诉我,最好不要修改web.xml文件和其他配置文件。 事先,我无法访问(因此无法修改)web应用程序的源代码。我只能添加jsp页面和.jar 我可以将.jsp页面以及.js或.css文件放在前端的WEB-INF文件夹中。 我还可以访问WEB-INF/lib目录,用我的后端逻辑为后端库添加我的.jar文件 我有以下问题: 在这个场景中,我需要通过jquery.ajax
我应该这么做: FrontEnd.jsp(调用jquery.ajax(传递要调用的方法)) -->Backend.jsp(读取request.getParameter(方法)并调用BackEndLibrary.jar中的相应方法) -->-->.jar库(执行服务器端代码并将结果返回到Backend.jsp)
您正在使用哪个版本的servlet?如果您使用servlet 3,请考虑“<代码> @ WebServlet < /COD>注释”的选项。在Servlet3.0中,您不需要修改web。xmlI将尝试进行一些测试。非常感谢。我需要在编译时添加servlet。亲爱的@PradeepKrKaushal,我试过了,但我发现web应用程序不支持3.0。我更改了应用程序的web.xml文件以支持3.0,它成功了。主要问题是我不应该修改应用程序的web.xml文件。那么我应该使用我的第一个解决方案吗?你认为这是一个好主意吗?如果只是想办法解决问题,然后你可以采用任何解决方案。但遵循正确的方法总是明智的。正确的方法是使用Servlet。是的,你是对的。我花了一些时间使用servlets 3.0,但正如我告诉您的,我无法修改主web应用程序的配置文件,因为它是一个专有应用程序。我只能将JAR添加到WEB-INF/lib目录。谢谢你的回答。
$("#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);
}
});
});
<!-- 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;
}