一、共享数据
(1)cookie技术:
服务器在客户端保存用户的信息,数据量不大,保存在C:Documents and Settings。
cookie的作用:
a.保存用户登录信息,一定时间不用重新登录
b.记录用户访问网站的喜好
c.网站的个性化
(2)sendRedirect():
传送信息快,但只能传输字符串。格式sendRedirect(url?"变量1名="+值&"变量2名 ="+值&...)
中文需要处理乱码情况。
(3)隐藏表单
(4)session技术:当用户提出请求时,服务器会为该用户分配一个独立的内存空间。
如购物车/登录用户的信息/用户权限 多组键值对 session默认存在时间是30min
1
2
3
4
5
6
7
8
//得到session
HttpSession hs=request.getSession(true);
//添加属性
hs.setAttribute(String name,Object val);
//得到属性
String att=hs.getAttribute(String name);
//删除属性
hs.removeAttribute(String name);
操作数据库:(验证用户信息)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public void doGet(HttpServletRequest req,HttpServletResponse res)
{
try{
//接受用户名和密码
String u=req.getParameter("username");
String p=req.getParameter("passwd");
//连接数据库
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")
//得到连接
Connectiong ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:端口号:databaseName=数据库名",用户名,密码);
//创建Statement
Statement sm=ct.createStatement();
ResultSet rs=sm.executeQuery("select top 1 * from users where username="+u+" and passw="+p+"");
//验证
if(rs.next()){
}
}
catch(Exception(ex)
{ex.printStackTrace();}
finally{
try
{ if(rs!=null)//关闭顺序不可变
rs.close();
if(sm!=null)
sm.close();
if(ct!=null)
ct.close()
}
catch{Exception e){
exprintStackTrace();
}
}
}
需要的jar包1.拷贝到WEB-INF/lib目录下【独用lib库】 2.拷贝到%tomcat%commons/lib目录下【公用lib库】
sql注入漏洞:
1
select * from users where username="admin" and password="admin" or 1="1"
这样会输出数据库该表的全部内容。
解决方法:通过用户名查找数据库中匹配的密码,然后与输入的密码比较,判断是否相同。
阅读(2550) | 评论(0) | 转发(0) |