Wie stelle ich sicher, dass in der URL kein Parameter vorhanden ist?

7

Ich weiß, wie ich sicherstellen kann, ob ein bestimmter Parameter in der URL existiert. Ich möchte sicherstellen, dass kein Parameter in der URL vorhanden ist und nicht nur ein bestimmter. Wie kann ich das erreichen? Ich habe eine lange Liste von Parametern und es scheint ineffizient, eine Liste von Bedingungen für alle von ihnen zu haben.

Beispiel-URL ist: www.domain.com/Product/UniqueId

Da jedes Produkt über viele einzigartige Parameter verfügt, können Benutzer Produktseiten über einen eindeutigen Code, einen eindeutigen Lieferanten, einen eindeutigen Sig, einen eindeutigen Pod usw. der Produkte erreichen.

Zum Beispiel:

%Vor%

Die Fragen, die ich für relevant hielt, aber in meinem Fall nicht brauchten, waren 1 , 2 , 3 , 4

Ich muss solche Tests in JSP und nicht in Java durchführen.

    
Jack 06.11.2015, 00:37
quelle

7 Antworten

4

Nachverfolgung

Mit der neuen Anforderung, dass es in JSP getan werden muss, obwohl der Spring-Handler-Code, der in der ursprünglichen Antwort unten aufgeführt wird, ein Model-Attribut mit den relevanten Informationen hinzufügen kann, hier ist, wie das zu tun ist.

Ähnlich zwei Wege wie unten:

%Vor% %Vor%

Ursprüngliche Antwort

Sie haben spring-mvc getaggt, das heißt, Sie haben so etwas (wäre schön gewesen, wenn Sie es gepostet hätten) :

%Vor%

Hier sind zwei Möglichkeiten, nach "keine Abfrageparameter" zu suchen:

%Vor% %Vor%

Sie können diesen Link für alle Arten von Parametern überprüfen, die Spring Ihnen geben kann:
Ссылка

    
Andreas 06.11.2015, 01:08
quelle
5

Das geht mit der URI-Klasse etwas einfacher:

%Vor%

Wenn also getQuery() null zurückgibt, gibt es keine Parameter. Ansonsten gibt es.

Bezüglich Ihrer Bearbeitung: Nun, ich empfehle nicht, Code in eine JSP zu schreiben. Es ist heutzutage eine schlechte Übung.

Aber wenn Sie müssen, sieht es so aus, als könnten Sie nach allen Parametern fragen und wenn das Ergebnis 0 ist, gab es keine.

%Vor%

JSP-Code ist nicht getestet, sollte Ihnen aber die Idee geben. Sie können den booleschen noParams später im JSP-Code verwenden.

    
markspace 06.11.2015 00:43
quelle
2

Probieren Sie Ссылка .

Ich habe dir Code gegeben, um herauszufinden, ob irgendwelche Parameter in der URL übergeben wurden. Es wird nicht die Anzahl der Parameter geben ..

%Vor%     
bakki 06.11.2015 00:47
quelle
2

Nicht sicher, was Sie meinen, "um sicherzustellen, dass es keinen Parameter gibt". Sie können einfach nicht, Kunden können die URL verwenden, die sie auf Ihren Server schlagen möchten. Sie können nur basierend auf der URL-Zeichenfolge, die Ihr Servercode empfängt, verarbeiten.

Ansonsten gibt es zwei Hinweise:

  1. Versuchen Sie, die URL zu überprüfen oder zu analysieren? Wenn ja, kannst du Folgendes tun: url.indexOf ('?') & lt; 0, vorausgesetzt, url varialble hat die gesamte URL Zeichenfolge ...

  2. Siehe auch Java URL api, um eine Abfragezeichenfolge usw. zu erhalten.

SupportLocusDev 06.11.2015 02:20
quelle
2

JSP hält ein implizites Objekt ein paramValue , das zuordnet die Anfrageparameter zu einem Array. Sie können dieses Objekt und die Funktion JSTL length verwenden, um die Anzahl der Parameter direkt in zu lernen jsp, etwas wie

%Vor%

Stellen Sie sicher, dass Sie die folgenden taglibs am Anfang Ihrer jsp-Seite einfügen

%Vor%     
Master Slave 11.11.2015 06:40
quelle
2

Mit Regex können wir leicht nach Parametern suchen. Sagen wir, Sie haben die folgenden URLs:

%Vor%

Nun kann die tatsächliche URL alles sein. Wir können es als . * bezeichnen, was alles bedeutet. (Dot = ein beliebiges Zeichen, * = Null oder mehrmals. Es gibt komplexere Regexes, die nach URLs suchen, aber Sie sagten, dass Sie URLs erhalten haben, daher sind sie nicht relevant).

Nachdem Sie Ihre URL gefunden haben, möchten Sie nach Parametern suchen. Parameter haben die Syntax von:

%Vor%

Wir wollen also nach einem Fragezeichen suchen, gefolgt von einer Kombination von Schlüsseln und Werten. Die Regex wäre:

%Vor%

Dies entspricht einem Fragezeichen, gefolgt von: einem Schlüssel (. ), einem Gleichheitszeichen, einem Wert (. ) und einem möglichen & amp; (& amp ;?), 1 oder mehrmals (+)

So können Sie es in eine Methode wie folgt einfügen:

%Vor%

www.domain.com/Product/UniqueId?foo=bar würde der Regex entsprechen, und www.domain.com/Product/UniqueId würde nicht, weil Es folgt nicht die Parameter.

P.S: Der doppelte Schrägstrich vor dem Fragezeichen bezieht sich auf Java, nicht auf Regex.

Link: Regex-Checker mit folgendem Regex & amp; Beispiel

Wenn Sie es in JSP verwenden möchten, fügen Sie diese Methode einfach in ein Skript ein (das mit & lt;% begonnen wurde und mit% & gt; endet) oder an einer anderen Stelle in Ihrem Code.

    
NonameSL 15.11.2015 17:04
quelle
2

Verwenden Sie die Methoden von java.net.URI , um zu erhalten alles was du über die URL brauchst.

    
Yzgeav Zohar 17.11.2015 16:50
quelle

Tags und Links