[JAVA] Die Geschichte, dass der Anforderungsparameter aus der iPhone-Anwendung mit dem Servlet nicht erfolgreich abgerufen werden konnte

Als ich selbst eine iPhone-App erstellt habe, habe ich den Unterschied zwischen getAttribute () und getParameter () nicht verstanden. Ich konnte die Anfrage von der App mit dem Servlet nicht erhalten, daher hinterlasse ich sie als Notiz.

Das Ereignis, das diesmal aufgetreten ist, ist wie folgt.

Anfrage von iPhone App senden     ↓ Vom Servlet empfangen (Das Servlet ist erreicht, aber die Parameter in der Anforderung können nicht abgerufen werden.)

Ursache

Ich habe nicht versucht, den Wert mit request.getAttribute abzurufen. Es scheint, dass Sie es mit getParameter bekommen müssen. .. ~~ (Jsp war völlig blind, weil es mit getAttribute erhalten werden konnte) ~~ 2020.05.22 Nachtrag ↑ Ich konnte es nicht bekommen. Es scheint, dass ich süchtig danach war, weil setAttribute und getAttribute in erster Linie durcheinander gebracht wurden. .. Ich habe auf dieser Seite noch einmal studiert. → getAttribute () -Methode.

Der detaillierte Inhalt wurde auf dieser Seite beschrieben. [・ Unterschied zwischen getAttribute () und getParameter ()](https://www.it-swarm.dev/ja/java/difference zwischen getattribute () und getparameter () / 971401730 / "Unterschied zwischen getAttribute () und getParameter () der Unterschied")

Überprüfung

Ich habe versucht, mit einem Beispielprogramm zu überprüfen, um das Verständnis zu vertiefen. Dies ist ein Beispielprogramm, das die im textField des iPhone auf der Konsole eingegebene Zeichenfolge anzeigt.

・ IPhone-Bildschirm

input.jpeg  result.png

Ergebnis##

・ Konsolenbildschirm

コンソール結果.png Immerhin war es nicht möglich, es mit getAttribute zu bekommen

Quelle##

** ・ iPhone-Bildschirm (Eingabebildschirm) **

ViewController


import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var testField: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    
    //Wird ausgeführt, wenn die Sendetaste auf Servlet gedrückt wird
    @IBAction func goServlet(_ sender: Any) {
        self.performSegue(withIdentifier: "goResultView", sender: nil)
    }
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        
        print("Vorbereitung startet den Betrieb")
        //URL festlegen
        guard let req_url = URL(string: "http://localhost:8080/Test/TestServlet")
            else{return}
        print("URL-Set abgeschlossen")
        
        //Deklarieren Sie die für die Anfrage erforderlichen Informationen
        var req = URLRequest(url: req_url)
        print("Antragserklärung")
        //Geben Sie den POST an
        req.httpMethod = "POST"
        //Stellen Sie die POST-Daten auf BODY ein
        req.httpBody = "test=\(self.testField.text!)".data(using: .utf8)
        
        //Sitzung erstellen
        let session = URLSession(configuration: .default,delegate: nil, delegateQueue: OperationQueue.main)
        print("Sitzung erstellen")

                //Anfrage als Aufgabe registrieren
                let task = session.dataTask(with: req, completionHandler: {
                    (data, response ,error) in
        

                })
                //Anfrage senden
                task.resume()
            }
   
}

** ・ iPhone-Bildschirm (Ergebnisbildschirm) **

** ・ Java Servlet **

TestServlet


package servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class testServlet
 */
@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public TestServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub

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

		System.out.println("Erreichen Sie die POST-Methode des Servlets");
		System.out.println("Bei Empfang durch getAttribute:" + "Die von der iPhone App gesendete Zeichenfolge lautet" + request.getAttribute("test") + "ist.");
		System.out.println("Bei Empfang durch getParameter:" + "Die von der iPhone-App gesendete Zeichenfolge lautet" + request.getParameter("test") + "ist.");
	}

}

Recommended Posts

Die Geschichte, dass der Anforderungsparameter aus der iPhone-Anwendung mit dem Servlet nicht erfolgreich abgerufen werden konnte
Die Geschichte, dass das Servlet nicht in die Java-Webanwendung geladen werden konnte
Die Geschichte, dass das erzwungene Update nicht implementiert werden konnte
Das Problem, dass der Test nicht über die Befehlszeile mit Spring-Boot-Starter-Test ausgeführt werden konnte, wurde behoben
Der Fall, dass @Autowired in JUnit5 nicht verwendet werden konnte
Ein Memo über den Fall, dass das Einfügen mit Spring Data JDBC nicht durchgeführt werden konnte
Die Geschichte des Anhaltens, weil der Schienentest nicht durchgeführt werden konnte
Entspricht "Fehler, dass die Basisauthentifizierung nicht bestanden wird" im Testcode "Die Geschichte, die nicht gemacht werden konnte".
[Java] Die Geschichte, dass das erwartete Array nicht von der String.split-Methode erhalten wurde.
Nachdem ich das Montyhall-Problem mit Ruby überprüft hatte, war es eine Geschichte, die ich gut verstehen konnte und die ich nicht gut verstand
Eine Geschichte, die unter einem Raum litt, der nicht verschwindet, selbst wenn er mit Java beschnitten ist
Über den Fall, dass ("b" .. "aa") nicht in Ruby Range verwendet werden konnte
Die Geschichte, die ich nach der Installation mehrerer Java unter Windows nicht erstellen konnte
[Spring Boot] Die Geschichte, dass die Bean der Klasse mit der Annotation ConfigurationProperties nicht gefunden wurde
Die Geschichte, dass die vom Java-Konstruktor aufgerufene Methode zur Variableninitialisierung nicht überschrieben werden sollte