您的当前位置:首页正文

jsp技术实验报告_实验6

2020-08-25 来源:我们爱旅游


黑龙江大学 实 验 报 告

课程名称 实验项目名称 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(\"

欢迎您\"+username+\"


\"); request.setCharacterEncoding(\"gbk\");

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;ist.executeUpdate(\"delete from myfriend where id=\"+id[i]); out.print(\"删除成功!
\");

out.print(\"马上跳转,如果没有跳转请点击  href=\\\"allfriend.jsp\\\">这里\"); response.sendRedirect(\"allfriend.jsp\"); }

catch(Exception e){

out.print(\"出错了!
点此返回首页\"); }

%>

实验结果(测试用例、实验结果)

用户登录的界面如下所示:

Index.jsp的页面如下所示:

添加好友的模块运行效果如下所示:

通过页面查看好友时就可以看到添加的好友信息

更新好友信息运行效果如下所示:

删除好友运行效果:

如下为好友信息模糊查询的效果:

实验总结与心得

因篇幅问题不能全部显示,请点此查看更多更全内容