1.doget只有一个流。参数附加在url之后,地址显示的是要传送的信息,大小个数有严格的限制且只能是字符串。
2.post的参数是通过另外的流传递的,不通过url,所以可以很大,也可以传递二进制数据,如文件的上传。
3.安全a:get调用url里显示正在传送给servlet的数据,这在系统的安全方面可能带来问题,例如用户名,或者密码等。post就可以在一定程度上解决此类问题
b:服务器的接收方式:服务器随机接收get方法的数据,一旦断电等原因,服务器也不知道是否发送完毕
而post方法,服务器现接受数据信息的长度,然后再接收数据
转发和重定向的区别:
1.转发一次请求,重定向两次。
2.转发地址栏不变,重定向地址为最后一次访问的地址
3.转发用req,重定向用resp
4.转发不可以跨域,重定向可以跨域
文件上传的细节:
1.为了保证服务器的安全,上传文件应该放在外界无法直接访问的目录下,比如,放在WEB-INF下
2.为了防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名.
3.为防止一个目录下面出现太多文件,要使用hash算法打散存储.
4.要限制上传文件的最大值
5.要限制上传文件的类型,在收到上传文件名时,判断后缀名是否合法。
6.在jsp中要加入enctype="multipart/from-data".
7.引入的servlet中版本要相匹配
8.再上传时,req.getPart中的对象要和jsp中的对象对上
9.那两个响应头的信息不能写错(那个上传的代码都有)
10.上传的method=post不能省
11.@AultipurtConfig
12.servlet必须是3.1以上