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

这篇博文介绍了如何在JSP中使用POST方法向Servlet传递表单信息,包括复选框的数据。文章详细阐述了在Servlet中读取表单参数的三种方法:getParameter()用于获取单个参数值,getParameterValues()用于获取复选框等多次出现的参数值,而getParameterNames()则用于获取所有参数名。

被折叠的 条评论
为什么被折叠?



