一、实验目的1.进一步熟练掌握JSP相关代码的使用。
2.掌握利用JSP建立有关数据库的链接和获取数据等操作。
3.学习掌握一些调试程序代码的方法。
4.实现网站的用户注册和用户登录、用户信息修改功能。
二、实验环境Windows XP,Tomcat,Editplus、Eclipse /MyEclipse、Deamweaver三、实验内容及步骤用户注册:register.jsp<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> <title>用户注册</title><script type="text/javascript">function CheckSubmit(){if(erName.value==""){alert("请输入用户姓名!");erName.focus();return false;}if(erPhone.value==""){alert("请输入用户电话!");erPhone.focus();return false;}if(erPassword.value==""){alert("请输入密码!");erPassword.focus();return false;}if(erPassword2.value==""){alert("请再次输入密码!");erPassword2.focus();return false;}if(erPassword.value !=erPassword2.value){alert("两次输入密码不一致!");return false;}else{return true;}}</script></head><body><p>请填写下面的用户注册申请单<font color="red">(*为必填项)</font></p> <form name="registerform"method="post"action="registercheck.jsp"> <table><tr><td>姓名:</td><td><input name="UserName"type="text"size="20"></td><td><font color="red">*</font></td></tr><tr><td>电话:</td><td><input name="UserPhone"type="text"size="20"></td><td><font color="red">*</font></td></tr><tr><td>密码:</td><td><input name="UserPassword"type="password"size="20"></td><td><font color="red">* 20字符以内</font></td></tr><tr><td>再次输入密码:</td><td><input name="UserPassword2"type="password"size="20"></td><td><font color="red">* 与上一次密码一致</font></td> </tr><tr><td>性别:</td><td><input name="UserGender"type="radio"value="男">男<input name="UserGender"type="radio"value="女">女</td></tr><tr><td>民族:</td><td><input name="UserNation"type="text"></td></tr><tr><td>QQ:</td><td><input name="UserQQ"type="text"size="20"></td> </tr><tr><td>籍贯:</td><td><input name="UserNative"type="text"size="20"></td> </tr><tr><td><input type="submit"value="注册"onclick="return CheckSubmit();"></td><td><input type="reset"value="清除"></td></tr></table></form></body></html>用户注册界面:registercheck.jsp<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@page import="java.sql.*"%><% request.setCharacterEncoding( "utf-8");%><% response.setCharacterEncoding("utf-8"); %><!DOCTYPE html><html><head><meta charset="UTF-8"><title>注册信息确认</title><script language="javascript">function backward(){history.back();}</script></head><body><%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); String connectionUrl ="jdbc:sqlserver://localhost:1433;user=sa;password=123456;"+"Database Name=data;";Connection con =DriverManager.getConnection(connectionUrl); Statement stmt = con.createStatement();String UserPhone=request.getParameter("UserPhone");String sqls="select * from Userin where UserPhone='"+UserPhone+"'"; ResultSet rs = stmt.executeQuery(sqls);if(rs.next()){rs.close();stmt.close();con.close();%><p>该电话号码已被使用,请重新输入!</p><p><input name="Button"type="button"onclick="backward()"value="返回上一步"></p><%}else{rs.close();String UserName=request.getParameter("UserName");String UserPassword=request.getParameter("UserPassword");String UserGender=request.getParameter("UserGender");String UserNation=request.getParameter("UserNation");String UserQQ=request.getParameter("UserQQ");String UserNative=request.getParameter("UserNative");%><form action="registercheck2.jsp"method="post"><input type="hidden"name="UserPhone"value="<%=UserPhone%>"><input type="hidden"name="UserName"value="<%=UserName%>"><input type="hidden"name="UserPassword"value="<%=UserPassword%>"><input type="hidden"name="UserGender"value="<%=UserGender%>"> <input type="hidden"name="UserNation"value="<%=UserNation%>"> <input type="hidden"name="UserQQ"value="<%=UserQQ%>"><input type="hidden"name="UserNative"value="<%=UserNative%>"> <div align="center"><b><font size="3">请再次确认下面的注册申请单</font></b><table border="0"><tr><td>姓名:</td><td><%=UserName %></td></tr><tr><td>电话:</td><td><%=UserPhone %></td></tr><tr><td>密码:</td><td><%=UserPassword %></td></tr><tr><td>性别:</td><td><%=UserGender %></td></tr><tr><td>民族:</td><td><%=UserNation %></td></tr><tr><td>QQ:</td><td><%=UserQQ %></td></tr><tr><td>籍贯:</td><td><%=UserNative %></td></tr><tr><td><input name="Submit"type="submit"value="确认"></td><td><input name="Submit2"type="button"onclick="backward()"value="返回上一步"></td></tr></table></div></form><%}%></body></html>用户注册失败:registercheck2.jsp<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@page import="java.sql.*"%><% request.setCharacterEncoding( "utf-8");%><% response.setCharacterEncoding("utf-8"); %><!DOCTYPE html><html><head><meta charset="UTF-8"><title>注册确认</title></head><body><%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");String connectionUrl ="jdbc:sqlserver://localhost:1433;user=sa;password=123456;"+"Database Name=data;";Connection con =DriverManager.getConnection(connectionUrl); Statement stmt = con.createStatement();String UserPhone=request.getParameter("UserPhone");String UserName=request.getParameter("UserName");String UserPassword=request.getParameter("UserPassword");String UserGender=request.getParameter("UserGender");String UserNation=request.getParameter("UserNation");String UserQQ=request.getParameter("UserQQ");String UserNative=request.getParameter("UserNative");String sql="insert intoUserin(UserPhone,UserName,UserPassword,UserGender,UserNation,UserQQ, UserNative) values('"+UserPhone+ "','"+UserName+ "','"+UserPassword+ "','"+UserGender+ "','"+UserNation+ "','"+UserQQ+ "','"+UserNative+ "') " ;int n=stmt.executeUpdate(sql);if(n==1) out.print("注册成功!");sql="select * from Userin";ResultSet rs=stmt.executeQuery(sql);%><p><font color="red"><%=UserName %></font>:你好,恭喜你注册成功!</p> 5秒后自动返回登录窗口,你可以点击<a href="index.jsp">这里</a>返回首页<%response.setHeader("Refresh","5;URL=login.jsp"); %></body></html>用户注册成功:用户登录:login.jsp<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>用户登录</title><script language="javaScript">//首先判断输入的是否是空值,不是则提交function checkstr(){if(document.getElementById("UserPhone").value==""){alert("用户电话不能为空!");return false; }if(document.getElementById("UserPassword").value==""){alert("密码不能为空!");return false; }form.submit();}</script></head><body><form action="logincheck.jsp"method="post"><table><tr><td>用户电话:</td><td><input type="text"value=""name="UserPhone"size="20"></td></tr><tr><td>密码:</td><td><input type="password"name="UserPassword"size="20"></td></tr><tr><td><input type="submit"value="登录"></td><td><input type="reset"value="重置"></td></tr></table>如果您还没有注册,请单击<a href="register.jsp">这里</a>注册!</form></body></html>logincheck.jsp<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><meta http-equiv="pragma"content="no-cache"><meta http-equiv="cache-control"content="no-cache"><meta http-equiv="expires"content="0"><meta http-equiv="keywords"content="keyword1,keyword2,keyword3"> <meta http-equiv="description"content="This is my page"><title>用户登录</title></head><%@page import="java.sql.*"%><body><%String UserPhone=(String)request.getParameter("UserPhone");String UserPassword=(String)request.getParameter("UserPassword");try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");String connectionUrl ="jdbc:sqlserver://localhost:1433;user=sa;password=123456;"+"Database Name=data;";Connection con =DriverManager.getConnection(connectionUrl);String sqls="select * from Userin where UserPhone='"+UserPhone+"' and UserPassword='"+UserPassword+"'";//执行查询语句Statement stmt=con.createStatement();ResultSet rs = stmt.executeQuery(sqls);if(null == rs){//测试查询为空System.out.println("null!!!!!!!");}//k为查询到的记录数int k=0;if(rs.next()){k=k+1;}//如果查询到的记录数大于0则跳转到users.jsp,否则重新回到输入页面if(k>0){response.sendRedirect("users.jsp");}else{response.sendRedirect("login.jsp");}con.close();}catch(Exception e){out.println(e.toString());}%></body></html>用户登录完成后界面:用户信息管理:managers.jsp<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@page import="java.sql.*"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>管理员主页</title></head><body><a href="goodsmanager.jsp">商品信息管理</a><br>用户信息管理<table border="1"><tr><td>用户姓名</td><td>用户电话</td><td>用户密码</td><td>用户性别</td><td>用户民族</td><td>用户QQ</td><td>用户籍贯</td><td>删除</td><td>修改</td></tr><%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); String connectionUrl ="jdbc:sqlserver://localhost:1433;user=sa;password=123456;"+"Database Name=data;";Connection con =DriverManager.getConnection(connectionUrl); Statement stmt = con.createStatement();String sql="select * from Userin";ResultSet rs=stmt.executeQuery(sql);while(rs.next()){%><tr><%String UserNo=rs.getString("UserNo"); %><td><%=rs.getString("UserName") %></td><td><%=rs.getString("UserPhone") %></td><td><%=rs.getString("UserPassword") %></td><td><%=rs.getString("UserGender") %></td><td><%=rs.getString("UserNation") %></td><td><%=rs.getString("UserQQ") %></td><td><%=rs.getString("UserNative") %></td><td><a href="deleteUserin.jsp?UserNo=<%=UserNo%>">删除</a></td> <td><a href="modifyUserin.jsp?UserNo=<%=UserNo%>">修改</a></td> </tr><%}rs.close();stmt.close();con.close();%><a href="deleteUserinall.jsp">全部删除</a></table></body></html>用户信息更改:modifyUserin.jsp<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@page import="java.sql.*"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>修改用户信息</title></head><body><%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); String connectionUrl ="jdbc:sqlserver://localhost:1433;user=sa;password=123456;"+"Database Name=data;";Connection con =DriverManager.getConnection(connectionUrl); Statement stmt = con.createStatement();String UserNo=request.getParameter("UserNo");if(UserNo!=null){byte b[]=UserNo.getBytes("iso-8859-1");UserNo=new String(b,"utf-8");}String sql="select * from Userin where UserNo='"+UserNo+"'"; ResultSet rs =stmt.executeQuery(sql);if(rs.next()){%><form method="post"action="modifyUserincheck.jsp"><table border="1"><tr><th>序号</th><td><input type="text"name="UserNo"value="<%=UserNo %>" readonly></td></tr><tr><th>用户电话</th><td><input type="text"name="UserPhone"value="<%=rs.getString("UserPhone") %>"></td></tr><tr><th>用户姓名</th><td><input type="text"name="UserName"value="<%=rs.getString("UserName") %>"></td></tr><tr><th>用户密码</th><td><input type="text"name="UserPassword"value="<%=rs.getString("UserPassword") %>"></td></tr><tr><th>用户性别</th><td><input type="text"name="UserGender"value="<%=rs.getString("UserGender") %>"></td></tr><tr><th>用户民族</th><td><input type="text"name="UserNation"value="<%=rs.getString("UserNation") %>"></td></tr><tr><th>用户QQ</th><td><input type="text"name="UserQQ"value="<%=rs.getString("UserQQ") %>"></td></tr><tr><th>用户籍贯</th><td><input type="text"name="UserNative"value="<%=rs.getString("UserNative") %>"></td></tr><tr><th colspan="2"><input type="submit"value="修改"></th> </tr></table></form>}%></body></html>用户信息更改验证:modifyUserincheck.jsp<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@page import="java.sql.*"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>修改信息核对</title></head><body><%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); String connectionUrl ="jdbc:sqlserver://localhost:1433;user=sa;password=123456;"+"Database Name=data;";Connection con =DriverManager.getConnection(connectionUrl); Statement stmt = con.createStatement();String UserNo=request.getParameter("UserNo");if(UserNo!=null){byte b[]=UserNo.getBytes("iso-8859-1");UserNo=new String(b,"utf-8");}String UserPhone=request.getParameter("UserPhone");if(UserPhone!=null){byte b[]=UserPhone.getBytes("iso-8859-1");UserPhone=new String(b,"utf-8");String UserName=request.getParameter("UserName");if(UserName!=null){byte b[]=UserName.getBytes("iso-8859-1");UserName=new String(b,"utf-8");}String UserPassword=request.getParameter("UserPassword");if(UserPassword!=null){byte b[]=UserPassword.getBytes("iso-8859-1");UserPassword=new String(b,"utf-8");}String UserGender=request.getParameter("UserGender");if(UserGender!=null){byte b[]=UserGender.getBytes("iso-8859-1");UserGender=new String(b,"utf-8");}String UserNation=request.getParameter("UserNation");if(UserNation!=null){byte b[]=UserNation.getBytes("iso-8859-1");UserNation=new String(b,"utf-8");}String UserQQ=request.getParameter("UserQQ");if(UserQQ!=null){byte b[]=UserQQ.getBytes("iso-8859-1");UserQQ=new String(b,"utf-8");}String UserNative=request.getParameter("UserNative");if(UserNative!=null){byte b[]=UserNative.getBytes("iso-8859-1");UserNative=new String(b,"utf-8");}String sql="update Userin set UserPhone='"+UserPhone+"',UserName='"+UserName+"',UserPassword='"+UserPassword+" ',UserGender='"+UserGender+"',UserNation='"+UserNation+"',UserQQ='"+ UserQQ+"',UserNative='"+UserNative+"' where UserNo='"+UserNo+"'"; int n =stmt.executeUpdate(sql);response.sendRedirect("managers.jsp");%></body></html>将用户籍贯未知改为四川:用户信息删除:deleteUserin.jsp<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@page import="java.sql.*"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>管理员删除用户信息</title></head><body><%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); String connectionUrl ="jdbc:sqlserver://localhost:1433;user=sa;password=123456;"+"Database Name=data;";Connection con =DriverManager.getConnection(connectionUrl); Statement stmt = con.createStatement();String UserNo=request.getParameter("UserNo");if(UserNo!=null){byte b[]=UserNo.getBytes("iso-8859-1");UserNo=new String(b,"utf-8");}String sql="delete from Userin where UserNo='"+UserNo+"'";int n=stmt.executeUpdate(sql);if(n==1) out.print("删除成功!");response.sendRedirect("managers.jsp");%></body></html>删除用户试验品:管理员登录:managerlogin.jsp<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@page import="java.sql.*"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>管理员登录</title><script language="javaScript">//首先判断输入的是否是空值,不是则提交function checkstr(){if(document.getElementById("ManagerPhone").value==""){alert("管理员电话不能为空!");return false; }if(document.getElementById("ManagerPassword").value==""){ alert("密码不能为空!");return false; }form.submit();}</script></head><body><form action="managerlogincheck.jsp"method="post"> <table><tr><td>管理员电话:</td><td><input type="text"value=""name="ManagerPhone" size="20"></td></tr><tr><td>密码:</td><td><input type="password"name="ManagerPassword" size="20"></td></tr><tr><td><input type="submit"value="登录"></td><td><input type="reset"value="重置"></td></tr></table></form></body></html>管理员登录验证:managerlogincheck.jsp<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><meta http-equiv="pragma"content="no-cache"><meta http-equiv="cache-control"content="no-cache"><meta http-equiv="expires"content="0"><meta http-equiv="keywords"content="keyword1,keyword2,keyword3"> <meta http-equiv="description"content="This is my page"><meta charset="UTF-8"><title>管理员登录</title></head><%@page import="java.sql.*"%><body><%String ManagerPhone=(String)request.getParameter("ManagerPhone"); StringManagerPassword=(String)request.getParameter("ManagerPassword");try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); String connectionUrl ="jdbc:sqlserver://localhost:1433;user=sa;password=123456;"+"Database Name=data;";Connection con =DriverManager.getConnection(connectionUrl);String sqls="select * from Managerin whereManagerPhone='"+ManagerPhone+"' andManagerPassword='"+ManagerPassword+"'";//执行查询语句Statement stmt=con.createStatement();ResultSet rs = stmt.executeQuery(sqls);if(null == rs){//测试查询为空System.out.println("null!!!!!!!");}//k为查询到的记录数int k=0;if(rs.next()){k=k+1;}//如果查询到的记录数大于0则跳转到managers.jsp,否则重新回到输入页面if(k>0){response.sendRedirect("managers.jsp");}else{response.sendRedirect("managerlogin.jsp");}con.close();}catch(Exception e){out.println(e.toString());}%></body></html>四、实验心得及体会注册时注意数据库中已存在的电话号码不能再进行注册,密码不能为空且两次输入的密码必须一致,必须输入用户姓名。