【JSP+JDBC】注册登录页面

javaweb作业11,注册登录页面

实现注册登录功能,参考效果 http://47.93.11.179/test/register.jsp,不要求效果完全一样,自由发挥即可。附件是工程目录,包含了注册和登录的两个页面及素材,可直接导入使用(启动外面浏览器访问)。功能实现好再提交,作业提供截图及代码。
提前建好表user,包含userid(主键)和userpwd两个字段。
(1)注册(2分),用js验证:用户名不为空,密码不能小于6位。
另外注册时,用户名重复要给出提示。
(2)登录(2分),先用js验证:用户名不为空,密码不能小于6位。

服务器体验版本:

https://yuheng.tech:8080/test11/register.jsp

大概长这样

@author:于衡

@time:2019/4/20 04:23

核心代码

注册登录系统
注册页核心代码 register.jsp:
1.	<script type="text/javascript">  
2.	      function check(){  
3.	          if(checkAll()){  
4.	              document.getElementById("form1").submit();  
5.	              return true;  
6.	          }else return false;  
7.	      }  
8.	      function checkAll() {  
9.	            var name = document.getElementById("user").value;  
10.	            var pwd1 = document.getElementById("pwd").value;  
11.	            var pwd2 = document.getElementById("rpwd").value;  
12.	            //用户名检验  
13.	                var namePattern = /^[a-zA-Z0-9_-]{4,16}$/;//4到16位(字母,数字,下划线,减号)  
14.	                if(name==''||name==null||!namePattern.test(name))  
15.	                {  
16.	                    alert("用户名不够规范。\r\n要求长度4到16位且只能由字母,数字,下划线,短横线构成");  
17.	                    return false;  
18.	                }  
19.	            //密码验证  
20.	                if (pwd1==''||pwd1==null)  
21.	                {  
22.	                    alert("密码为空");  
23.	                    return false;  
24.	                }  
25.	                if (pwd1!=pwd2)  
26.	                {  
27.	                    alert("两次密码不一致");  
28.	                    return false;  
29.	                }  
30.	                //正则验证密码强度  
31.	                if(checkPassword(pwd1)) return true;  
32.	                else return false;  
33.	        }  
34.	      function checkPassword(str){  
35.	            var Pattern1 = /([a-zA-Z0-9!@#$%^&*()_?<>{}]){8,18}/;  
36.	            var Pattern4 = /[!@#$%^&*()_?<>{}]{1,}/;  
37.	            var warning4= "建议密码包含一个以上的特殊字符\r\n特殊字符包括!@#$%^&*()_?<>{}\r\n";  
38.	            var Pattern2 = /[a-zA-Z]+/;  
39.	            var Pattern3 = /[0-9]+/;  
40.	            if(Pattern1.test(str) && Pattern2.test(str) && Pattern3.test(str) && Pattern4.test(str)){  
41.	                return true;  
42.	            }  
43.	            if(!Pattern1.test(str)){  
44.	                alert("长度必须在8-18位");  
45.	                return false;  
46.	            }  
47.	            if(!Pattern2.test(str)){  
48.	                alert("必须含有字母");  
49.	                return false;  
50.	            }  
51.	            if(!Pattern3.test(str)){  
52.	                alert("必须含有数字");  
53.	                return false;  
54.	            }  
55.	            if(!Pattern4.test(str)){  
56.	                if(confirm("弱密码警告\r\n"+warning4+"仍然要使用输入的弱密码么?"))  
57.	                return true;  
58.	                else return false;  
59.	            }  
60.	        }  
61.	      </script>  

数据库登记用户 insert_stu.jsp
1.	<body>  
2.	<%  
3.	Connection conn = null;  
4.	String sql;  
5.	String url = "???" ;      
6.	String username = "???";     
7.	String password = "???" ;     
8.	    try {  
9.	        Class.forName("com.mysql.cj.jdbc.Driver");  
10.	    } catch (ClassNotFoundException e) {  
11.	        System.out.println("没有成功加载MySQL驱动程序");  
12.	    }// 动态加载mysql驱动  
13.	    System.out.println("成功加载MySQL驱动程序");  
14.	    conn = DriverManager.getConnection(url,username,password);  
15.	    try{  
16.	        String sql1="insert into user values(?,?)";//准备sql语句,?是占位符,内容待定  
17.	        PreparedStatement pst1=conn.prepareStatement(sql1);//创建封装语句的对象  
18.	        String name = request.getParameter("account");  
19.	        String pwd = request.getParameter("password");  
20.	        pst1.setString(1,name);  
21.	        pst1.setString(2,pwd);  
22.	        pst1.executeUpdate();  
23.	        pst1.close();  
24.	        %>  
25.	        <script>  
26.	        alert("注册成功,可以登录啦");  
27.	        window.location.href='login.jsp';  
28.	        </script>  
29.	        <%  
30.	    }  
31.	    catch(Exception e)//因为userid作为数据库的主键是不允许重复的,所以用户名被注册可以使用try catch解决  
32.	    {  
33.	        %>  
34.	        <script>  
35.	        alert("注册失败,用户名重复");  
36.	        window.location.href='register.jsp';  
37.	        </script>  
38.	        <%  
39.	    }  
40.	%>  
登录页核心代码login.jsp:
1.	<script>  
2.	function check(){  
3.	      if(checkAll()){  
4.	          document.getElementById("form1").submit();  
5.	          return true;  
6.	      }else return false;  
7.	}  
8.	function checkAll() {  
9.	        var name = document.getElementById("account").value;  
10.	        var pwd = document.getElementById("password").value;  
11.	        //用户名检验  
12.	            var namePattern = /^[a-zA-Z0-9_-]{4,16}$/;//4到16位(字母,数字,下划线,减号) 同时禁止使用#渗透  
13.	            if(name==''||name==null||!namePattern.test(name))  
14.	            {  
15.	                alert("用户名打错了嘛?");  
16.	                return false;  
17.	            }  
18.	        //密码验证  
19.	            if (pwd==''||pwd==null||!checkPassword(pwd))  
20.	            {  
21.	                alert("密码打错啦?");  
22.	                return false;  
23.	            }  
24.	        return true;  
25.	    }  
26.	        //正则密码合法性验证函数  
27.	function checkPassword(str){  
28.	        var Pattern1 = /([a-zA-Z0-9!@#$%^&*()_?<>{}]){8,18}/;  
29.	        var Pattern2 = /[a-zA-Z]+/;  
30.	        var Pattern3 = /[0-9]+/;  
31.	        if(Pattern1.test(str) && Pattern2.test(str) && Pattern3.test(str))   
32.	            return true;  
33.	        else return false;  
34.	    }  
35.	          
36.	</script>  
数据库验证代码 Log_check.jsp:
1.	<body>  
2.	<%  
3.	  
4.	Connection conn = null;  
5.	String sql;  
6.	String url = "jdbc:mysql://localhost:3306/yuheng?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai" ;      
7.	String username = "???";     
8.	String password = "???" ;     
9.	    try {  
10.	        Class.forName("com.mysql.cj.jdbc.Driver");  
11.	    } catch (ClassNotFoundException e) {  
12.	        System.out.println("没有成功加载MySQL驱动程序");  
13.	    }// 动态加载mysql驱动  
14.	    System.out.println("成功加载MySQL驱动程序");  
15.	    conn = DriverManager.getConnection(url,username,password);  
16.	    try{  
17.	        String name = request.getParameter("account");  
18.	        String pwd = request.getParameter("password");  
19.	        String sql1="select * from user where userid=?";  
20.	        PreparedStatement pst1=conn.prepareStatement(sql1);  
21.	        pst1.setString(1, name);  
22.	        ResultSet rs= pst1.executeQuery();//查询结果返回到ResultSet中  
23.	        if(rs.next()){  
24.	            if(rs.getString(1).equals(name) && rs.getString(2).equals(pwd))  
25.	            {  
26.	                out.print("<script>alert(\"登录成功啦\");</script>");  
27.	                %><jsp:forward page="success.jsp"></jsp:forward> <%  
28.	                        //采用转发,网址不改变,一定程度上保护安全  
29.	            }  
30.	            else {  
31.	                out.print("<script>alert(\"密码错误\");</script>");  
32.	                %><jsp:forward page='login.jsp'></jsp:forward><%  
33.	            }  
34.	        }  
35.	        else out.print("<script><jsp:forward page='login.jsp'>;alert(\"没有这个账号\");</script>");  
36.	        rs.close();//关闭结果集  
37.	        pst1.close();  
38.	    }  
39.	    catch(Exception e)  
40.	    {  
41.	        out.print("<script>alert(\"未知错误\");</script>");  
42.	    }  
43.	    %>  
44.	</body>  
登陆成功页面 
1.	<h1 align="center">这是登录成功页面</h1>  
2.	<%  
3.	Connection conn = null;  
4.	String sql;  
5.	String url = "jdbc:mysql://localhost:3306/yuheng?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai" ;      
6.	String username = "???";     
7.	String password = "???" ;   
8.	String names="";  
9.	    try {  
10.	        Class.forName("com.mysql.cj.jdbc.Driver");  
11.	    } catch (ClassNotFoundException e) {  
12.	        System.out.println("没有成功加载MySQL驱动程序");  
13.	    }// 动态加载mysql驱动  
14.	    System.out.println("成功加载MySQL驱动程序");  
15.	    conn = DriverManager.getConnection(url,username,password);  
16.	    try{  
17.	        String sqlcount="select count(*) from user";  
18.	        PreparedStatement pstcount=conn.prepareStatement(sqlcount);  
19.	        ResultSet rs1= pstcount.executeQuery();//查询结果返回到ResultSet中  
20.	        int i=1;  
21.	        if(rs1.next()){  
22.	            out.print("<br><h2 align='center'>本页面共有"+rs1.getString(1)+"人注册<br>以下是已经注册的用户名:</h2><br>");  
23.	        }  
24.	        rs1.close();//关闭结果集  
25.	        pstcount.close();  
26.	        %>  
27.	        <div align="center">  
28.	        <%  
29.	          
30.	        String sql1="select * from user";  
31.	        PreparedStatement pst1=conn.prepareStatement(sql1);  
32.	        ResultSet rs= pst1.executeQuery();//查询结果返回到ResultSet中  
33.	        int num=1;  
34.	        while(rs.next()){  
35.	            names+=(num+++": "+rs.getString(1));  
36.	            if(num%5==0) names+="<br>";  
37.	            else names+="  ";  
38.	        }  
39.	        out.print("<h3>"+names+"</h3>");  
40.	        rs.close();//关闭结果集  
41.	        pst1.close();  
42.	        %>  
43.	        </div>  
44.	        <%  
45.	    }  
46.	    catch(Exception e)  
47.	    {  
48.	        out.print("<script>alert(\"未知错误\");</script>");  
49.	    }  
50.	    %>  

 


发表评论

电子邮件地址不会被公开。 必填项已用*标注

12 − 1 =