使用JavaScript与Servlet实现客户端与服务器端验证
2013-05-24 00:21
387 查看
表单的验证有两种:
客户端验证:
--减少服务器负担。
--缩短用户等待时间。
--兼容性难。(不同浏览器对脚本语言的兼容性都是不同的)
服务器端验证:
--统一确认。
--兼容性强。
--服务器负载重。
客户端验证不写也是允许的,但服务器端验证必须有。用户可以(通过查看源代码直接输入地址)绕过客户端验证,如果服务器端的屏障没做好,插入到数据库的数据就是错误的,很麻烦。晚上的系统一般都有双重验证。
[b]使用使用JavaScript实现客户端验证:[/b]
验证条件:用户名、密码、重复密码不为空,密码和重复密码相同,长度6-10.
script通常写在<head></head>里。
<script></script>表示里面使用js脚本。
使用js最常用的就是定义函数。没有那么多东西,就是function yourf(){} ,其所有的变量也都是由var定义的。 对于javascript也常用alert。
要获得下面表单的东西,方式有很多 :
1、给控件增加id属性。id属性不是被服务器端使用的,是被客户端javascript脚本使用的。
document是javascript内置对象,代表当前文档本身。 javascript不强制要有分号结束。
onsubmit="return validate();提交的时候调用该函数。分号可无。返回真才提交给服务器。
在js里点什么并没有全部的智能提示,没出现也可以用。
这时,用户可以这么做:
查看浏览器的该源代码,由<form onsubmit="return validate()" action="someServlet">发现表单提交到someServlet,并且有username、password、repassword3个变量。那他可以直接在浏览器url输入
http://……/someServlet?username=&password=123&repassword=456
这样用户就可以绕过客户端验证直接到达服务器端了。所以服务器端验证必须有。
另外,javascript里面数组长度确定了还可以改变大小,和集合一样:
用javascript实现全选:
另外,除了document.getElementsByName还可以document.getElementsByTagName。通过标签(像input这些标签)的名字获得元素,打印出来看看。如:
[b]使用Servlet实现服务器端验证:[/b]
验证条件也是:用户名、密码、重复密码不为空,密码和重复密码相同,长度6-10.
也是那个表单:给表单增加 action="someServlet" action="ValidateServlet"
新建 ValidateServlet.java
成功页面:
失败页面:
客户端验证:
--减少服务器负担。
--缩短用户等待时间。
--兼容性难。(不同浏览器对脚本语言的兼容性都是不同的)
服务器端验证:
--统一确认。
--兼容性强。
--服务器负载重。
客户端验证不写也是允许的,但服务器端验证必须有。用户可以(通过查看源代码直接输入地址)绕过客户端验证,如果服务器端的屏障没做好,插入到数据库的数据就是错误的,很麻烦。晚上的系统一般都有双重验证。
[b]使用使用JavaScript实现客户端验证:[/b]
验证条件:用户名、密码、重复密码不为空,密码和重复密码相同,长度6-10.
//myLogin.jsp <html> <head> <script type ="text/javascript"> function validate() { var usern = document.getElemertBYid("username1"); var pasw = document.getElemertBYid("password1"); var repasw = document.getElemertBYid("repassword1"); if(usern.value.length == 0) { alert("username can't be blank!") return false; } if(pasw.value.length < 6 || password.value.length > 10) { alert("length of password is invalid!") return false; } if(repasw.value.length < 6 || repasw.value.length > 10) { alert("length of repassword is invalid!") return false; } if(pasw.value.length != repasw.value.length ) { alert("password not the same!") return false; } } </script> </head> <body> <form onsubmit="return validate()" action="someServlet"> username:<input type="text" name="username" id="username1"><br> password:<input tytype="text" name="password" id="password1"><br> repassword:<input tytype="text" name="repassword" id="repassword1"><br> <input type="submit" value="submit"> </form> </body> </html>
script通常写在<head></head>里。
<script></script>表示里面使用js脚本。
使用js最常用的就是定义函数。没有那么多东西,就是function yourf(){} ,其所有的变量也都是由var定义的。 对于javascript也常用alert。
要获得下面表单的东西,方式有很多 :
1、给控件增加id属性。id属性不是被服务器端使用的,是被客户端javascript脚本使用的。
document是javascript内置对象,代表当前文档本身。 javascript不强制要有分号结束。
onsubmit="return validate();提交的时候调用该函数。分号可无。返回真才提交给服务器。
在js里点什么并没有全部的智能提示,没出现也可以用。
这时,用户可以这么做:
查看浏览器的该源代码,由<form onsubmit="return validate()" action="someServlet">发现表单提交到someServlet,并且有username、password、repassword3个变量。那他可以直接在浏览器url输入
http://……/someServlet?username=&password=123&repassword=456
这样用户就可以绕过客户端验证直接到达服务器端了。所以服务器端验证必须有。
另外,javascript里面数组长度确定了还可以改变大小,和集合一样:
//myLogin.jsp <html> <head> <script type ="text/javascript"> function validate() { //var usern = document.getElemertBYid("username1"); //var pasw = document.getElemertBYid("password1"); //var repasw = document.getElemertBYid("repassword1"); var usern = document.getElementsByName("username1")[0]; var pasw = document.getElementsByName("username1")[0]; var resw = document.getElementsByName("username1")[0];
用javascript实现全选:
<html> <head> <script type="text/javascript"> function selectAll() { var allMails = document.getElementsByName("allMails"); var mails = document.getElementsByName("email"); if(allMails.checked) { for(var i = 0; i < mails.length;i++) { mails[i].checked = true; } } else { for(var i = 0; i < mails.length;i++) { mails[i].checked = false; } } } </script> </head> <body> 全选<input type="checkbox" onclick="selectAll" name="allMails"><br><br><br> <input type="checkbox" name="email"><br> <input type="checkbox" name="email"><br> <input type="checkbox" name="email"><br> <input type="checkbox" name="email"><br> <input type="checkbox" name="email"><br> <input type="checkbox" name="email"><br> <input type="checkbox" name="email"><br> <input type="checkbox" name="email"><br> </body> </html>
另外,除了document.getElementsByName还可以document.getElementsByTagName。通过标签(像input这些标签)的名字获得元素,打印出来看看。如:
// in the function selectAll: var nodes=document.getElementsByTagName("input"); for(var i = 0 ; i <nodes.length;i++) { alert(nodes[i]); alert(nodes[i].type); }
[b]使用Servlet实现服务器端验证:[/b]
验证条件也是:用户名、密码、重复密码不为空,密码和重复密码相同,长度6-10.
也是那个表单:给表单增加 action="someServlet" action="ValidateServlet"
<body> <form onsubmit="return validate()" action="someServlet" action="ValidateServlet"> username:<input type="text" name="username" id="username1"><br> password:<input tytype="text" name="password" id="password1"><br> repassword:<input tytype="text" name="repassword" id="repassword1"><br> <input type="submit" value="submit"> </form> </body>
新建 ValidateServlet.java
成功页面:
失败页面:
相关文章推荐
- 使用JavaScript与Servlet实现客户端与服务器端验证
- 8、使用JavaScript与Servlet实现客户端与服务器端验证
- #笔记#圣思园 JavaWeb 第22讲——表单确认,JavaScript和Servlet实现客户端与服务器端验证
- 浅谈在ASP.NET MVC3中使用IClientValidatable接口实现客户端和服务器端同时验证
- Qt实现客户端/服务器端登录验证|数据传输使用md5加密
- 浅谈在ASP.NET MVC3中使用IClientValidatable接口实现客户端和服务器端同时验证
- 使用JavaScript与servlet实行简单的客户端和服务器验证
- 浅谈在ASP.NET MVC3中使用IClientValidatable接口实现客户端和服务器端同时验证
- Java Web笔记 – 客户端Javascript与服务器端Servlet的验证
- MVC学习十一:浅谈在ASP.NET MVC3中使用IClientValidatable接口实现客户端和服务器端同时验证
- 使用JavaScript实现客户端与服务器验证
- Java Web笔记 – 客户端Javascript与服务器端Servlet的验证
- asp.ne如何使用javascript去验证客户端信息,如果验证成功则送往服务器端处理,否则在客户端提示用户(不返回到服务器端处理)
- 利用Servlet和jsp实现客户端与服务器端的用户登录信息验证
- ASP.NET MVC3中使用IClientValidatable接口实现客户端和服务器端同时验证
- 使用Javascript实现客户端数据验证
- Qt实现客户端/服务器端登录验证|数据传输使用md5加密
- Android网络编程之——Android登录系统模块的实现(客户端+服务器端Servlet+MySQL)
- 使用Servlet过滤器实现用户登录验证