通过AJAX调用将JSP页面与Servlet doGet()方法交互

时间:2015-01-24 01:58:03

标签: java ajax angularjs servlets

正在执行下面找到的JAVA代码,通过AJAX调用从JSP页面调用servlet doGet()方法。

这是我的AJAX电话..       我将通过ng-click Angular js捕获的点击文本作为查询字符串发送到Servlet的doGet()方法。

在我的JSP文件中,

  $scope.requestFunc = function (clickData) {

       var urlquerystring =  clickData; 
       jQuery.ajax({
          type: 'GET',
          url: "/Charts/testExecution/"+"?"+ urlquerystring,

         dataType: 'html',
          success: function(respnsedata)
          {
            window.location.assign(respnsedata);    
          }
       });
  }

在我的Servlet的doGet()方法中,

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.err.println("In TestExecutionESO servlet..");


        String teamnametextfield= req.getParameter("teamnametextfield");
        System.out.println("Teamname is.."+teamnametextfield);

        try {
            dcmanager = DataCollectorManager.getInstance();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        String selectedteam= req.getQueryString();

        String testexeclistofobjectsjson = null;

        if(selectedteam!=null)
        {

            String release=selectedteam.replace("%20"," ").toString();

        testexecutionobjlist = dcmanager.getRallyDcMgr().gettestExecutionobjlist(release);
        }

        Gson gson = new Gson();
        testexeclistofobjectsjson = gson.toJson(testexecutionobjlist);

        System.out.println(testexecutionobjlist);
        System.out.println(testexeclistofobjectsjson);

        req.getSession().setAttribute("testexeclistofobjectsjson", testexeclistofobjectsjson);

        resp.sendRedirect("TestExecutionESO.jsp");

}   

完全获得查询字符串。处理完毕后,我将执行SetAttribute()并重定向到下一个JSP页面。   重定向不起作用..

这是我的错误代码,     无法加载资源:net :: ERR_TOO_MANY_REDIRECTS ..

http://10.112.81.95:9000/Charts/testExecution/TestExecutionESO.jsp ....无法加载资源:net :: ERR_TOO_MANY_REDIRECTS

请帮我解决问题.. 如何通过执行setAttribute()重定向到下一个JSP页面。??

1 个答案:

答案 0 :(得分:0)

resp.sendRedirect("TestExecutionESO.jsp");

这是您代码中的罪魁祸首。当你调用sendRedirect()时,它将发出一个302响应,其中包含新资源的location-header,URI。当浏览器看到此标头时,它将为该新URI发出新请求。

所有这一切都适用于同步请求,但是在AJAX调用的情况下,我们使用XMLHttpRequest,它不能很好地处理重定向。

我建议您使用RequestDispatcher转发到这样的JSP

RequestDispatcher rd = req.getRequestDispatcher("path-to-ur-jsp");
rd.forward(req,res);