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