我有一个jsp页面,它映射到struts.xml,其中在一个动作类中,它从数据库检查ID和密码是否正确。如果它们正确,它将映射到corret页面。我想如果它不映射,那么应该在其中显示一个jQuery弹出窗口,“ ID或密码错误”!
HTML代码
<form action="alreadylogin" method="post">
Enter your Email Id <input type="email" name="loginemail" placeholder="Enter Your Email Id" required ><br><br>
Enter your Password <input type="password" name="loginpass" placeholder="Enter your Password" required ><br><br>
<input type="reset" value="Reset">
<input type="submit" value="Submit">
动作类:此处的动作类显示了从STRUTS.XML映射的动作。
public String execute()
{
String check=null;
try {
ResultSet r = st.executeQuery("select userpass,firstname from register where usermail='"+ loginemail +"'");
while (r.next()) {
String psw=r.getString(1);
String name=r.getString(2);
jname=name;
if(psw.equals(loginpass))
{
session.put("S3CRET", "S3CRET");
session.put("USERNAME", jname);
check="success";
}
else
{
check="input";
}
}
}
finally
{
return check;
}
如何在此处应用jQuery弹出窗口?
最佳答案
您已经在提交页面了;使用jQuery弹出框不再有意义
因为您无论如何都会转发或重定向回来–只需显示
输入结果页面中的相应消息。
如果您真的认为有必要进行其他工作,那么豪尔赫的答案是合适的。如果要避免页面刷新,请使用JSON插件并仅返回JSON响应。这增加了您似乎尚未准备好的复杂程度。
这是一堆无关的评论。
ResultSet r =
st.executeQuery("select userpass, firstname from register where usermail='" + loginemail + "'");
这是SQL注入的邀请。不要这样做;使用准备好的语句。
String name = r.getString(2);
jname = name;
if (psw.equals(loginpass)) {
session.put("S3CRET", "S3CRET");
session.put("USERNAME", jname);
这里没有理由使用
jname
。您已经有name
;进行会话,例如String name = r.getString(2);
if (psw.equals(loginpass)) {
session.put("USERNAME", name);
完全没有理由将密码放入会话中。
我认为在这么短的方法中仅包含一个return语句并不有价值。
请尽快返回适当的结果,并允许进行更快的推理
方法。
public String execute() {
String name;
ResultSet r = st.executeQuery("select userpass,firstname from register where usermail='" + loginemail + "'");
while (r.next()) {
if (!psw.equals(loginpass)) {
return INPUT;
}
name = r.getString(2);
}
session.put("USERNAME", name);
return SUCCESS;
}
在
execute
方法中这些都不会发生。方法应在同一级别上运行抽象,只做一件事情,然后完全完成。 execute方法应该做的更多
而不是检查有效的登录名并返回适当的结果,则更接近:
public String execute() {
return loginService.login(email, password) ? SUCCESS : INPUT;
}
login
应该存在于注入到动作中的服务中,或者至少存在于动作课。我不能推荐后者;有关更多详细信息,请搜索与“反转”相关的任何内容
控制”,“依赖注入”,“编写可测试的Java代码”等等。