您的位置:首页 > 其它

简单CMS项目笔记之七:后台登陆登出模块

2012-12-07 14:27 537 查看
这块儿比较简单,就是action的跳转,sql查询用户名密码的匹配,session写入;登出时action要type="redirectAction"。利用i18n作统一的错误处理值得借鉴。

一:action

还是用*通配,要注意就是登出的时候action要type="redirectAction"

<!-- 管理员登录/退出 -->
<action name="log_*" class="com.yxq.action.LogInOutAction" method="{1}">
<result name="input">/pages/admin/Login.jsp</result>
<result name="login">/pages/admin/view/AdminTemp.jsp</result>
<result name="logout" type="redirectAction">goindex</result>
</action>


二:登陆jsp

和原来写过比,就是多了fielderror,

用于接受校验出错的提示信息,然后给登录者提示一下

(错误信息是通过i18n的getText完成的)

<s2:form action="log_Login.action" theme="simple">

<table border="0" width="90%" cellspacing="0" cellpadding="0">
<tr height="50"><td colspan="2"><s2:fielderror/></td></tr>
<tr height="30">
<td align="right" width="40%">用户名:  </td>
<td style="text-indent:5"><s2:textfield name="user.userName" size="30"/></td>
</tr>
<tr height="30">
<td align="right">密  码:  </td>
<td style="text-indent:5"><s2:password name="user.userPassword" size="30"/></td>
</tr>
<tr height="60">
<td></td>
<td>
<s2:submit value="登录"/>
<s2:reset value="重置"/>
<s2:a href="index.jsp">[返回首页]</s2:a>
</td>
</tr>
</table>


这里边jsp向action传值,用的是直接传“ 实例.属性 ”的方法,

这种方法只要求action里有同名的实例,再加上对应属性的setter&getter就行了

三:action

没有向info那样单独继承一个superaction,原因是比较简单 

仅多写一个bean就行了

public class LogInOutAction extends MySuperAction {
protected UserSingle user;


登录:dao里查值,登录成功的话把user实例写入session

/** 功能:查询数据表,验证是否存在该用户 */
public String Login(){
String sql="select * from tb_user where user_name=? and user_password=?";
Object[] params={user.getUserName(),user.getUserPassword()};
OpDB myOp=new OpDB();
if(myOp.LogOn(sql, params)){				//dao层判断是否登录成功
session.put("loginUser",user);			//写入session
return LOGIN;							//跳转到管理员管理页面
}
else{										//用户名或密码错误
addFieldError("loginE",getText("city.login.wrong.input"));
return INPUT;							//跳到重新登录页面
}
}


验证是否登录:看session中有值且是user实例

/** 功能:判断当前用户是否登录 */
public String isLogin(){
Object ob=session.get("loginUser");//去session里取值
if(ob==null||!(ob instanceof UserSingle))//判断有值 且是User实例,代表登陆成功
return INPUT;
else
return LOGIN;
}


退出前清掉session(此程序session里没别的东西),之后action要客户端跳转回首页

/** 功能:退出登录 */
public String Logout(){
session.clear();
return "logout";
}


四:数据校验

还是用action的validate-方法名执行

这个在jsp里加个js验证也行

这的错误信息是通过i18n的getText完成的,所有错误统一放在src/action文件夹下的package.properties文件里

里边都是类似:city.login.no.name=\u8bf7\u8f93\u5165 <b><font color="red">\u7528\u6237\u540d\uff01</font></b> 这样的定义,值得借鉴

/** 功能:验证是否输入用户名和密码 */
public void validateLogin() {
String name=user.getUserName();
String password=user.getUserPassword();

if(name==null||name.equals(""))
addFieldError("nameError",getText("city.login.no.name"));
if(password==null||password.equals(""))
addFieldError("passwordError",getText("city.login.no.password"));
}


登录成功后进入一个比较复杂的页面,用于显示全部后台管理的信息,

这个后边单说,这会儿已经完成了登录和登出的接口
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: