黑龙江大学 实 验 报 告
课程名称 实验项目名称 JSP JDBC应用 实验时间 年 月 日 第 节 (日期及节次) 专业 年级 姓名 软件工程 2011级 杜常数 学生所在学院 学号 指导教师 软件学院 20113311 青巴图 实验室名称 实验成绩 教师签字
预习情况 操作技术 附加:综合实验 实验报告 创新能力 综合成绩
黑龙江大学教务处
实验名称:JDBC应用 实验目的
利用JDBC实现好友录程序。
实验类型
设计型
实验环境
编程环境:myeclipse8 运行环境:Windows XP
主要设计思想与算法
在登陆界面填写好表单后点击提交会提交到logincheck.jsp,logincheck.jsp通过request获取表单的内容,再通过数据库查询与用户名相符的记录,如果存在该用户则比较验证密码,如果密码不正确则返回密码错误信息关键代码如下所示:
String name = request.getParameter(\"username\");
if (rs.next()) {
if (rs.getString(3).equals(password)) {
Cookie cname = new Cookie(\"username\", name); Cookie cpsw = new Cookie(\"userpsw\", password);
if (request.getParameter(\"savename\")!=null) {//保存用户名 cname.setMaxAge(30 * 24 * 60 * 60);
if (request.getParameter(\"savepsw\")!=null) {//保存用户密码 cpsw.setMaxAge(30 * 24 * 60 * 60); }//if else{ }
cpsw.setMaxAge(0);
String password = request.getParameter(\"password\"); DBconnect connect = new DBconnect(); Connection con = connect.getConnection(); Statement st = con.createStatement();
ResultSet rs = st.executeQuery(\"select * from user where name=\\\"\"+
name + \"\\\"\");
}//if
else {//否则用户名密码都不保存 cname.setMaxAge(0);
cpsw.setMaxAge(0);
}//else
response.addCookie(cname); response.addCookie(cpsw);
session.setAttribute(\"user\", name); response.sendRedirect(\"index.jsp\");
}//if (rs.getString(3) else {
request.setAttribute(\"passwordError\",new String(\"用户密码错
误!\"));
request.getRequestDispatcher(\"login.jsp\").forward(request,respons } else {
request.setAttribute(\"nameError\", new String(\"该用户不存在!\")); }
e);
request.getRequestDispatcher(\"login.jsp\").forward(request,respons}
e);
显示所有好友信息的页面allfriend.jsp,首先判断session中是否有用户的信息,如果有则从数据库中查询相应的好友信息,如果没有说明尚未登录,则直接跳转到login.jsp页面具体代码如下所示:
<%
String user=(String)session.getAttribute(\"user\"); if (user == null)
response.sendRedirect(\"login.jsp\");
int rsCount=0,allNum,pageNum;//rsCount记录所有的好友个数,allNum记录页
数,pageNum记录当前是第几页(从1开始) String temp;
temp=request.getParameter(\"pageNum\"); if(temp==null)
pageNum=1;
pageNum=Integer.parseInt(temp); else
DBconnect connect = new DBconnect(); Connection con = connect.getConnection(); Statement st = con.createStatement();
ResultSet rs;
temp=request.getParameter(\"count\"); if(temp==null){ } else }
allNum = (int) (rsCount / 50);//allNum所有页数 一页显示50条记录 if(rsCount%50!=0)
allNum++;
rs = st.executeQuery(\"select * from myfriend where userid in(select %>
rsCount=Integer.parseInt(temp); out.print(\"您没有可显示好友。
\");
out.print(\"返回首页\"); return ; if(rsCount==0){
rs=st.executeQuery(\"select count(*) from myfriend where userid rs.next();
rsCount=rs.getInt(1);
in(select userid from user where name=\\\"\"+user+\"\\\")\");
userid from user where name=\\\"\"+ user + \"\\\")\");
在所有好友页面做到分页显示的方法如下所示:
<%
if(pageNum!=1){//第一页 上一页的显示 out.print(\"href=allfriend.jsp?pageNum=1&count=\"+rsCount+\">第一页\");
out.print(\"上一页 \"); }
else{
out.print(\"第一页\"); out.print(\"上一页\"); }
if(pageNum-2>1){//前面省略号的显示 out.print(\" ... \"); }
for (i = -2; i <= 2; i++) {//向前向后各显示两项 if((pageNum+i)<1)
continue ; break;
if ((pageNum + i) > allNum) else if(i==0)
}
out.print(\" \"+pageNum);
out.print(\" else + i) + \"&count=\"+rsCount+\">\" + (pageNum + i)+ \"
if (pageNum + 2 < allNum)//后面的省略号的显示
out.print(\" ... \");
if (pageNum < allNum){//下一页 尾页的显示方式 out.print(\" 1) + \"&count=\"+rsCount+\">下一页 \");
out.print(\"href=allfriend.jsp?pageNum=\"+allNum+\"&count=\"+rsCount+\">尾页\"); }
else{
out.print(\" 下一页\"); out.print(\" 尾页\"); }
out.print(\" 返回首页\");%>
registercheck.jsp页面需要对用户填写的信息进行检验,如果合标准则插入数据库中否则通过request将错误的信息返回注册页面中:
<%
String name,password,pswconfirm; boolean error=false;
name=request.getParameter(\"username\"); password=request.getParameter(\"password\"); pswconfirm=request.getParameter(\"pswconfirm\"); if(name==null||name.length()==0){
request.setAttribute(\"nameError\",new String(\"用户名不能为空!\")); error=true; }
else if(name.length()>12){
request.setAttribute(\"passwordError\",new String(\"用户名过长!\")); error=true; }
else if(password==null||password.length()==0){
request.setAttribute(\"passwordError\",new String(\"密码不能为空!\")); error=true; }
else if(password.length()>12){
request.setAttribute(\"passwordError\",new String(\"密码过长!\")); error=true;
}
else if(!password.equals(pswconfirm)){
request.setAttribute(\"pswconfirmError\",new String(\"密码前后不一致!\"));
error=true; }
if(error){
request.getRequestDispatcher(\"Register.jsp\").forward(request,response); return ; }
DBconnect connect=new DBconnect(); Connection con=connect.getConnection(); Statement st=con.createStatement();
ResultSet rs=st.executeQuery(\"select * from user where name=\\\"\"+name+\"\\\"\");//检查用户是否已经存在 if(rs.next()){
request.setAttribute(\"nameError\",new String(\"用户名已经存在!\"));
request.getRequestDispatcher(\"Register.jsp\").forward(request,response); } else{
st.executeUpdate(\"insert into user (name,password) values (\\\"\"+name+\"\\\+password+\"\\\")\"); session.setAttribute(\"user\",name); response.sendRedirect(\"index.jsp\"); } %>
模糊查询的代码如下所示:
<% String username=(String)session.getAttribute(\"user\"); if(username==null){ }
out.print(\"
out.print(\"
String queryName=request.getParameter(\"querryName\"); DBconnect connect=new DBconnect(); Connection con=connect.getConnection();
PreparedStatement preparest=con.prepareStatement(\"select * from myfriend where userid in(select userid from user where
response.sendRedirect(\"login.jsp\"); return ;
name=\\\"\"+username+\"\\\") and name like \\\"%\"+queryName+\"%\\\"\"); ResultSet rs=preparest.executeQuery(); %>
修改好友信息需要通过update_friend.jsp填写表单,然后提交到update_check.jsp,update_check.jsp的关键代码如下所示:
<%
String user_name=(String)session.getAttribute(\"user\"); if(user_name==null)
response.sendRedirect(\"login.jsp\");
DBconnect connect=new DBconnect(); Connection con=connect.getConnection(); Statement st=con.createStatement();
ResultSet rs=st.executeQuery(\"select userid from user where name=\\\"\"+user_name+\"\\\"\"); rs.next();
String userid=rs.getString(1);
request.setCharacterEncoding(\"gb2312\"); String name=request.getParameter(\"name\"); String sex=request.getParameter(\"sex\"); String age=request.getParameter(\"age\"); if(age==null||age.length()==0) age=\"0\";
String qqnum=request.getParameter(\"qqnum\"); String tel=request.getParameter(\"tel\"); String email=request.getParameter(\"email\"); String address=request.getParameter(\"address\"); //
//,\\\"\"+sex+\"\\\dress+\"\\\" try{
String id=(String)session.getAttribute(\"id\");out.print(\"\"+id+\" name\"+name);
session.removeAttribute(\"id\");
st.executeUpdate(\"update myfriend set
name=\\\"\"+name+\"\\\+sex+\"\\\+age+\"\\\+qqnum+\"\\\lephone=\\\"\"+tel+\"\\\+email+\"\\\+address+\"\\\" where id=\"+id);
out.print(\"恭喜您,您的好友style=\\\"background:#aabb23;\\\">\"+name+\"修改成功
\"); out.print(\"点击这里返回
\"); out.print(\"点击此处返回首页
\");
}
catch(Exception e){
response.setHeader(\"refresh\",\"4;url=allfriend.jsp\");
out.print(\"修改失败! 请检查是否有非法字符或未填写项\");
out.print(\"点此返回\"); }
%>
删除好友直接对数据库进行操作,删除记录就可以。其中删除记录的jsp代码如下所示:
<%
if(session.getAttribute(\"user\")==null) response.sendRedirect(\"login.jsp\"); try{
DBconnect connect=new DBconnect(); Connection con=connect.getConnection(); Statement st=con.createStatement(); String []id; int i;
id= request.getParameterValues(\"del\"); for(i=0;i out.print(\"马上跳转,如果没有跳转请点击 href=\\\"allfriend.jsp\\\">这里\"); response.sendRedirect(\"allfriend.jsp\"); } catch(Exception e){ out.print(\"出错了! %> 实验结果(测试用例、实验结果) 用户登录的界面如下所示: Index.jsp的页面如下所示: 添加好友的模块运行效果如下所示: 通过页面查看好友时就可以看到添加的好友信息 更新好友信息运行效果如下所示: 删除好友运行效果: 如下为好友信息模糊查询的效果: 实验总结与心得 因篇幅问题不能全部显示,请点此查看更多更全内容
\");
点此返回首页\"); }