链接数据库验证表单登陆

来源:互联网 发布:4621三星网络打印设置 编辑:程序博客网 时间:2024/06/11 00:57

Eclipse通过链接数据库进行对表单的登陆验证,由于刚接触JSP,所以在.jsp里面写了java代码,杂七杂八的,没有对各功能分别封装,全写在一个jsp文件里了,只为了实现功能 。

代码:

<%@ page language="java" import="java.util.*"    contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@page import="java.sql.*"%><%    String path = request.getContextPath();%><%!public static final String DRIVER = "oracle.jdbc.driver.OracleDriver";    public static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";    public static final String USERNAME = "xxxxx";    public static final String PASSWORD = "xxxxx";%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>    <form action="3.jsp" method="post" onsubmit="return validate(this)">        <labelfor"i1">账号</label> <input type="text" id="i1" name="params">        <br />        <labelfor"i2">密码</label> <input type="password" id="i2"            name="Password"> <br />        <!--        <label>行</label>        <input type="text" name="rowspan"> <label>列</label>        <input type="text" name="colspan">  --> <input type="submit"            value="提交">    </form></body><%        Connection conn = null;        PreparedStatement paste = null;        ResultSet res = null;        try {            Class.forName(DRIVER);            conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);            String sql = "select user_account,user_password from dh12_user";            paste = conn.prepareStatement(sql);            res = paste.executeQuery(); %><script type="text/javascript">    function validate(f) {        var params = f.params.value;        var password = f.Password.value;        if (params == "" || params == null) {            alert("输入信息不能为空");            f.params.focus();//取得焦点            return false;        }<%        while (res.next()) {            %>else if (params == "<%=res.getString(1) %>" && password =="<%=res.getString(2) %>") {            alert("输入成功");            return true;        }<% } %>else {            alert("账号密码不匹配");            return false;    }    }</script><%        } catch (Exception e) {            e.getStackTrace();        } finally {            try {                res.close();                paste.close();                conn.close();            } catch (Exception e2) {                e2.getStackTrace();            }        }        %></html>

写了很久,开始一直搞不清,js和jsp要怎么相互融入。刚开始分开写,发现实现不了验证,于是把js嵌入在jsp里面,还是不验证直接跳转了下一个页面,调试发现

params == "<%=res.getString(1) %>" && password =="<%=res.getString(2) %>"

<%= >外面要加引号,然后拼拼凑凑完成了功能 - -;

收获:
一. js一般是把自定义函数放在head,调用函数的语句写在body里。但这个是没有硬性规定的,随你喜欢,可以全部放在body也可以的。只要注意把函数写在调用语句的前面就行了。

二. 基于JavaScript 声明全局变量的三种方式
1)使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量。该方式即为显式声明详细如下:

var test = 5;  //全局变量function a(){  var cc=3; //局部变量  alert(test);}function b(){alert(test);}

2)没有使用var,直接给标识符test赋值,这样会隐式的声明了全局变量test。即使该语句是在一个function内,当该function被执行后test变成了全局变量:

test = 5;//全局变量 function a(){  aa=3; //全局变量  alert(test);}

3)使用window全局对象来声明,全局对象的属性对应也是全局变量,详细如下:

window.test;window.test = 5;

三. jsp声明所用action,一般是jsp中的表格信息跳转到action,body和js,body先执行,js一般放在body后面。

四.两个字符串匹配一般使用“==”或者“===”判断,其不同是:
1.== equality 等同,=== identity 恒等。
2.==, 两边值类型不同的时候,要先进行类型转换,再比较。
3.==,不做类型转换,类型不同的一定不等。
①“==”匹配:
不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等var str1=”a”;

var str2="b";var str1="a";if(str1 == str2)alert("相等");else alert("不等");

②”===”匹配:
===如果类型不同,其结果就是不等var str2=”1”;

var str2="b";var str1="a";if(str1 === str2)alert("相等");else alert("不等");

③mach对象比较:

var str1='1;2;3';var str2='231';function M(str1,str2){function sort(s){return s.match(/\d/g).sort()+'' } return sort(str1)==sort(str2) }alert( M(str1,str2)?'相等':'不等');

④equals方法,如:

if(pwd1.equals(pwd2)) {...}
0 0