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():如果您想要得到当前请求中的所有参数的完整列表,则调用该方法。

















猜你喜欢

转载自blog.csdn.net/duan_2018/article/details/79852453