gpt4 book ai didi

ajax 调用 servlet 并重定向到 jsp

转载 作者:行者123 更新时间:2023-12-02 07:03:14 27 4
gpt4 key购买 nike

在下面的代码中,我想通过 ajax 调用一个 servlet,然后我将数据从 servlet 重定向到 jsp。对 servlet 的 ajax 调用工作正常,但问题是重定向到 jsp 页面未显示在浏览器中,并且当我使用没有 ajax 的 javascript 代码时,显示相同的 jsp 页面。

jsp文件中的javascript ajax代码:

function generate(){
...
...
var url="RedirectServlet";
var ajax=new AJAXInteraction(url,"RedirectServlet");
var param ="FD="+FD+"&TD="+TD+"&actionid="+status+"&usercode="+usercode+"&action=reports"+"";
ajax.send(param);

....
}
function AJAXInteraction(url, actionType) {
this.url = url;

var req = init();
var actionRequested = actionType;
req.onreadystatechange = processRequest;
function init() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
}
}

function processRequest () {
if (req.readyState == 4) {
if (req.status == 200) {
if(actionRequested=="TestDelegation") {
PostProcess1(req.responseXML);
}

}
}
}
this.send = function(param) {
req.open("POST", url, true);

req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

req.send(param);


}
}//end of AJAX Interaction object.

Servlet 代码:

  protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
System.out.println("calling doPost() ");

response.setContentType("text/html;charset=WINDOWS-1256");
String action=request.getParameter("action");
System.out.println(action);

if(action.equals("reports")){
System.out.println("inside reports");



//Getting values from Reports_arb.jsp
String Fromdate=request.getParameter("FD");
String Todate=request.getParameter("TD");
String status=request.getParameter("actionid");
String usercode=request.getParameter("usercode");

//placing given values in a session


request.setAttribute("FD", Fromdate);
request.setAttribute("TD", Todate);
request.setAttribute("actionid", status);
request.setAttribute("usercode", usercode);


//Redirecting to showReport_arb.jsp
//response.sendRedirect("showReport_arb.jsp");

ServletContext sc = getServletContext();
sc.getRequestDispatcher("/sample.jsp").forward(request, response);

最佳答案

您需要了解以下事实:当您从 ajax 发送 http 请求时,这意味着您在单独的线程中发送请求,而不是在主线程(您发送请求的页面本身)中发送请求。所以 servlet 的重定向不会反射(reflect)在客户端。为了实现这一点,发回您要重定向到的 URL 作为对请求的响应,并且在 ajax 的成功方法上只需使用 java 脚本 window.location(URL);

在 servlet 中

JSONObject jobj = new JSONObject()
String urlToRedirect = "test.jsp";
jobj.put("url",urlStr);
response.getWriter().write(jobj.toString());

在客户端

$.ajax({
url: 'servletName',
data: {
userID: selectedID
},
type: 'post',
success: function(data){
window.location = data.url;
}

});

关于ajax 调用 servlet 并重定向到 jsp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16870018/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com