servlet学习笔记(二)

2016-09-07  本文已影响0人  ezsync小智

servlet登陆功能实现与思考

servlet实现登陆功能主要是通过get()方法或者post()方法接收前端页面输入的参数,然后跟数据库中已有的用户数据进行匹配,匹配上则登陆成功,否则失败。
由此,我觉得假如在这个过程中存在优化方案的话肯定是在这个匹配过程中。匹配过程中决定登陆速率的主要在两个方面,一个是匹配算法,另一个是表结构。匹配算法无非几个过程,先读取表的内容,然后通过for语句进行一一比对,实在没有优化的手段。于是我们可以从表结构下手,关于表结构优化方案,我们从主要从清理僵尸号下手。
人们在注册账号的时候大多数存在一个现象,就是一时心血来潮注册了账号之后不再登陆,每次匹配要匹配这些账号实在是浪费资源,但我们又不能将其从表中清除,因此我们应该设计一个算法使僵尸账号自动地被放到表尾。 想出来的解决方案有两个,一个是修改数据结构,让用户每次登入之后表中关于该用户的登陆次数字段加一,然后重新进行一次插入排序。另一个是写一个僵尸回收算法,每隔一段时间对僵尸号进行一次清理,把自上次清理后未在登陆过的账号按序排到表尾。


get()方法和post()方法的区别

get()方法和post方法都是http协议上对数据进行操作的方法。主要区别如下:


解决get()和post()乱码问题

解决post()乱码问题相对比较简单,只要通过设置post方法的参数对象request和response的setCharacterEncoding="gbk"即可。其中gbk支持简体和繁体,gb2
312只支持简体,而utf-8支持基本所有字体。解决get()乱码问题相对比较麻烦,要更改tomcat的配置文件。进入tomcat文件夹->conf->server.xml,找到conne
ctor标签,在该标签内添加一句语句URIEncoding="gbk"。造成这两种差异的主要原因是 post()方法是通过正文提交参数,get()是通过报头提交参数,而setCha
racterEncoding只能设置正文的编码格式,而不能设置报头的编码格式

提交复选框参数

提交复选框的时候只要让获取参数的变量为数组,然后把多个参数同时获取并保存到数组里即可。获取多个参数的方法为getParameterValues("name")

最后总结一句,我觉得get()post()最主要的区别在于get()是通过报头提交参数,post()是通过正文提交参数,并由此衍生了各自的安全性、传输数据量等的区别。

PS:以上为小白的学习笔记,包含很多脑洞的想法,各位客官多多包涵,也希望大家能够多多指教晚辈
上一篇 下一篇

猜你喜欢

热点阅读