Latest web development tutorials

Servlets Formulardaten

In vielen Fällen benötigen wir einige Informationen aus dem Browser an den Web-Server zu übergeben, und letztlich an den Dämon. Browser sind zwei Möglichkeiten, um Informationen an den Webserver sind GET und POST-Methoden zu übergeben.

GET-Methode

GET-Methode, um die Benutzerinformationen verschlüsselt an die Seitenanfrage zu senden. Seite und Zwischeninformation codiert mit Zeichen getrennten, wie folgt ?:

http://www.test.com/hello?key1=value1&key2=value2

GET ist die Standardmethode Informationen vom Browser an den Web-Server-Prozess der Weitergabe, die eine lange Reihe produzieren wird, wird es in der Adressleiste des Browsers. Wenn Sie einen Server Kennwörter oder andere vertrauliche Informationen weitergeben möchten, benutzen Sie bitte nicht die GET-Methode. Es GET Methode Größenlimit: Request-String haben kann bis zu 1024 Zeichen.

Diese Informationen werden übertragen QUERY_STRING Kopf verwendet, und kann durch die Umgebungsvariable QUERY_STRING zugegriffen werden kann, Servlets verwendendoGet () Methode , um diese Art von Anfrage zu bearbeiten.

POST-Methode

Eine weitere zuverlässigere Methode Informationen an den Dämon der Weitergabe ist POST-Methode. POST-Methode Informationen im wesentlichen auf die gleiche Weise wie GET, POST-Methode zu verpacken, aber nicht die Information als eine URL? Text-String nach dem Zeichen übertragen wird, aber die Information als eine separate Nachricht. Nachricht in Form von Standardausgabe erreicht Daemon, Sie analysieren und sie auf die Standardausgabe verwenden können. Verwenden Sie Servlets doPost () Methode, um diese Art von Anfrage zu bearbeiten.

Verwenden Sie Servlets Formulardaten zu lesen

Servlets die Formulardaten zu verarbeiten, die je nach Situation verschiedene Methoden verwenden, um automatisch zu beheben:

  • getParameter (): Sie können request.getParameter () -Methode aufrufen , um den Wert des Formparameter zu erhalten.
  • getParameterValues (): Wenn der Parameter mehr als einmal erscheint, dann rufen Sie die Methode und mehrere Werte, wie zum Beispiel Kontrollkästchen zurück.
  • getParameterNames (): Wenn Sie eine vollständige Liste der aktuellen Anfragen erhalten möchten alle Parameter, dann rufen Sie die Methode.

Beispiele für die Verwendung des Verfahrens URL GET

Hier ist eine einfache URL, GET-Methode unter Verwendung von zwei Werten HelloForm Programm zu übergeben.

http: // localhost: 8080 / TomcatTest / HelloForm name = Dieses Tutorial & url = www.w3big.com?

Hier ist der Deal mit Web - BrowserHelloForm.java Servlet - Programm eingegeben.Wir werden diegetParameter () -Methode verwenden, können Sie einfach die Informationsübertragung zugreifen:

package com.w3big.test;

import java.io.IOException;
import java.io.PrintWriter;

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 HelloForm
 */
@WebServlet("/HelloForm")
public class HelloForm extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloForm() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 设置响应内容类型
		response.setContentType("text/html;charset=UTF-8");

		PrintWriter out = response.getWriter();
		String title = "使用 GET 方法读取表单数据";
		// 处理中文
		String name =new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8");
		String docType = "<!DOCTYPE html> \n";
		out.println(docType +
		    "<html>\n" +
		    "<head><title>" + title + "</title></head>\n" +
		    "<body bgcolor=\"#f0f0f0\">\n" +
		    "<h1 align=\"center\">" + title + "</h1>\n" +
		    "<ul>\n" +
		    "  <li><b>站点名</b>:"
		    + name + "\n" +
		    "  <li><b>网址</b>:"
		    + request.getParameter("url") + "\n" +
		    "</ul>\n" +
		    "</body></html>");
	}
	
	// 处理 POST 方法请求的方法
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}
Wir erstellen dann den folgenden Eintrag in der Dateiweb.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <servlet>
    <servlet-name>HelloForm</servlet-name>
    <servlet-class>com.w3big.test.HelloForm</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloForm</servlet-name>
    <url-pattern>/TomcatTest/HelloForm</url-pattern>
  </servlet-mapping>
</web-app>

Geben Sie nun in der Adressleistehttp-Browser: // localhost: 8080 / TomcatTest/ HelloForm name =Dieses Tutorial & url = www.w3big.com,und bevor der obige Befehl Auslösung wurde mit dem Tomcat -Server, um sicherzustellen , gestartet?.Wenn alles gut geht, werden Sie die folgenden Ergebnisse erhalten:


Benutzen Sie das Formular GET-Methode von Beispiel

Hier ist ein einfaches Beispiel, HTML-Formulare mit und senden, um die beiden Werte geht. Wir werden das gleiche Servlet HelloForm verwenden, um die Eingabe zu verarbeiten.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<form action="HelloForm" method="GET">
网址名:<input type="text" name="name">
<br />
网址:<input type="text" name="url" />
<input type="submit" value="提交" />
</form>
</body>
</html>

Speichern Sie die HTML-Datei zu hello.html, ist die Verzeichnisstruktur wie folgt:

Versuchen Sie den URL-Namen und URL eingeben, und klicken Sie auf "Senden" klicken, Demo Gif wie folgt:


Beispiele für die POST-Methode des Formulars

Lassen Sie uns verändert ein wenig über Servlets tun, so dass es Methoden GET und POST umgehen kann. Die folgendeHelloForm.java Servlet verwendet die GET und POST - Methode für die Verarbeitung der vom Web - Browser gegebene Eingabe.

Hinweis: Wenn die Formulardaten in der chinesischen Umcodierung übermittelten Daten erforderlich:

String name =new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8");
package com.w3big.test;

import java.io.IOException;
import java.io.PrintWriter;

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 HelloForm
 */
@WebServlet("/HelloForm")
public class HelloForm extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloForm() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 设置响应内容类型
		response.setContentType("text/html;charset=UTF-8");

		PrintWriter out = response.getWriter();
		String title = "使用 POST 方法读取表单数据";
		// 处理中文
		String name =new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8");
		String docType = "<!DOCTYPE html> \n";
		out.println(docType +
		    "<html>\n" +
		    "<head><title>" + title + "</title></head>\n" +
		    "<body bgcolor=\"#f0f0f0\">\n" +
		    "<h1 align=\"center\">" + title + "</h1>\n" +
		    "<ul>\n" +
		    "  <li><b>站点名</b>:"
		    + name + "\n" +
		    "  <li><b>网址</b>:"
		    + request.getParameter("url") + "\n" +
		    "</ul>\n" +
		    "</body></html>");
	}
	
	// 处理 POST 方法请求的方法
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

Nun kompilieren den Einsatz der oben Servlets, und verwenden Sie hello.html mit POST-Methoden wurden getestet, wie folgt:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<form action="HelloForm" method="POST">
网址名:<input type="text" name="name">
<br />
网址:<input type="text" name="url" />
<input type="submit" value="提交" />
</form>
</body>
</html>

Hier ist die aktuelle Ausgangsform oben, versuchen Sie den URL-Namen und die URL eingeben, und klicken Sie auf "Senden" klicken, Demo Gif wie folgt:


Um die Datenübertragung an das Servlet-Box-Programm

Wenn Sie brauchen mehr als eine Option wählen, um die Box zu verwenden.

Hier ist ein HTML-Code-Beispiele checkbox.html, ein Formular mit zwei Kontrollkästchen.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>
<form action="CheckBox" method="POST" target="_blank">
<input type="checkbox" name="w3big" checked="checked" /> 本教程
<input type="checkbox" name="google"  /> Google
<input type="checkbox" name="taobao" checked="checked" /> 淘宝
<input type="submit" value="选择站点" />
</form>
</body>
</html>

Hier ist CheckBox.java Servlet Verfahren für den Umgang mit Web-Browser-Eingabefeld gibt.

package com.w3big.test;

import java.io.IOException;
import java.io.PrintWriter;

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 CheckBox
 */
@WebServlet("/CheckBox")
public class CheckBox extends HttpServlet {
	private static final long serialVersionUID = 1L;
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// 设置响应内容类型
		response.setContentType("text/html;charset=UTF-8");

		PrintWriter out = response.getWriter();
		String title = "读取复选框数据";
		String docType = "<!DOCTYPE html> \n";
			out.println(docType +
	            "<html>\n" +
	            "<head><title>" + title + "</title></head>\n" +
	            "<body bgcolor=\"#f0f0f0\">\n" +
	            "<h1 align=\"center\">" + title + "</h1>\n" +
	            "<ul>\n" +
	            "  <li><b>本按教程标识:</b>: "
	            + request.getParameter("w3big") + "\n" +
	            "  <li><b>Google 标识:</b>: "
	            + request.getParameter("google") + "\n" +
	            "  <li><b>淘宝标识:</b>: "
	            + request.getParameter("taobao") + "\n" +
	            "</ul>\n" +
	            "</body></html>");
	}
	
	// 处理 POST 方法请求的方法
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

Stellen Sie die entsprechenden web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <servlet>
    <servlet-name>CheckBox</servlet-name>
    <servlet-class>com.w3big.test.CheckBox</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CheckBox</servlet-name>
    <url-pattern>/TomcatTest/CheckBox</url-pattern>
  </servlet-mapping>
</web-app>

Das obige Beispiel wird die folgenden Ergebnisse zeigen:


Lesen Sie alle Parameter des Formulars

Im Folgenden ist ein allgemeines Beispiel für die Verwendung von HttpServletRequestgetParameterNames () -Methode alle verfügbaren Parameter der Form zu lesen.Diese Methode liefert eine Aufzählung den Parameternamen enthält, wird nicht Bestellung angegeben.

Sobald wir eine Aufzählung haben, können wir aufzählen in üblicher Weise zirkuliert, mithasMoreElements ()Methode zu bestimmen , wann mitnext ()-Methode zu stoppen den Namen der einzelnen Parameter zu erhalten.

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

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 ReadParams
 */
@WebServlet("/ReadParams")
public class ReadParams extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ReadParams() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 设置响应内容类型
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		String title = "读取所有的表单数据";
		String docType =
			"<!doctype html public \"-//w3c//dtd html 4.0 " +
			"transitional//en\">\n";
			out.println(docType +
			"<html>\n" +
			"<head><meta charset=\"utf-8\"><title>" + title + "</title></head>\n" +
			"<body bgcolor=\"#f0f0f0\">\n" +
			"<h1 align=\"center\">" + title + "</h1>\n" +
			"<table width=\"100%\" border=\"1\" align=\"center\">\n" +
			"<tr bgcolor=\"#949494\">\n" +
			"<th>参数名称</th><th>参数值</th>\n"+
			"</tr>\n");

		Enumeration paramNames = request.getParameterNames();

		while(paramNames.hasMoreElements()) {
			String paramName = (String)paramNames.nextElement();
			out.print("<tr><td>" + paramName + "</td>\n");
			String[] paramValues =
			request.getParameterValues(paramName);
			// 读取单个值的数据
			if (paramValues.length == 1) {
				String paramValue = paramValues[0];
				if (paramValue.length() == 0)
					out.println("<td><i>没有值</i></td>");
				else
					out.println("<td>" + paramValue + "</td>");
			} else {
				// 读取多个值的数据
				out.println("<td><ul>");
				for(int i=0; i < paramValues.length; i++) {
				out.println("<li>" + paramValues[i]);
			}
				out.println("</ul></td>");
			}
			out.print("</tr>");
		}
		out.println("\n</table>\n</body></html>");
	}

	/**
	 * @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);
	}

}

Nun versuchen die oben Servlets durch das untenstehende Formular aus:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.com)</title>
</head>
<body>

<form action="ReadParams" method="POST" target="_blank">
<input type="checkbox" name="maths" checked="checked" /> 数学
<input type="checkbox" name="physics"  /> 物理
<input type="checkbox" name="chemistry" checked="checked" /> 化学
<input type="submit" value="选择学科" />
</form>

</body>
</html>

Stellen Sie die entsprechenden web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <servlet>
    <servlet-name>ReadParams</servlet-name>
    <servlet-class>com.w3big.test.ReadParams</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ReadParams</servlet-name>
    <url-pattern>/TomcatTest/ReadParams</url-pattern>
  </servlet-mapping>
</web-app>

Nun verwenden Sie das Formular oben Servlets aufrufen, erzeugt die folgenden Ergebnisse:

Sie können versuchen, die anderen über Servlets Formulardaten, wie Textfelder, Optionsfelder oder Drop-Down-Box und so weiter zu lesen.