您的位置:首页 > 数据库

Servlet基础学习二(共享数据,操作数据库)

2014-02-20 13:50 253 查看
一、共享数据

(1)cookie技术:
服务器在客户端保存用户的信息,数据量不大,保存在C:Documents and Settings。
cookie的作用:
a.保存用户登录信息,一定时间不用重新登录

b.记录用户访问网站的喜好

c.网站的个性化
(2)sendRedirect():
传送信息快,但只能传输字符串。格式sendRedirect(url?"变量1名="+值&"变量2名 ="+值&...)

中文需要处理乱码情况。

(3)隐藏表单 <input type=hidden>

(4)session技术:当用户提出请求时,服务器会为该用户分配一个独立的内存空间。

如购物车/登录用户的信息/用户权限 多组键值对 session默认存在时间是30min
//得到session
HttpSession hs=request.getSession(true);
//添加属性
hs.setAttribute(String name,Object val);
//得到属性
String att=hs.getAttribute(String name);
//删除属性
hs.removeAttribute(String name);


操作数据库:(验证用户信息)
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注入漏洞:
select * from users where username="admin" and password="admin" or 1="1"
这样会输出数据库该表的全部内容。
解决方法:通过用户名查找数据库中匹配的密码,然后与输入的密码比较,判断是否相同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐