繁体   English   中英

使用AJAX在JSP中调用Servlet URL

[英]Servlet URL call in JSP using AJAX

感谢有人可以协助我。 我已经编码了一个servlet(它的http url)。 我将需要使用Ajax访问JSP中的servlet来获取数据。 有人可以给我打电话怎么获得这个?

下面的url链接用于示例。

$.ajax({
                type: 'GET',
                data : {  },
                success: function(data) {
                    console.log(data);     
                     });

是关于ajax及其使用方法的少量信息。

这是带有json文件的示例ajax请求代码,

$.ajax({
            url : 'your_servlet_url',
            type : 'POST',
            dataType : 'json',// 
            data : {
                var yourVariable : jsonData // jsonData is jsonFormated data
            },
            contentType : 'application/json',
            complete : function(response) {
                 console.log(response);  
                }

            }
        });

在servlet中,获取json数据,例如

JSONObject jObj = new JSONObject(request.getParameter("yourVariable"));
String myIndividualData = jObj.get("myIndividualDataFromJsp").toString().trim();

您可以像这样检索json数据。

ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(dataYouWantToSend);
resp.getWriter().write(jsonString);

数据中的内容:{}是要发送到servlet的数据。 这就是使用ajax处理json的方式,可能有很多不同的方法,因为您没有指定哪个数据时间,也不要忘记添加json jar, 是链接。

Parlad强调了AJAX设计中的一个重要的通用做法是XML已被JSON取代(因此,我们现在是否实现AJAJ?)。

但是对于您的问题,您可能需要将重点放在更高一点。 如果这确实是AJAX请求,那么您可能不希望将服务实现为JSP。 JSP是动态网页的模板框架。 即使对于简单的hello world连接测试,也很容易编写脚本以返回静态内容。

最好的实现是真正的servlet。

花一些时间在这里阅读:

这是一个样本servlet,它对于理解如何处理请求很有用。

package com.reallysimpleservice.web;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.Map;
import java.util.concurrent.*;

import javax.naming.Context;
import javax.naming.InitialContext; 
import javax.naming.NamingException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class servAjax
*/
//@WebServlet(name = "ServAjax", urlPatterns = { "/write/*", "/read/*" })
public class SimplyServed extends HttpServlet {
private ServletContext servContext;
private ServletConfig config;

/**
 * @see HttpServlet#HttpServlet()
 */
public SimplyServed() {
    super();
}

public void init()  throws ServletException
{
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request,response);
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter responseOut = response.getWriter();

System.out.println("SimplyServed");

this.servContext = this.getServletContext();

 System.out.println("<Begin>");

 System.out.println("request.getParameter(\"whom\") = "+request.getParameter("whom")+"<br>");        

 System.out.println("servContext.getInitParameter(\"jdbcURL\") = "+servContext.getInitParameter("jdbcURL")+"<br>");
 System.out.println("servContext.getInitParameter(\"dataService\") = "+servContext.getInitParameter("dataService")+"<br>");
 System.out.println("request.getAttributeNames().hasMoreElements() = "+request.getAttributeNames().hasMoreElements()+"<br>");
 if(request.getAttributeNames().hasMoreElements()) {
     System.out.println("request.getAttributeNames().nextElement() = "+request.getAttributeNames().nextElement()+"<br>");
 }
 System.out.println("request.getHeaderNames().hasMoreElements() = "+request.getHeaderNames().hasMoreElements()+"<br>");
 Enumeration<String> hnames = request.getHeaderNames();
 String hname = "";
 while(hnames.hasMoreElements()) {
        hname = (String) hnames.nextElement();
        System.out.println("request.getHeaderNames().nextElement() = "+hname+"<br>");
        System.out.println("request.getHeader("+hname+") = "+request.getHeader(hname)+"<br>");
 }   
 System.out.println("request.getAuthType() = "+request.getAuthType()+"<br>");
 System.out.println("request.getCharacterEncoding() = "+request.getCharacterEncoding()+"<br>");
 System.out.println("request.getContentLength() = "+request.getContentLength()+"<br>");
 System.out.println("request.getContentType() = "+request.getContentType()+"<br>");
 System.out.println("request.getContextPath() = "+request.getContextPath()+"<br>");
 System.out.println("request.getRequestedSessionId() = "+request.getRequestedSessionId()+"<br>");
 System.out.println("request.getRequestURI() = "+request.getRequestURI()+"<br>");
 System.out.println("request.getLocalAddr() = "+request.getLocalAddr()+"<br>");
 System.out.println("request.getLocalName() = "+request.getLocalName()+"<br>");
 System.out.println("request.getLocalPort() = "+request.getLocalPort()+"<br>");
 System.out.println("request.getMethod() = "+request.getMethod()+"<br>");
 try {
    System.out.println("request.getPart() = "+request.getPart("mime-type")+"<br>");
} catch (IllegalStateException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} catch (ServletException e) {
    e.printStackTrace();
}
 System.out.println("request.getPathTranslated() = "+request.getPathTranslated()+"<br>");
 System.out.println("request.getPathInfo() = "+request.getPathInfo() +"<br>");
 System.out.println("request.getProtocol() = "+request.getProtocol()+"<br>");
 System.out.println("request.getQueryString() = "+request.getQueryString()+"<br>");
 System.out.println("request.getRequestedSessionId() = "+request.getRequestedSessionId()+"<br>");
 System.out.println("request.getServletPath() = "+request.getServletPath()+"<br>");
 System.out.println("request.isRequestedSessionIdFromCookie() = "+request.isRequestedSessionIdFromCookie()+"<br>");
 System.out.println("request.isRequestedSessionIdFromURL() = "+request.isRequestedSessionIdFromURL()+"<br>");
 System.out.println("request.isRequestedSessionIdValid() = "+request.isRequestedSessionIdValid()+"<br>");
 System.out.println("request.isSecure() = "+request.isSecure()+"<br>");
 System.out.println("request.getSession() = "+request.getSession()+"<br>");
 System.out.println("request.getUserPrincipal() = "+request.getUserPrincipal()+"<br>");
 System.out.println("request.isAsyncStarted() = "+request.isAsyncStarted()+"<br>");
 System.out.println("request.isAsyncSupported() = "+request.isAsyncSupported()+"<br>");
 System.out.println("</End>");


String resourceServlet = "";
String resourcePath = "";
String whom="";

resourceServlet = request.getServletPath();
resourcePath = request.getPathInfo();
whom=request.getParameter("whom");

responseOut.print("Hello "+whom);

   }

}

和Java脚本来调用它。 使用全局事件处理程序-因此,用于处理响应的替代示例。

<script type="text/javascript" src="ScriptLibrary/jquery-1.10.2.js"></script>
<script type="text/javascript" src="ScriptLibrary/jquery.json-2.4.min.js"></script>

<script>
var objCounter;

function ajaxReq(ajaxQuery, mimeType, serv, path){
  // confirm("ajaxQuery"+ajaxQuery);
  // confirm("mimeType"+mimeType);
  // confirm("serv"+serv);
  //  confirm("path"+path);
var slash = "/";
if (typeof serv == "undefined"){serv="";path="";slash="";}
if (typeof path == "undefined"){path="";slash="";}
if (serv == ""){path="";slash="";}
if (path == ""){slash="";}
var ajaxHREF = serv+slash+path;

$.ajax({
    url: ajaxHREF,
    type: "post",
    data: ajaxQuery,         
    beforeSend: function ( xhr ) {
        xhr.overrideMimeType(mimeType);
        },
    success: function(response, textStatus, jqXHR){ 
        },         
    error: function(jqXHR, textStatus, errorThrown){             
        console.log("JSQL ajax error: " + textStatus + ", " + errorThrown);
        console.log(jqXHR.responseText);
        }, 
    complete: function(){
        }
    });     
}


function getGreeting() {
    //var mimeType = "application/xml";
      //var mimeType = "text/html";
    //var mimeType = "application/json";
    //var mimeType = "image/svg+xml";
      var ajaxQuery =  'whom='+$('#helloWhom').find('.whom').val();
  ajaxReq(ajaxQuery, mimeType, 'simply', 'served');
}

$(document).ajaxSuccess(function(event, xhr, settings) {
if (typeof settings.data == 'undefined') {return false;}
if (typeof settings.mimeType == 'undefined') {return false;}
    var query = settings.data;
    var mimeType = settings.mimeType;
    if (query.match(/whom/)){
        if(mimeType.match(/application\/xml/)){
        }
        if(mimeType.match(/text\/html/)){
            $('#divGreeting').text(xhr.responseText);
            }
        if(mimeType.match(/application\/json/)){
            }
        if(mimeType.match(/image\/svg\+xml/)){
            }
    }
});
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM