Heim Web-Frontend js-Tutorial 利用JQuery和Servlet实现跨域提交请求示例分享_jquery

利用JQuery和Servlet实现跨域提交请求示例分享_jquery

May 16, 2016 pm 05:00 PM
servlet

原理:JavaScript的Ajax不可以跨域,但是可以通过向本地的一个Servlet发出请求,由Servlet完成跨域。再把远程的结构返回给客户端。这样Ajax就可以跨域了。在后面,再发一个PHP版本的,请大家关注啊。下面是代码

JS代码:

注意:在Post方式时,param1和param2为向远程发送的参数值,可以有多个。

复制代码 代码如下:

//GET方式
function reqeustCrossDomainProxyGet(){
    var url = "http://www.baidu.com";//远程请求地址
    var param = {'requesturl':url,'typedata':'JSON'};
    var data = getCrossDomainProxyRemote(param,"json");
}
//Post方式
function reqeustCrossDomainProxyPost(param1,param2){
    var url = apiServer+"/api/lucene/query";
    var param = {'requesturl':url,'typedata':'JSON','param1':param1,'param2':param2};
    var data = getCrossDomainProxyRemote(param,"json");
}

/**
 * JS向本址的一个Servlet发送POST请求,所有关于远程请求的参数。
 * 在此处参POST方式发送给Servlet
 * @param param 远程请求参数
 * @param rtype JS返回类型(暂时没有用到)
 * @return
 */
function getCrossDomainProxyRemote(param,rtype){
    var url = "/cross/proxy";//Servlet的URL地址
    var returndata;
    $.ajax({
        url: url,type: 'POST',dataType: rtype,timeout: 40000,data:param, async:false,
        error: function(response,error) {alert(response.status);},
        success: function(data){returndata=data;}
    });
    return returndata;
}

Java代码:

复制代码 代码如下:

public class CorssDomainProxy extends HttpServlet {

    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        this.doPost(req, resp);    
    }

    public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        boolean requestType = false;//标记远程请求类型,默认为GET方式
        PrintWriter out = resp.getWriter();
        Enumeration keys = req.getParameterNames();//取出客户端传入的所有参数名
        ArrayList params = new ArrayList();
        String url=null;
        while (keys.hasMoreElements()){
            String key = (String) keys.nextElement();
            /**
             * 如果请求参数内有如下几种表示,这此参数不参与远程请求
             */
            if(key.equals("requesturl")){//判断参数是否是,远程请求地址
                url = req.getParameter(key);
            }else if(key.equals("typedata")){//判断请求数据类型,暂时没有用到

            }else if(key.equals("returntype")){//判断请求返回类型,暂时没有用到

            }else{
                params.add(key);//其它加入参数列表,此处为参与远程请求的参数
                requestType = true;//修改标记,表求远程请求为POST方式
            }
        }

        HttpClient client = new HttpClient();
        HttpMethod method = null;
        if(requestType){//判断请求方式,并实例化HttpMethod对象,true:POST,false:GET
            method = new UTF8PostMethod(url);
            for(String name : params){//迭代POST参数,加入到请求中
                String _value = req.getParameter(name);
                ((PostMethod)method).setParameter(name,_value);
            }
        }else{
            method = new GetMethod(url);
        }      
        client.executeMethod(method);//执行请求
        String bodystr = method.getResponseBodyAsString();//返回结果
        out.println(bodystr);//将结果返回给客户端
    }

    /**
     * 内部类,转换URL字符串为UTF-8
     * @author Administrator
     *
     */
    private static class UTF8PostMethod extends PostMethod {
        public UTF8PostMethod(String url) {
            super(url);
        }
        @Override
        public String getRequestCharSet() {
            return "UTF-8";
        }
    }

}
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Servlet-Lebenszyklus ist in mehrere Phasen unterteilt Der Servlet-Lebenszyklus ist in mehrere Phasen unterteilt Feb 23, 2023 pm 01:46 PM

Der Servlet-Lebenszyklus bezieht sich auf den gesamten Prozess von der Erstellung bis zur Zerstörung eines Servlets, der in drei Phasen unterteilt werden kann: 1. Initialisierungsphase, Aufruf der init()-Methode, um das Servlet zu initialisieren; 2. Ausführungsphase (Verarbeitungsanforderungen); Der Container fordert die Erstellung eines ServletRequest-Objekts an, das eine HTTP-Anfrage darstellt, und eines ServletResponse-Objekts, das eine HTTP-Antwort darstellt, und übergibt sie dann als Parameter an die service()-Methode des Servlets. 3. Zerstörungsphase.

Was ist ein Servlet? Was ist ein Servlet? Jan 28, 2023 am 09:51 AM

Der vollständige Name von Servlet ist „Java Servlet“, was auf Chinesisch „kleines Dienstprogramm“ oder „Dienst-Connector“ bedeutet. Es handelt sich um ein Programm, das auf einem Webserver oder Anwendungsserver ausgeführt wird. Es dient als Anfrage von einem Webbrowser oder einem anderen HTTP-Client Datenbank auf dem HTTP-Server oder die mittlere Schicht zwischen Anwendungen. Servlet zeichnet sich dadurch aus, dass es unabhängig von Plattform und Protokoll ist. Seine Hauptfunktion besteht darin, Daten interaktiv zu durchsuchen und zu generieren und dynamische Webinhalte zu generieren.

Wie implementiert Java Servlet die verteilte Sitzungsverwaltung? Wie implementiert Java Servlet die verteilte Sitzungsverwaltung? Apr 16, 2024 pm 02:48 PM

Es gibt zwei Möglichkeiten, die verteilte Sitzungsverwaltung in JavaServlet zu implementieren: 1. Sitzungsreplikation: Sitzungsdaten auf jeden Server kopieren. 2. Sitzungsverteilung: Verwenden Sie einen zentralen Speicherdienst, um Sitzungsdaten zu speichern und von mehreren Servern darauf zuzugreifen. Die spezifischen Implementierungsmethoden sind: Sitzungsreplikation konfiguriert echte Sitzungsdaten im Web.

Was sind die Anwendungsszenarien von Java Servlet? Was sind die Anwendungsszenarien von Java Servlet? Apr 17, 2024 am 08:21 AM

JavaServlet kann verwendet werden für: 1. Dynamische Inhaltsgenerierung; 3. Formularverarbeitung; 6. Sitzungsverwaltung; Beispiel: Erstellen Sie ein FormSubmitServlet, um die Formularübermittlung zu verarbeiten, indem Sie Name und E-Mail als Parameter übernehmen und an success.jsp umleiten.

Java-Technologie-Stack für die Webentwicklung: Verstehen Sie Java EE, Servlet, JSP, Spring und andere Technologien, die häufig in der Webentwicklung verwendet werden Java-Technologie-Stack für die Webentwicklung: Verstehen Sie Java EE, Servlet, JSP, Spring und andere Technologien, die häufig in der Webentwicklung verwendet werden Dec 26, 2023 pm 02:29 PM

JavaWeb-Entwicklungstechnologie-Stack: Beherrschen Sie JavaEE, Servlet, JSP, Spring und andere für die Webentwicklung verwendete Technologien. Mit der rasanten Entwicklung des Internets ist die Entwicklung von Webanwendungen im heutigen Bereich der Softwareentwicklung zu einer sehr wichtigen technischen Anforderung geworden. Als weit verbreitete Programmiersprache spielt Java auch im Bereich der Webentwicklung eine wichtige Rolle. Der JavaWeb-Entwicklungstechnologie-Stack umfasst mehrere Technologien wie JavaEE, Servlet, JSP, Spr

Java-Fehler: Servlet-Fehler, wie man sie behebt und vermeidet Java-Fehler: Servlet-Fehler, wie man sie behebt und vermeidet Jun 25, 2023 pm 06:34 PM

Servlet ist eine sehr häufig verwendete Technologie bei der Entwicklung von Java-Webanwendungen. Während des Entwicklungsprozesses treten jedoch zwangsläufig einige Servlet-Fehler auf. Das Lösen und Vermeiden von Servlet-Fehlern ist für viele Java-Entwickler zu einem Hauptproblem geworden. In diesem Artikel werden einige häufige Servlet-Fehler und ihre Lösungen basierend auf persönlichen Erfahrungen und zugehörigen Informationen vorgestellt. ClassNotFoundException Wenn wir versuchen, eine Klasse zu laden, wenn die Klasse nicht existiert oder vom System nicht darauf zugegriffen werden kann,

HttpSession-Schnittstelle im Servlet HttpSession-Schnittstelle im Servlet Sep 02, 2023 am 10:05 AM

In der Welt der Java-Webentwicklung ist das Verständnis der HttpSession-Schnittstelle der Schlüssel zum Erstellen dynamischer und reaktionsfähiger Webanwendungen. In diesem Artikel werden wir untersuchen, was die HttpSession-Schnittstelle ist, wie sie funktioniert und warum sie eine entscheidende Rolle in der Servlet-Spezifikation spielt. Was ist die HttpSession-Schnittstelle? Im Kern ist die HttpSession-Schnittstelle eine grundlegende Komponente der JavaServlet-API, die es Webentwicklern ermöglicht, die Sitzung eines Benutzers über mehrere HTTP-Anfragen hinweg zu verfolgen. Wenn ein Benutzer zum ersten Mal auf eine Webanwendung zugreift, wird eine eindeutige Sitzung erstellt, um seine Interaktion darzustellen. Diese Sitzung ermöglicht es der Anwendung, den Status zwischen Anfragen aufrechtzuerhalten und sich Informationen darüber zu merken

Wie konfiguriere ich Servlet manuell für die Ausführung in Tomcat in Java? Wie konfiguriere ich Servlet manuell für die Ausführung in Tomcat in Java? Apr 26, 2023 am 09:55 AM

1. Die Vorbereitungsarbeit ist wie folgt: Erstellen Sie zunächst jede Datei nach Bedarf Wenn Sie eine Servlet-Anwendung erstellen möchten, müssen Sie feststellen, dass die hier bereitgestellte web.xml überhaupt nicht vollständig ist. Bitte verwenden Sie den folgenden Code, um das oben genannte Servlet-Tag einzufügen // Fügen Sie hier den oben genannten Servlet-Tag-Code hinzu 2. Das Problem mit der Kodierung der kompilierten Datei ist wie oben beschrieben. Ich wollte sie zunächst kompilieren, es wurde jedoch ein Fehler gemeldet. Der Grund dafür ist, dass Javac den Quelldateicode gemäß der Kodierung Ihres Betriebssystems liest und mein Computer standardmäßig GBK verwendet , aber wir alle schreiben diese Quellcodes in Notepad, und Notepad verwendet standardmäßig UTF-8 zum Speichern

See all articles