JSP做的页面中有用户 名和密码登录框。经判定,如果用户名正确,密码错误,那么用户名保留,让光标在密码框 内,
问具体怎么实现,现在其他都已实现,就是用户名正确 ,密码错误时,用户名和密码全空。请帮助谢谢
给出个很简单的例子。。
比如 用STRUST回显。。
不知道怎么向文本框传值
新手快帮帮忙啊~~
如果你只是提交到当前页面,用简单的script判断用户名和密码都不为空就提交,只需再判断密码为不为空的后面加一个if判断密码是否正确,如果错误,用document.all.username.focus();return false;就可以了.
如果你是提交到servlet的话,servlet经过判断转发到该页面时就是一次刷新页面的过程.所以你的值会全部清空,刷新后相当与一个全新的页面.这种解决的方案是采用异步提交方式,也就通常所说的AJAX技术来实现.
以下是ajax代码.随便写了下,你可以直接拿来用,可以看到效果.
var xmlHttpRequest;
function getXmlHttpRequest()
{
if(window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
return new XMLHttpRequest();
}
}
function get(url)
{
xmlHttpRequest = getXmlHttpRequest();
xmlHttpRequest.onreadystatechange = check;
xmlHttpRequest.open("get",url,true);
xmlHttpRequest.send(null);
}
function check()
{
if(xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){
var ret = xmlHttpRequest.responseText;
alert(ret);
}
}
你只需调用这里的get()方法传一个你提交的路径上去就可以了,然后在你提交的那个路径的servlet里写一个out.print("密码错误");
他会自动打印密码错误,而不会清空文本框的值.
手动清空文本框的script代码是document.all.username.value="";
如果你是提交到servlet的话,servlet经过判断转发到该页面时就是一次刷新页面的过程.所以你的值会全部清空,刷新后相当与一个全新的页面.这种解决的方案是采用异步提交方式,也就通常所说的AJAX技术来实现.
以下是ajax代码.随便写了下,你可以直接拿来用,可以看到效果.
var xmlHttpRequest;
function getXmlHttpRequest()
{
if(window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
return new XMLHttpRequest();
}
}
function get(url)
{
xmlHttpRequest = getXmlHttpRequest();
xmlHttpRequest.onreadystatechange = check;
xmlHttpRequest.open("get",url,true);
xmlHttpRequest.send(null);
}
function check()
{
if(xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){
var ret = xmlHttpRequest.responseText;
alert(ret);
}
}
你只需调用这里的get()方法传一个你提交的路径上去就可以了,然后在你提交的那个路径的servlet里写一个out.print("密码错误");
他会自动打印密码错误,而不会清空文本框的值.
手动清空文本框的script代码是document.all.username.value="";
温馨提示:答案为网友推荐,仅供参考
第1个回答 2008-09-22
用Ajax进行登录判断,当前页面根本不刷新。
第2个回答 2008-09-22
先把用户名放到session里,并设置一个标志位来判断是否是这种情况。然后写一段js代码到页面的载入事件中给用户名赋值。
<%@ page language="java" contentType="text/html; charset=GB2312"
pageEncoding="GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%
request.getSession().setAttribute("UserName", "cx");
request.getSession().setAttribute("LoginFlag", 1);
%>
<script language="JavaScript">
function mytest(){
var flag;
flag = "<%=session.getAttribute("LoginFlag")%>";
var username;
username = "<%=session.getAttribute("UserName")%>";
if(flag==1){
document.test.name.value = username;
}
else
document.test.name.value = "";
}
</script>
</head>
<body onLoad="JavaScript:mytest();">
<form name = "test">
<input type="text" name="name" />
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=GB2312"
pageEncoding="GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%
request.getSession().setAttribute("UserName", "cx");
request.getSession().setAttribute("LoginFlag", 1);
%>
<script language="JavaScript">
function mytest(){
var flag;
flag = "<%=session.getAttribute("LoginFlag")%>";
var username;
username = "<%=session.getAttribute("UserName")%>";
if(flag==1){
document.test.name.value = username;
}
else
document.test.name.value = "";
}
</script>
</head>
<body onLoad="JavaScript:mytest();">
<form name = "test">
<input type="text" name="name" />
</form>
</body>
</html>
第3个回答 推荐于2017-09-16
我有三种方案:
一,用框架提供的回显功能:struts或JSF都行。
二,用java或javascript的cookies。
三,用jsp的session内置对象。
具体做法,请稍等......
struts:form结合它所提供的html标签本身就是有回显功能
session:
你的servlet可能是这样
String userName = request.getParameter("userName");
String password = request.getParameter("password");
//验证正确性
//如果正确登录,否则进行下列操作
request.setAttribute(userName, userName);
request.getRequestDispatcher("/index.jsp").forward(request, response);
静态页面应该这样:
...
<input type="text" value="${userName }"/>
...
<!--用el来取到服务器发回来的值,也就是你提交的userName-->
这样,就会显示你先前所填写的了!
刚才开会让你久等里,不要意思,向你道歉!
呵呵...本回答被提问者采纳
一,用框架提供的回显功能:struts或JSF都行。
二,用java或javascript的cookies。
三,用jsp的session内置对象。
具体做法,请稍等......
struts:form结合它所提供的html标签本身就是有回显功能
session:
你的servlet可能是这样
String userName = request.getParameter("userName");
String password = request.getParameter("password");
//验证正确性
//如果正确登录,否则进行下列操作
request.setAttribute(userName, userName);
request.getRequestDispatcher("/index.jsp").forward(request, response);
静态页面应该这样:
...
<input type="text" value="${userName }"/>
...
<!--用el来取到服务器发回来的值,也就是你提交的userName-->
这样,就会显示你先前所填写的了!
刚才开会让你久等里,不要意思,向你道歉!
呵呵...本回答被提问者采纳
第4个回答 2008-09-22
在Index.jsp页面有(代码:使用Struts)
主要如下:
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> //导入标签
/*
这里的value: user是在Action中查询假如有这个用户名的话就用session.setattribute("user",user);保存之后return mapping.findforward(index);即返回index.jsp主页
*/
<html:form action="/user">
<html:text property="username" value="${user.username}"></html:text>
<html:password property="pwd"></html:password>
</html:form>
在formBean (User.java)中有 用户名和密码2个属性:
private String password;
private String username;
Getter 和Setter方法
在Action 中查询 假如有这个用户名的话就用
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;
String name=userForm.getUsername();
String pwd=userForm.getPassword();
SearchDAO sz=new SearchDAO();
if(sz.search(user))//调用方法查询:这里只查询用户名你可以根据你的实际情况处理
{
session.setattribute("username",name);
return mapping.findForward(index);//index是Strust配置文件中转向的页面
}
return null;
/*注:最好:formbean 中用javabean(User.java) 实体对象,以实体进行保存传递,获取,session中也最好保存实体*/
主要如下:
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> //导入标签
/*
这里的value: user是在Action中查询假如有这个用户名的话就用session.setattribute("user",user);保存之后return mapping.findforward(index);即返回index.jsp主页
*/
<html:form action="/user">
<html:text property="username" value="${user.username}"></html:text>
<html:password property="pwd"></html:password>
</html:form>
在formBean (User.java)中有 用户名和密码2个属性:
private String password;
private String username;
Getter 和Setter方法
在Action 中查询 假如有这个用户名的话就用
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;
String name=userForm.getUsername();
String pwd=userForm.getPassword();
SearchDAO sz=new SearchDAO();
if(sz.search(user))//调用方法查询:这里只查询用户名你可以根据你的实际情况处理
{
session.setattribute("username",name);
return mapping.findForward(index);//index是Strust配置文件中转向的页面
}
return null;
/*注:最好:formbean 中用javabean(User.java) 实体对象,以实体进行保存传递,获取,session中也最好保存实体*/