Ich bin ein absoluter Anfänger, also kann ich etwas Schlampiges schreiben, aber bitte vergib mir. Dieses Mal habe ich beschlossen, JSP + Servlet für eine Weile auszuprobieren, damit ich das Gelernte auf einfache Weise zusammenfassen kann. Ich werde es fast als Referenz erstellen und die Geschichte von dort aus schreiben. 【Referenz】 ① Einführung in JSP & Servlet
・ Installation von Eclipse ・ Machen Sie eine einfache ・ Unterstützt japanische Eingaben · Bildschirm ・ Code hinzufügen
Es gibt auch eine aktuelle Version, aber die Referenz [https://ftp.jaist.ac.jp/pub/mergedoc/pleiades/4.6/pleiades-4.6.3-java-win-64bit-jre_20170422.zip](https: / /mergedoc.osdn.jp/index.html#/pleiades_distros4.6.html) wurde wie erläutert unter Windows 10 installiert. (Die folgenden Zahlen sind aus der obigen Referenz zitiert) ① Erstellen Sie einen Ordner wie C: \ app ② Verschieben Sie die heruntergeladene Zip-Datei ③ Ändern Sie den Dateinamen in pleiades-4.6.3.zip ④ Extrahieren Sie die ZIP-Datei ⑤ Verschieben Sie Plejaden im erweiterten Ordner nach C: \ app
Lassen Sie uns die obige Referenz simpl am einfachsten machen. Jetzt können Sie die Verzeichnisstruktur sehen und sehen, wie Sie sie verschieben. ① Wenn Sie Eclipse starten, befindet sich das Paket X-Prowler oben links. Klicken Sie mit der rechten Maustaste in diesen Bereich (innerhalb des Quadrats) ... Übergänge in der Reihenfolge in (), -Erstellen Sie ein dynamisches Webprojekt (Rechtsklick-neu-anderes-dynamisches Webprojekt-weiter) ・ Projektname; sampleWeb -Ziellaufzeit; Tomcat8 (Java8) Sie können ein sampleWeb-Projekt durch Eingabe erstellen. ② Klicken Sie diesmal mit der rechten Maustaste auf src (New-Other-Servlet-Next). -Java-Paket; sample.controller ・クラス名;HelloSample.java Sie können ein Servlet; sample.controller durch Eingabe erstellen. Dies scheint das einfachste Servlet zu sein.
Klicken Sie mit der rechten Maustaste auf sampleWeb-Run-1. Klicken Sie auf Auf Server ausführen. .. .. URL;http://localhost:8080/sampleWeb/HelloSample Sie können sehen, dass Folgendes in ausgeführt wird. Es hat auch funktioniert, wenn ich die obige URL zugewiesen und mit einem normalen Browser zurückgegeben habe.
Served at: /sampleWeb
Der Code ist unten Es ist ein Skelett, aber es funktioniert.
HelloSample.py
package sample.controller;
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;
Als nächstes gibt es eine Anmerkung, dass es sich um @WebServlet ("/ HelloSample") handelt. Gleichzeitig mit dem Kommentar scheint es das System über die Zuordnung von WebServlet ("/ HelloSample") zu informieren. Es wird aus Lit. ② zitiert. "Anmerkungen sind nicht Teil eines Programms, enthalten jedoch Informationen zum Programm. Bei der Servlet-Programmierung können Anmerkungen verwendet werden, um Zuordnungsinformationen zwischen URL-Pfaden und Servlets zu deklarieren. Mit der neuesten Version von Java EE können Sie Anmerkungen verwenden, ohne web.xml für die Zuordnung zu verwenden. Sie können wählen, ob Sie web.xml oder Anmerkungen verwenden möchten. ""
【Referenz】 ② [Java & Tomcat] Webanwendungseinstellungen (Anmerkung) * mit Beispielprogramm
/**
* Servlet implementation class HelloSample
*/
@WebServlet("/HelloSample")
public class HelloSample extends HttpServlet {
private static final long serialVersionUID = 1L;
Und im Konstruktor wird dies zuerst ausgeführt, wenn es gestartet wird. Es scheint nichts zu tun.
/**
* @see HttpServlet#HttpServlet()
*/
public HelloSample() {
super();
// TODO Auto-generated constructor stub
}
Als nächstes kommt doGet. Dies ist (Anfrage, Antwort) und es interagiert mit etwas.
/**
* @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());
}
Dann war da noch doPost. Dies ist auch (Anfrage, Antwort), um mit etwas zu interagieren. Ist es nicht dasselbe? ?? Die einzige geschriebene Funktion ist doGet (), die aufgerufen (ausgeführt) wird.
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Mit anderen Worten, dieses Servlet wird gestartet, doGet wird ausgeführt,
response.getWriter().append("Served at: ").append(request.getContextPath());
Ist umgezogen.
Wenn du kein Jsp machst, geht es schließlich gegen den Titel, also werde ich es machen. Dies ist auch alles wie in Referenz ① oben gezeigt. -Create index.jsp (Klicken Sie mit der rechten Maustaste auf die Datei WebContent-New-Other-jsp Dateiname; index.jsp Geben Sie ein und vervollständigen Sie Sie haben jetzt index.jsp direkt unter WebContent erstellt. Der Code ist unten Wir haben <% = new java.util.Date ()%> hinzugefügt, um die Zeit im Körper anzuzeigen. Außerdem lautet der Titel Hallo, Welt.
.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello, World</title>
</head>
<body>
<%= new java.util.Date() %>
</body>
</html>
Bewegen wir es jetzt auf die gleiche Weise wie zuvor. Das Folgende ist http://localhost:8080/sampleWeb/ Es wurde ausgegeben an.
Wed Apr 22 21:55:03 JST 2020
Die Verzeichnisstruktur ist wie folgt. Ich verstehe nicht wirklich, wie es funktioniert, ... Anscheinend arbeitet jeder für sich, http: // localhost: 8080 / sampleWeb / Es scheint, dass index.jsp aufgerufen wird und die Uhrzeit angezeigt wird. Auf der anderen Seite wird unter http: // localhost: 8080 / sampleWeb / HelloSample Served at: / sampleWeb angezeigt. Es scheint nicht der Titel zu sein, es sei denn, wir interagieren miteinander.
Um zwischen jsp-servelets auszutauschen, verschieben Sie zunächst index.jsp unter WEB-INF, damit es von außen nicht sichtbar ist.
"Wenn ein Client (Browser) eine Anfrage an HelloSample stellt, wird die doGet-Methode ausgeführt." Schreiben Sie also Folgendes in doGet von HelloSample.java.
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String view = "/WEB-INF/view/index.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(view);
dispatcher.forward(request, response);
}
Nachdem HelloSample.java neu geschrieben wurde, starten Sie den Server neu. Die Referenz ① oben stammt aus dem Fenster. .. Hier können Sie jedoch erneut ausführen, indem Sie mit der rechten Maustaste auf die Ausführung von sampleWeb-execute-1 auf dem Server-complete klicken. Jetzt wird die folgende Meldung angezeigt, aber der Neustart ist erfolgreich. Tatsächlich http: // localhost: 8080 / sampleWeb / HelloSample Wenn Sie url eingeben und zurückkehren, wird die vorherige Zeit angezeigt, und Sie können sehen, dass index.jsp aufgerufen und angezeigt wurde.
HTTP-Status 404- /sampleWeb/
Geben Sie den Statusbericht ein
Botschaft/sampleWeb/
Berschreibung: Die angefragte Quelle ist nicht verfügbar.
Apache Tomcat/8.0.43
Fügen Sie dem obigen doGet den folgenden Code hinzu.
//Übergeben Sie eine entsprechende Zeichenfolge an JSP
request.setAttribute("foo", "bar");
Und index.jsp wird wie folgt empfangen.
.jsp
<%= request.getAttribute("foo") %>
Starten Sie den Server daher wie oben beschrieben neu. http://localhost:8080/sampleWeb/HelloSample Wenn Sie sich ansehen, können Sie sehen, dass Folgendes angezeigt wird. Thu Apr 23 17:35:06 JST 2020 bar Mit anderen Worten, da es dahinter platziert wurde, wird die Leiste nach der Zeit angezeigt.
Zunächst wird die empfangende index.jsp wie folgt beschrieben. Wenn "
" beschrieben wird, ist es wie folgt. Ich lasse die Ergänzungen so weit..jsp
<body>
<%= new java.util.Date() %>
<%= request.getAttribute("foo") %>
<form method="post" action="./HelloSample">
Gib etwas ein: <input type="text" name="hoge">
<button type="submit">Senden</button>
</form>
</body>
Als nächstes erhält der Empfänger es diesmal mit doPost von HelloSample.java. request.getPasrameter("hoge"); Holen Sie sich den Wert mit, weisen Sie ihn dem Wert zu und geben Sie ihn an die Standardausgabe aus.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Holen Sie sich Wert aus dem Formular
String value = request.getParameter("hoge");
System.out.println(value);
doGet(request, response);
}
Wenn Sie so viel wie möglich schreiben, ohne den Code bisher zu löschen,
.jsp
<body>
<%= new java.util.Date() %>
<%= request.getAttribute("foo") %><br/>
<%= request.getAttribute("userName") %>
<form method="post" action="./HelloSample">
Gib etwas ein: <input type="text" name="name">
<button type="submit">Senden</button>
</form>
</body>
Auf der Servlet-Seite wird doPost von HelloSample.java wie folgt umgeschrieben
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Zeichencode-Spezifikation
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
request.setAttribute("userName", name);
System.out.println(name);
doGet(request, response);
}
Darüber hinaus ist doGet:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Übergeben Sie eine entsprechende Zeichenfolge an JSP
request.setAttribute("foo", "bar");
String name = (String) request.getAttribute("userName");
if (name == null || "".equals(name)) {
request.setAttribute("userName", "Guest");
}
String view = "/WEB-INF/view/index.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(view);
dispatcher.forward(request, response);
}
Führen Sie zunächst Servlet; HelloSample.java auf einem Server aus. Und wenn Sie sich die folgende URL mit einem Browser ansehen http://localhost:8080/sampleWeb/
HTTP-Status 404- /sampleWeb/
Geben Sie den Statusbericht ein
Botschaft/sampleWeb/
Berschreibung: Die angefragte Quelle ist nicht verfügbar.
Apache Tomcat/8.0.43
Und http://localhost:8080/sampleWeb/HelloSample Das folgende Bild wird angezeigt.
Thu Apr 23 21:35:55 JST 2020 bar
Guest
Gib etwas ein:Senden
Wenn Sie Folgendes eingeben und Senden drücken,
Thu Apr 23 21:35:55 JST 2020 bar
Guest
Gib etwas ein:MuAuan Übertragung
Gast geändert zu MuAuan wie unten,
Thu Apr 23 21:35:55 JST 2020 bar
MuAuan
Gib etwas ein:Senden
MuAuan wird auf die Standardausgabe ausgegeben. Sie können also sehen, dass JSP-Servlet-JSP und MuAuan übergeben wurden.
Muuwan wurde auch sicher angezeigt. Dies liegt daran, dass der Zeichencode durch den folgenden Code angegeben wird. Wenn Sie versuchen, dies zu entfernen, treten verstümmelte Zeichen auf.
//Zeichencode-Spezifikation
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
request.setAttribute("userName", name);
Sie können verstümmelte Zeichen auch mit dem folgenden Code entfernen. Laut Referenz scheint das Folgende jedoch veralteter alter Code zu sein, da dies jetzt mit dem obigen Code durchgeführt werden kann. 【Referenz】
String name = new String(request.getParameter("name").getBytes("ISO-8859-1"), "UTF-8");
request.setAttribute("userName", name);
Das nächste Mal möchte ich das Bild anzeigen, weil es langweilig ist. Es gibt jedoch kein Beispiel. Also habe ich es geschafft ... Ich möchte die gesamte Referenz lesen. 【Referenz】 ・ Bild in JSP-Seite einfügen
Schließlich
<img src="${pageContext.request.contextPath}/media/image.png " alt="Tokyo">
Dann wurde die Bilddatei angezeigt.
<body>
<%= new java.util.Date() %>
<%= request.getAttribute("foo") %><br/>
<%= request.getAttribute("userName") %>
<form method="post" action="./HelloSample">
Gib etwas ein: <input type="text" name="name">
<button type="submit">Senden</button>
</form>
<br/>
<img src="${pageContext.request.contextPath}/media/image.png " alt="Tokyo">
</body>
Ich würde danach gerne Bilder weitergeben, aber. .. .. Mir fehlte immer noch die Kraft.
・ Ich habe mit JSP + Servlet gespielt ・ Ich konnte Japanisch und Bilder anzeigen
・ Bild frei. .. .. Ich möchte das Zeichnen von Objektbewegungen ausprobieren