登录的一个小难点,该怎么解决
登录的一个小难点我有一个登录窗口,用户名,密码输入 ,然后登录判断用户名密码错误是在后台servlet里后台se
登录的一个小难点
我有一个登录窗口,用户名,密码输入 ,然后登录
判断用户名密码错误是在后台servlet里
后台servlet里判断的错误提示怎么传到前台并alert显示出来呢
就是假设我输入错误的用户名或密码,后台判断后 传给前台并显示出来
求代码 !后台
if (用户密码错误) {这里应该怎么做}
前台怎么能alert(密码或用户名错误!);
[解决办法]
Java coderesponse.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>
[解决办法]
[解决办法]
[解决办法]
后台
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>
[解决办法]
[解决办法]
想友好点,可以类似这样(假设你登录页是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跳转后台。