浏览器通过两种方法将数据传给web服务器,分别为Get方法和Post方法
①Get方法
---请求的所有信息以字符串的形式显示在浏览器上,长度限制为1024个字符 http://localhost:8080/get?name=111&age=1
实例:
@WebServlet("/get")
public class GetForm extends HttpServlet {
@Override
public void init(){}
@Override
public void doGet(HttpServletRequest req, HttpServeltResponse resp) throws ServletException,IOException {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("<h1>" + req.getParameter("name") + "</h1>");
out.println("<h1>" + req.getParameter("age") + "</h1>");
}
@Override
public void destroy(){}
}
get.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Get-method</title>
</head>
<body>
<form action="/get" method="GET">
姓名:<input type="text" name="name">
<br/>
年龄:<input type="text" name="age"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
②Post方法
---POST 方法不是把信息作为 URL 中 ? 字符后的文本字符串进行发送,而是把这些信息作为一个单独的消息
实例:
@WebServlet("/post")
public class postForm extends HttpServlet {
@Override
public void init(){}
@Override
public void doGet(HttpServletRequest req, HttpServeltResponse resp) throws ServletException,IOException {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("<h1>" + req.getParameter("name") + "</h1>");
out.println("<h1>" + req.getParameter("age") + "</h1>");
}
@Override
public void destroy(){}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException {
this.doGet(req,resp);
}
}
post.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Post-method</title>
</head>
<body>
<form action="/post" method="POST">
姓名:<input type="text" name="name">
<br/>
年龄:<input type="text" name="age"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
③Servlet读取表单数据
- getParameter():您可以调用 request.getParameter() 方法来获取表单参数的值。
- getParameterValues():如果参数出现一次以上,则调用该方法,并返回多个值,例如复选框。
- getParameterNames():如果您想要得到当前请求中的所有参数的完整列表,则调用该方法。
实例:
public class ParamForm extends HttpServlet {
@Override
public void init() {
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
PrintWriter out = response.getWriter();
out.println("<h1>" + "param-read" + "</h1>");
Enumeration paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String paramName = (String) paramNames.nextElement();
out.println("<tr><td>" + paramName + " " + request.getParameter(paramName) + "</td>\n");
}
}
@Override
public void destroy() {
}
}
param.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Get-method</title>
</head>
<body>
<form action="/param" method="POST">
<input type="checkbox" name="red" checked="checked"/>红
<input type="checkbox" name="yellow" checked="checked"/>黄
<input type="checkbox" name="blue">蓝
<input type="submit" value="选择颜色"/>
</form>
</body>
</html>