链接数据库验证表单登陆

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值