最近自己在学习web开发,想做个jsp+servlet的用户密码登录界面,遇到了以下几个问题不太理解,寻求大家帮助。1.jsp代码如下,但是在浏览器上面显示的text框和password框的长度却不一样,password框小了一点,什么原因?
<td>
用户名:
</td>
<td>
<input type="text" name="username" size="20">
</td>
</tr>
<tr>
<td>
密    码:
</td>
<td>
<input type="password" name="password" size="20">
</td>2.代码如下:
(1)为什么JavaScript中判断空的时候要加return false;不加的话就跑到下一个画面去了?
(2)为什么jsp中要用return usrCheck(),只用usrCheck()也不行?
《JavaScript》
function usrCheck() {
var username = document.loginForm.username.value;
var password = document.loginForm.password.value;
if (username == "") {
alert("用户名不能为空!");
return false;
}
}
《jsp》
<input type="submit" value="登录" onclick="return usrCheck()">3.在servlet中判断用户名密码是否正确,如果不正确的话,怎么才能让页面在回到登录页面,并且显示“用户名密码不正确”。4.能顺便说说Button与submit的区别吗?
<td>
用户名:
</td>
<td>
<input type="text" name="username" size="20">
</td>
</tr>
<tr>
<td>
密    码:
</td>
<td>
<input type="password" name="password" size="20">
</td>2.代码如下:
(1)为什么JavaScript中判断空的时候要加return false;不加的话就跑到下一个画面去了?
(2)为什么jsp中要用return usrCheck(),只用usrCheck()也不行?
《JavaScript》
function usrCheck() {
var username = document.loginForm.username.value;
var password = document.loginForm.password.value;
if (username == "") {
alert("用户名不能为空!");
return false;
}
}
《jsp》
<input type="submit" value="登录" onclick="return usrCheck()">3.在servlet中判断用户名密码是否正确,如果不正确的话,怎么才能让页面在回到登录页面,并且显示“用户名密码不正确”。4.能顺便说说Button与submit的区别吗?
解决方案 »
- 小弟是新号分数不高:我想问下关于showModalDialog模态窗口传值的问题,个位大神帮帮我
- maven的web项目构建
- 怎么在eclipse中导入spring源码?谢谢!
- 紧急求助:poi 读取Excel 整数出现 .o
- jsp获取url中参数值带%
- 我的首个JSTL程序就出错...大家指点一下..昨天晚上都今天一直没解决.
- 想在jsp中利用javascript动态生成显示复选框,求助!!!
- 用JAVA连接Mysql的问题,请各位帮帮忙呀~~(内附源代码)
- *********急===jsp的简单问题===急********
- 在LINUX和UNIX,SUN上除JDK外,还有没有其他较好的JAVA编译器,编辑器!!!
- 在glassfish服务器中怎样配置JNDI数据源
- 怎么在服务器上运行一段驻留程序?
2.判断空不需要加return false,加上的原因见你代码.
onclick="return usrCheck()" 定义了onclick事件,这个事件完成后会提交表单,因为你的input是submit类型.而return false;可以阻止方法继续传播.
3.servlet中判断,如果正确转到正确的页面,这步怎么做的,返回错误页面也怎么做.不过用户体验的原因,用户希望返回他以前输入的数据和错误原因,你可以再返回的时候顺便携带这些信息.也可用异步请求ajax来做,看个人喜好和需求了.异步的话需要判断正确后跳转正确的页面,错误时候用js将错误信息呈现.
4.button 和 submit 只是在页面呈现的时候可能长的差不多.本来用途是不一样的.button 是普通按钮,功能略少与<button>标签,可以定义button的onclick单击事件来完成各种操作,当然也可以提交表单.submit本身就是用来提交表单的,就算没有定义onclick事件,他也会提交他所在的form表单.当前也可以定义onclick事件在提交前做别的事情,但是只要他的onclick事件没有停止传播,onclick事件完成后,表单就会提交.
答:他告诉程序,程序运行return之后就后跳出此方法、以下代码不执行、否则执行下面代码
跑到下一个画面去了?(2)为什么jsp中要用return usrCheck(),只用usrCheck()也不行?
答:表单form会接收一个boolean数据 如果是false的话就不执行提交功能 怎么能把false让form接收到呢 这就用到了return;(3)在servlet中判断用户名密码是否正确,如果不正确的话,怎么才能让页面在回到登录页面,并且显示“用户名密码不正确”。
答:你可以写一个model类,类里面的内容是把页面上的数据作为条件,在数据库里进行查看一下,如果存在则返回个true(也就是存在此账号密码 并接登录成功),否则返回false,然后在servlet里把页面的参数获取到,可以用String userName=request.getParameter("userName");密码同上 然后把参数传入到类中进行操作,如Boolean bUser=baseDao.findUser(userName,password);然后判断bUser是否为true就可以达到目的。
返回页面也很简单,可以这么写request.getRequestDispatcher("index.jsp").forward(request,response);
提示用户密码不正确可以这么写, 在servlet中
if(bUser==false)
{
request.setAttribute("error","用户名或密码不正确")
}
在index.jsp中
<%
try{
String error=(String)request.getAttribute("error");
}
catch(Exception e){}
%>
<%=error %>(4)能顺便说说Button与submit的区别吗?
答:区别就是submit按钮不可以直接调用form的submit()方法 从而进行提交数据 而button需要自己定义
首先,谢谢你这么耐心的解答,不过我还有两个问题(1)。上面这段代码放到程序中会报错,<%=error %>中的error不识别,应该是在try外面的原因吧。另外,这样写,刚跑出画面的时候画面上会有一个null,不想显示它,怎么解决?(2)。我今天又遇见了一个新问题,请求帮助:那段判断代码我是这样写的,不知道好不好。
<%
String error = (String)request.getAttribute("error");
if (error != null) {
%>
<script type="text/javascript">
alert("用户名或密码错误!");
</script>
<%
}
%>问题:我的用户界面网址是http://localhost:8081/SalSys/Login.jsp
当我第一次输入错误的用户名密码时,弹出上面的对话框,但是上面的网址显示的是
http://localhost:8081/SalSys/login,而我在程序中写的是:
request.getRequestDispatcher("Login.jsp").forward(request, response);为什么不跳到
http://localhost:8081/SalSys/Login.jsp呢?
我第二次输入正确的用户名,正常跳转到下一个页面,但是上面的网址显示的还是
http://localhost:8081/SalSys/login,而我在程序中写的是:
request.getRequestDispatcher("Home.jsp").forward(request, response);为什么不跳到
http://localhost:8081/SalSys/Home.jsp呢?
而在这个操作以后我点击浏览器的后退键,同样弹出了那个错误的对话框,而我想点击浏览器的后退键的时候,返回登录画面,怎么做?
当我第一次输入错误的用户名密码时,弹出上面的对话框,但是上面的网址显示的是
http://localhost:8081/SalSys/login,而我在程序中写的是:
request.getRequestDispatcher("Login.jsp").forward(request, response);为什么不跳到
http://localhost:8081/SalSys/Login.jsp呢?
我第二次输入正确的用户名,正常跳转到下一个页面,但是上面的网址显示的还是
http://localhost:8081/SalSys/login,而我在程序中写的是:
request.getRequestDispatcher("Home.jsp").forward(request, response);为什么不跳到
http://localhost:8081/SalSys/Home.jsp呢?
而在这个操作以后我点击浏览器的后退键,同样弹出了那个错误的对话框,而我想点击浏览器的后退键的时候,返回登录画面,怎么做?
还是没得到想要的答案,能说的明白点吗?