為什么我用模型驅(qū)動獲取不到登錄頁面輸入的用戶名和密碼,而且輸入正確的用戶名和密碼都只能調(diào)到登錄失敗的頁面?
UserAction.java
public class UserAction extends ActionSupport implements ModelDriven<User>{
//模型驅(qū)動使用的對象
? ? private User user = new User();
/**用于接收jsp獲得的參數(shù),這樣獲得的用戶名和密碼就會封裝到user這個對象當(dāng)中。
* @return
*/
@Override
public User getModel() {
return user;
}
//注入業(yè)務(wù)層的類,并提供一個setter方法
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
/**用戶登錄的執(zhí)行方法
* @return
*/
public String login(){
System.out.println("login方法執(zhí)行了");
System.out.println(user.getUsername()+" ?"+user.getPassword());
//調(diào)用業(yè)務(wù)層的類
User existUser = userService.login(user);
if(existUser == null){
//登錄失敗
this.addActionError("用戶名或密碼不正確!");
return INPUT;
}else{
//登錄成功
//把用戶信息存入到session當(dāng)中
ActionContext.getContext().getSession().put("existUser", existUser);
return SUCCESS;
}
}
UserServiceImpl.java
/*
?* 用戶業(yè)務(wù)層實(shí)現(xiàn)類
?*/
public class UserServiceImpl implements UserService {
//注入DAO的類,并提供一個setter方法
? ? private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
/*?
* 業(yè)務(wù)層登錄的方法
*/
@Override
public User login(User user) {
User existUser = userDao.findByUsernameAndPassword(user);
return existUser;
}
? ??
}
UserDaoImpl.java
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
? ? /**
? ? ?* DAO中根據(jù)用戶名和密碼查詢用戶的方法
? ? ?*/
@Override
public User findByUsernameAndPassword(User user) {
String hql = "from User where username = ? and password = ?";
List<User> list = (List<User>) this.getHibernateTemplate().find(hql, user.getUsername(),user.getPassword());
if(list.size() > 0){
return list.get(0);
}
? ?return null;
? ? }
}
登錄頁面index.jsp
<%@ page language="java" contentType="text/html; charset=GBK"
? ? pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>登錄頁面</title>
<link href="css/style.css" rel="stylesheet" type="text/css" media="all" />
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<script type="text/javascript" src="js/jquery-1.8.0.js"></script>
<script type="text/javascript" language='javascript' src="js/index.js"></script>
</head>
<body>
<!-- contact-form -->
<div class="message warning">
<div class="inset">
? <div class="login-head">
<h1>歡迎登錄</h1>
? </div>
? ?<h3><s:actionerror/></h3>
<s:form action="user_login" method="post" namespace="/">
<li>
<input type="text" id="username" class="text" value="用戶名" ><a href="#" class="icon user"></a>
</li>
<div class="clear"> </div>
<li>
<input type="password" id="password" value="Password"> <a href="#" class="icon lock"></a>
</li>
? ? ? ? ? ? ? ?<div class="clear"> </div>
<div class="submit">
<input type="submit" id="login" value="登錄" >
<h4><a href="sign.jsp">注冊</a></h4>
<div class="clear"> ?</div>
</div>
</s:form>
</div>
</div>
<div class="clear"> </div>
</body>
</html>
struts.xml的配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
? ?<package name="luntan" extends="struts-default" namespace="/">
? ? ? ? <action name="user_*" class="userAction" method="{1}">
? ? ? ? ? ?<result name="input">/index.jsp</result>
? ? ? ? ? ?<result name="success" type="redirect">/default.jsp</result>
? ? ? ? </action>
? ?</package> ? ??
</struts>
2018-02-27
搞定了嗎?我也遇到這樣的問題
2017-02-28
這里不需要強(qiáng)制類型轉(zhuǎn)換吧
2017-02-12
重新從頭做一遍