利用JQuery和Servlet实现跨域提交请求示例分享_jquery
原理: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
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";
}
}
}

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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.

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.

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.

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.

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

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,

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

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
