1同一用户的不同页面的共享数据的四种方法
(1) cookie技术:即服务器在客户端保存用户的信息,比如登录名,密码等就是cookie,其
作用如下,A保存用户名,密码,在一定时间内不用重新登录
B记录用户访问网站的喜好(比如有无背景音乐等)
C网站的个性化,比如定制网站的服务,内容
(2)sendRedirect()转向,通过此方法可以将一根页面信息,传递给另外的页面,sendRedirect(“welcome?uname=ly”);的形式应该注意的有:
A welcom代表的是你要跳转的那个servlet的url
B servlet url名和变量之间有个?号
C 如果要传递两个以上的值,它们之间要用&号分开,比如sendRedirect(welcome?uname=ly&pass=ok);
D 如果传递的是中文,那将得到乱码,需要处理一下
该方法优缺点:
优点:传送信息的速度比较快
缺点:它只能传送字符串,而不能传送一个对象
(3)隐藏表单,行如:
<from action=login>
<input type=hidden name=a value=b>
</from>
(4)Session技术:即当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为该浏览器分配一个空间,该空间被这个浏览器独占,这个空间就是session空间,该空间的数据默认存在时间为30min,你也可以修改(a 修改你所安装的tomcat中的conf文件夹中的web.xml中的<session-config>
<session-timeout>30</session-timeout>
</session-config>处,单位是分钟,注意如果是用这种方式修改,那个所有web应用的session全部会变成修改的数,如果只是想改一个web应用的话,就把这三行代码复制到你想改时间的那个应用中
b在程序中修改
先获得session
HttpSession ht=req.getSession(true);
ht.setMaxInactiveIterval(20);注意单位是秒,此为20秒,这个时间,以及默认的时间30min都是指的是间隔时间,即如果是默认时间的话,如果在30分钟内没有操作过一次,这个session将消失,但是如果在30分钟内操作过,session将从新开始计时30分钟,从操作那时起
)
可以把session看做一张在内存中的表格,这种表格有两列,而表有多少行,理论上没有限制,没一行就是session的一个属性,每个属性包含两个部分,一个是该属性的名字(String),另外一个就是它的值(Object)例如:
名字 String | 值 Object |
注意:当某个浏览器访问网站时,服务器会给浏览器分配一个唯一的session id,并以此来区分不同的浏览器(即客户端),因为session的各个属性药占用服务器的内存,因此软件公司都是在迫不得已的情况下才使用
2如何使用Session
(1)得到session
HttpSession hs=request.getSession(true);
(2)向session中添加属性
hs.setAttribute(String name,Object val);
(3)从session中得到某个属性
String name=hs.getAttribute(String name);
(4)从session中删除某个属性
hs.removeAttribute(String name);
注意,这个session是属于一次请求的,就是属于一个IE浏览器的,一个IE实例的,而不是属于整个的一个机器,可以在机器上打开多个不同的IE,可能就有多个session
3安全性级别比较高的信息最好不要通过sendRedirect(welcome?uname=ly&pass=ok)方法来传输,因为用这个方法传输,传输的信息会在地址栏有所显示,http协议是明文传输,安全性比较高的可以加密,把信息如ly和ok加密过后再传输,或者是放在session里面去传,但量不要太大
4 Servlet中操作数据库时(应该特别注意sql注入漏洞!!)
5 servlet操作数据库时需要注意的是:
需要将如下连接数据库的3个jar包拷贝到tomcat服务器
msbase.jar
mssqlserver.jar
msutil.jar
具体有两种方法:
1 将.jar包拷贝到你安装的tomcat中的common文件夹下的lib文件夹
2在你的tomcat的webapps目录的WEB-INF文件夹下建立一个lib文件夹,然后把3个jar包拷贝到lib文件夹下
两种方法的区别:
第一种 所有的webapps都可以使用3个jar,即公用lib库
第二种 只有放jar的那个webapps能使用jar,即独用lib库
6在用servlet操作数据库时,应该注意sql注入漏洞,
例如-----sql注入漏洞
Select * from users where username=’ahc’and passwd=’lskj’ or 1=’1’
如果是这样的话,无论输入密码是什么,都会把所有信息列出来
用户名: 密码: 密码输入为lskj’ or 1=’1时就能通过,写程序时,不要用用户名和密码同时查,应该是通过用户输入的用户名去查数据库,返回密码,用数据库返回的密码和用户输入的密码相比较,如果相同说明用户是合法的,这样就可以有效避免它了