JSP入門學習(三)使用post方法從表單、複選框向Servlet傳遞信息

上一篇博文寫到了用GET方法向servlet傳遞信息:https://blog.csdn.net/duan_2018/article/details/79843722這一篇博文在這個基礎上,用post方法傳遞各種信息。

一、讀取表單信息

HelloServlet的代碼,在dopost()這裏寫了即可

 doGet(request, response);
package duan;

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 HelloServlet
 */
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloServlet() {
        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.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		String title = " ";
        String docType = "<!DOCTYPE html> \n";
        String name =new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8");
        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>say</b>:"
                + request.getParameter("say") + "\n" +
                "</ul>\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);
	}

}

主頁的代碼

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>my_hello_test</title>
</head>
<body>
<form action="HelloServlet" method="POST">
姓名<input type="text" name="name">
<br />
要說的話:<input type="text" name="say" />
<input type="submit" value="提交" />
</form>
</body>
</html>

在method這裏寫“POST”即可。基本上和用GET方法沒有什麼區別

二、複選框的信息傳遞

<!--hello.html-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>my_hello_test</title>
</head>
<body>
<form action="HelloServlet" method="POST">
姓名 <input type="checkbox" name="duan"  />duan
    <input type="checkbox" name="coco"  />coco
<br />
要說的話: <input type="checkbox" name="hello" /> hello
         <input type="checkbox" name="hi" /> hi
<input type="submit" value="提交" />
</form>
</body>
</html>
//HelloServlet.java
package duan;

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 HelloServlet
 */
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloServlet() {
        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.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>duan</b>:"
                + request.getParameter("duan") + "\n" +
                "  <li><b>coco</b>:"
                + request.getParameter("coco") + "\n" +
                "  <li><b>hello</b>:"
                + request.getParameter("hello") + "\n" +
                "  <li><b>hi</b>:"
                + request.getParameter("hi") + "\n" +
                "</ul>\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);
	}

}


三、讀取所有表單參數

<!--hello.html-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>my_hello_test</title>
</head>
<body>
<form action="HelloServlet" method="POST">
姓名 <input type="checkbox" name="duan"  />duan
    <input type="checkbox" name="coco"  />coco
<br />
要說的話: <input type="checkbox" name="hello!" /> hello!
         <input type="checkbox" name="hello!" /> hello!
         <input type="checkbox" name="hello!" /> hello!
         <input type="checkbox" name="hello,1" /> hello,1
         <input type="checkbox" name="hello,2" /> hello,2
         <input type="checkbox" name="hello,3" /> hello,3
         <input type="checkbox" name="hello,4" /> hello,4
<input type="submit" value="提交" />
</form>
</body>
</html>
//HelloServlet.java
package duan;

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 HelloServlet
 */
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloServlet() {
        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.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		String title = "讀取所有表單參數";
        String docType = "<!DOCTYPE html> \n";
        Enumeration paramNames = request.getParameterNames();
        out.println(docType +
                "<html>\n" +
                "<head><title>" + title + "</title></head>\n" +
                "<body bgcolor=\"#f0f0f0\">\n" +
                "<h1 align=\"center\">" + title + "</h1>\n" +
                "<table border=\"1\">\n" +
                "<tr><th>參數名稱</th><th>參數值</th></tr>");
        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);
	}

}

四、使用 Servlet 讀取表單數據

Servlet 處理表單數據的三個方法至此都得到了使用,另外注意到的是在想html傳遞字符串的時候遇到雙引號要轉義處理

  • getParameter():您可以調用 request.getParameter() 方法來獲取表單參數的值。
  • getParameterValues():如果參數出現一次以上,則調用該方法,並返回多個值,例如複選框。
  • getParameterNames():如果您想要得到當前請求中的所有參數的完整列表,則調用該方法。

















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章