当前位置: 代码迷 >> Java Web开发 >> SSH集成用户登录BUG请问
  详细解决方案

SSH集成用户登录BUG请问

热度:40   发布时间:2016-04-13 22:44:27.0
SSH集成用户登录BUG请教
练习写了一个SSH集成的登录功能,但是遇到一个问题,每次登录时如果先用错误的账号密码登录,会提示登录失败,但是接着用正确的账号密码登录后,同样会提示账号和密码错误登录失败,而且DEBUG调试时根本不会进入我在action方法中设置的断点。确认账号密码都没有输错,因为只要首先不是用错误的账号密码登录,用正确的账号密码会登录成功

Struts配置文件
 <action name="login" class="userAction" method="login">
          <result type="redirect" name="success">/catalog/main.jsp</result>
          <result name="input">/authorize/login_form.jsp</result>
 </action>
登录页面代码:
<div class="center">
<div style=" padding: 5px; color: red" id="divErrorMssage">
<s:fielderror/><br/>
<span id="error_msg" style="color: red;"></span>
</div>
<div class="main">
<form method="post" action="authorize/login.action" styleId="ctl00">
<ul>
<li>
<span>请输入Email地址:</span>
<input type="text" name="user.email" id="txtUsername" class="textbox" value="${user.email}" onblur="checktxtUsername();"/>
</li>
<li>
<span class="blank">密码:</span>
<input type="password" name="user.password" id="txtPassword" class="textbox" onblur="checktxtPassword();"/>
</li>
<li>
<button type="submit" id="btnSignCheck" class="button_enter">登 录</button>
</li>
</ul>
</form>
</div>
<div class="user_new">
<p class="set_up">
<a href="javascript:;" onclick="location='authorize/register_one.jsp'">创建一个新用户&gt;&gt;</a>
</p>
</div>
</div>
ACTION代码:
       private User user;
private UserService userService;

public void setUserService(UserService userService) {
this.userService = userService;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public String login()throws Exception{
User u =userService.findByEAP(user.getEmail(), user.getPassword());
if(u == null){
addFieldError("login_error","用户名或密码错误");
return INPUT;
}
int n = userService.findEmailVerify(user.getEmail(), user.getPassword());
if(n != 1){
addFieldError("login_error","无效用户,您还未通过邮箱验证");
return INPUT;
}
String ip = request.getRemoteAddr();
long time = System.currentTimeMillis();
userService.updateIPATime(ip,time,u.getEmail());
session.setAttribute("user", u);
return SUCCESS;
}
业务层代码
public User findByEAP(String email, String password) throws Exception {
User u = userDao.findByEmail(email);
if(u == null){
return null;
}
if(!u.getPassword().equals(MD5.md5(password))){
return null;
}
return u;
}
DAO层代码
@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)
public User findByEmail(String email) throws SQLException {
User user = null; 
String hql="from User where email=?";
if(sessionFactory.getCurrentSession().createQuery(hql) != null){
Query query = sessionFactory.getCurrentSession().createQuery(hql);
query.setString(0, email.trim());
user = (User)query.uniqueResult();
}
return user;


------解决思路----------------------
这个是跳转造成的,比较麻烦,怕你不好处理,,使用ajax  spa模式把,这样好处理。。
------解决思路----------------------
楼主action是否有设置作用域呢 有可能是作用域问题 导致上一次提交的数据一直存在于值栈中 这样即使你重新输入正确的账号密码 action还是没有收到的
------解决思路----------------------
2楼上正解把
  相关解决方案