
doGet和doPost其实就是用来接收前端传过来的数据,本质上都是请求方法。
通过JSP页面访问Servlet
首先我们要知道什么时候用到doGet和doPost:
Answer:当通过JSP页面访问Servlet时
我们可以通过JSP页面的表单或者超链接请求某个servlet。
通过JSP页面访问servlet的好处是JSP页面负责页面的静态信息处理,动态信息处理有Servlet完成。
通过表单访问servlet
1
2
3
4
5<form action 访问="islogin" method="post">
....
</form>通过超链接访问Servlet
在JSP页面中,可以单击超链接访问Servlet对象,同时可以通过链接向Servlet提交信息。
示例:1
<a herf ="loginSerlet? user=ty&pwd=zg">查看用户名和密码</a>
“查看用户名和密码”这个超链接就将user
和pwd
的两个信息提交给Servlet处理。
工作原理
当服务器创建servlet对象后,servlet对象调用init
方法初始化自己。
当服务器收到一个Servlet请求时,就会产生一个新进程,在这个线程中,让Servlet对象调用service()方法为请求做出响应。
service方法首先检查HTTP请求类型(get或post),并根据用户的请求方式,在service()方法中对应的调用doGet()或doPost()方法。
优点:
在Servlet类中重写doGet()或doPost()方法来响应用户的请求,可以增加响应的灵活度,同时减轻服务器的负担。
一般情况下无论用户请求是post或get,服务器的处理过程完全相同。
我们也可以在doPost()中写处理过程的代码,而在doGet()方法内再调用doPost方法。
Get和Post的区别:
- get是从服务器上获取数据,post是向服务器传送数据。
- 在客户端,Get方式在通过
URL
提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER
内提交。 - 对于get方式,服务器端用
Request.QueryString
获取变量的值,对于post方式,服务器端用Request.Form
获取提交的数据。 - GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
- 安全性问题。正如在1中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。
所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post为好。