首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

登录的一个小难点,该怎么解决

2012-03-05 
登录的一个小难点我有一个登录窗口,用户名,密码输入 ,然后登录判断用户名密码错误是在后台servlet里后台se

登录的一个小难点
我有一个登录窗口,用户名,密码输入 ,然后登录
判断用户名密码错误是在后台servlet里
后台servlet里判断的错误提示怎么传到前台并alert显示出来呢
就是假设我输入错误的用户名或密码,后台判断后 传给前台并显示出来

求代码 !后台

if (用户密码错误) {这里应该怎么做}


前台怎么能alert(密码或用户名错误!);

[解决办法]

Java code
response.getWriter().println("<script>alert('密码或用户名错误!')</script>");response.setHeader("Refresh", "0.5;url=login.jsp");
[解决办法]
5楼的方法应该可以搞定。

想友好点,可以类似这样(假设你登录页是login.jsp):
◎ Servlet中
response.sendRedirect("login.jsp?errorMsg=密码或用户名错误!");
◎ login.jsp中
<%
String msg = request.getParameter(errorMsg);
if (msg != null) {
out.println("<script language='javascript'>alert('"+msg+"')</script>");
}
%>

[解决办法]
response.getWriter().println("<script>alert('密码或用户名错误!')</script>");
意思是输出一段html代码,这段代码其实是个js,背景自然是白的了。
然后当点击确定了后
response.setHeader("Refresh", "0.5;url=你登录时的页面.jsp");
跳转回登录页(其实是刷新),就实现了这个效果。

你要理清楚这个交互的过程
[解决办法]
直接在登录框上面输出红色的字不就行了?类似淘宝登录
[解决办法]
ajax
[解决办法]
探讨

直接在登录框上面输出红色的字不就行了?类似淘宝登录

[解决办法]
Ajax 登陆:




登录时调用Login()方法;url 就是你要提交到的地址+参数

页面部分:
<script type="text/javascript">

function createXMLHttpRequest() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else {
if (window.ActiveXObject) {
try {
return new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
return new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
}
}
}
}
}
function Login(){

var username = document.myForm.username.value;
var userpwd = document.myForm.password.value;
var isremenmber=false;
if(document.myForm.isremember.checked){
isremenmber=true;
}
if(username==""){
document.getElementById("username_success").innerHTML="请输入您的帐号!";
return;
}else if(userpwd==""){
document.getElementById("passsword_success").innerHTML="请输入您的密码!";
return;
}else{

var random=Math.random();

var url = "login!Login.action?username=" + encodeURI(encodeURI(username)) + "&password=" + userpwd + "&random=" + random+" &isremenmber="+isremenmber;
var XMLHttpReq = createXMLHttpRequest();
XMLHttpReq.onreadystatechange = function () {
if (XMLHttpReq.readyState == 4) {
if (XMLHttpReq.status == 200) {

var text = XMLHttpReq.responseText;

if(text==1){
alert("登录成功!");
window.location.href="index.action";

}else if(text==-1){
alert("该用户不存在!");
window.setTimeout("parent.window.location.reload('login.jsp')", 1000);

}else if(text==0){
alert("登录密码不正确!");
window.setTimeout("parent.window.location.reload('login.jsp')", 1000);

}else{
alert("登录失败!");


window.setTimeout("parent.window.location.reload('login.jsp')", 1000);

} else {
alert("登录失败!请重新尝试.");
window.setTimeout("parent.window.location.reload(true)", 1000);
}

}
};
XMLHttpReq.open("GET", url, true);
XMLHttpReq.send(null);
}
}
function init(){
document.myForm.username.focus();
}
</script>




[解决办法]

探讨

引用:
直接在登录框上面输出红色的字不就行了?类似淘宝登录


我会做输出的字 另外也会做alert 有空白的

也会用jq
我就想不用上面这样的 弹出一个错误提示 就跟咱平时alert 一样,不然为啥我觉得难呢?请大家发表见解,也可以拍砖!呵呵

[解决办法]
探讨

不过我处理登录时用户名密码错误的方法是跳转到一个专门的error页面,而不是采用弹出对话框的方式。
只有在输入不合法的信息时才用对话框,这样比较简短

[解决办法]
后台
if (用户密码错误) {msg="用户名密码错误";}
requet.setAttribute("msg",msg);
=======================================
前台
alert('${msg}');

[解决办法]
采用jquery处理请求
HTML code
<html> <head> <script src="jquery.js"></script><script>$(document).ready(function(){    var form = $('#form');    var username = $('#username');    var password = $('#password');    var submit = $('#submit');        submit.click(function() {        var url = form.attr('action');        var param = {            username : username.val(),            password : password.val()        };        $.post(url,param,function(data){            if(data.success)                location.href='成功登陆页面.html';            else                alert(data.msg);        },'json');                return false;    });});</script></head> <body> <form id="form" action="servlet.json" method="post"><input type="text" id="username" name="username"/><br/><input type="text" id="password" name="password"/><br/><input type="submit" id="submit"/></form></body> </html>
[解决办法]
探讨
后台
if (用户密码错误) {msg="用户名密码错误";}
requet.setAttribute("msg",msg);
=======================================
前台
alert('${msg}');

[解决办法]
想友好点,可以类似这样(假设你登录页是login.jsp):
◎ Servlet中
response.sendRedirect("login.jsp?errorMsg=密码或用户名错误!");
◎ login.jsp中
<%
String msg = request.getParameter(errorMsg);
if (msg != null) {
out.println("<script language='javascript'>alert('"+msg+"')</script>");
}
%>

[解决办法]
可以将form的target指向一个隐藏的iframe,在后台流输出javascript代码字符串。
或使用ajax,指定一个值表示登陆成功,当成功使用location.href跳转后台。

热点排行