[JAVA] L'histoire selon laquelle le paramètre de requête de l'application iPhone n'a pas pu être obtenu avec le servlet

Lorsque je créais moi-même une application iPhone, je ne comprenais pas la différence entre getAttribute () et getParameter (). Je n'ai pas pu obtenir la demande de l'application avec le servlet, je vais donc la laisser comme note.

L'événement qui s'est produit cette fois est comme ça.

Envoyer une demande depuis l'application iPhone     ↓ Reçu par le servlet (Le servlet est atteint, mais les paramètres de la demande ne peuvent pas être obtenus.)

Cause

Je n'essayais pas d'obtenir la valeur avec request.getAttribute. Il semble que vous deviez l'obtenir avec getParameter. .. ~~ (Jsp était complètement aveugle car il pouvait être obtenu avec getAttribute) ~~ 2020.05.22 PostScript ↑ Je n'ai pas pu l'obtenir. Il semble que j'aie été accro parce que setAttribute et getAttribute ont été foirés en premier lieu. .. J'ai étudié à nouveau sur ce site. → méthode getAttribute ().

Le contenu détaillé a été décrit sur ce site. [・ Différence entre getAttribute () et getParameter ()](https://www.it-swarm.dev/ja/java/difference entre getattribute () et getparameter () / 971401730 / "Différence entre getAttribute () et getParameter () la différence")

Vérification

J'ai essayé de vérifier avec un exemple de programme pour approfondir la compréhension. Il s'agit d'un exemple de programme qui affiche la chaîne de caractères saisie dans le champ textField de l'iPhone sur la console.

・ Écran iPhone

input.jpeg  result.png

résultat##

・ Écran de la console

コンソール結果.png Après tout, il n'était pas possible de l'obtenir avec getAttribute

La source##

** ・ Écran iPhone (écran de saisie) **

ViewController


import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var testField: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    
    //Exécuté lorsque le bouton d'envoi est pressé vers Servlet
    @IBAction func goServlet(_ sender: Any) {
        self.performSegue(withIdentifier: "goResultView", sender: nil)
    }
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        
        print("préparer démarre l'opération")
        //Définir l'URL
        guard let req_url = URL(string: "http://localhost:8080/Test/TestServlet")
            else{return}
        print("ensemble d'URL terminé")
        
        //Déclarer les informations requises pour la demande
        var req = URLRequest(url: req_url)
        print("Déclaration de demande")
        //Spécifiez POST
        req.httpMethod = "POST"
        //Définir les données POST comme BODY
        req.httpBody = "test=\(self.testField.text!)".data(using: .utf8)
        
        //Créer une session
        let session = URLSession(configuration: .default,delegate: nil, delegateQueue: OperationQueue.main)
        print("Créer une session")

                //Enregistrer la demande en tant que tâche
                let task = session.dataTask(with: req, completionHandler: {
                    (data, response ,error) in
        

                })
                //demande envoyée
                task.resume()
            }
   
}

** ・ Écran iPhone (écran de résultat) **

** ・ Servlet Java **

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("Accédez à la méthode POST du servlet");
		System.out.println("Lorsqu'il est reçu par getAttribute:" + "La chaîne de caractères envoyée depuis l'application iPhone est" + request.getAttribute("test") + "est.");
		System.out.println("Lorsqu'il est reçu par getParameter:" + "La chaîne de caractères envoyée depuis l'application iPhone est" + request.getParameter("test") + "est.");
	}

}

Recommended Posts

L'histoire selon laquelle le paramètre de requête de l'application iPhone n'a pas pu être obtenu avec le servlet
L'histoire selon laquelle le servlet n'a pas pu être chargé dans l'application Web Java
L'histoire selon laquelle la mise à jour forcée n'a pas pu être mise en œuvre
Le cas où @Autowired n'a pas pu être utilisé dans JUnit5
Notez que Spring Data JDBC n'a pas pu insérer
L'histoire de l'arrêt parce que le test des rails n'a pas pu être fait
Correspondant à "erreur que l'authentification de base ne réussit pas" dans le code de test "L'histoire qui n'a pas pu être faite"
[Java] L'histoire selon laquelle le tableau attendu n'a pas été obtenu par la méthode String.split.
Après avoir vérifié le problème de Montyhall avec Ruby, c'était une histoire que je pouvais bien comprendre et que je ne comprenais pas bien
Une histoire qui a souffert d'un espace qui ne disparaît pas même s'il est taillé avec Java La cause est BOM
À propos du cas où ("b" .. "aa") ne pourrait pas être utilisé dans Ruby Range
L'histoire que je n'ai pas pu construire après l'installation de plusieurs Java sur Windows
[Spring Boot] L'histoire selon laquelle le bean de la classe avec l'annotation ConfigurationProperties n'a pas été trouvé
L'histoire selon laquelle la méthode d'initialisation de variable appelée par le constructeur Java ne doit pas être remplacée