在HTML中,我们经常会用表单<form>进行用户信息的一些收集,然后提交给服务器进行处理。提交方式有get和post两种。
<form name="表单名" action="提交路径" method="提交方法">
用户名:<input type="text" name="username" /><br>
密 码:<input type="password" name="password" />
<input type="submit" value="提交数据" />
</form>
前端:
get和post两种提交方式的区别:
- 安全性。 get<post get提交的信息将会在URL中显示,而post提交的信息则会隐藏在Httprequest体中,这个可以通过IE下的HttpWatch抓包工具进行查看。
GET提交:
POST提交:
- 可提交内容大小限制。
GET的内容写在URL中,所以对提交信息的长度有限制,最多不能超多8KB个字符,如果信息太长,将被截去,从而导致意想不到的结果。
POST的内容被打包了,理论上编辑的内容是不受限制的,但建议不要超过64KB。
- 请求响应的速度。
GET的速度要快于POST,GET要求服务器立即请求处理,POST因携带东西较多,需形成一个队列请求。
- 支持的字符集不同
GET限制Form表单的数据集的值必须为ASCII字符;
POST支持整个ISO10646字符集,默认是用ISO-8859-1编码
- 数据传递形式不同
GET若果多个变量之间&符号链接,用?符号起到连接和清除缓存的作用。
POST在数据体中按键值对一一罗列。
默认情况下是使用GET提交方式,当然一些无关紧要的少量数据的提交,GET是比较效率高的方法;但是如果涉及到隐私,以及信息安全的数据,比如银行账户之类的私人数据,需使用POST提交。(个人建议用POST,其实所谓的速度慢也慢不到哪里去)
后端:
表单通过action="提交路径"把数据交给后台进行处理,Servlet是专门用来处理业务逻辑的。
package com.test.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Servlet11") //配置Servlet路径
public class Servlet11 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//这里用来接收GET提交方式的处理
String username=request.getParameter("username");//获取到表单输入的信息
System.out.println("username"+username);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//这里用来接收POST提交方式的处理
String username=request.getParameter("username");//获取到表单输入的信息
System.out.println("username"+username);
doGet(request, response);
}
}
实际上,在Servlet中调用doGet()和doPost()底层都是调用了service()方法。这是Servlet生命周期的第二个阶段,用于响应客户请求的阶段,也是最核心的一个阶段。
Servlet生命周期: