一、共享数据
(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"
这样会输出数据库该表的全部内容。
解决方法:通过用户名查找数据库中匹配的密码,然后与输入的密码比较,判断是否相同。