您的位置:首页 > 其它

登陆模块学习笔记

2014-06-07 15:56 141 查看
学习记录及代码:

需求

1)请求1:打开登录页

    URL-->filter(struts.xml)-->Action-->JSP

    --Action

        Action仅仅是将请求转给JSP,本身没有任何的业务逻辑,所以可以不写。

    --struts.xml

        在配置这个Action时,不必指定class属性,此时Struts2会调用默认的Action,即

        ActionSupport,该默认Action中有默认方法execute,该方法直接返回"success"。

    --JSP

2)请求2:点击登录

    Submit-->filter(struts.xml)-->Action -->DAO-->DBUtil,Entity -->index.jsp/login.jsp

    --Entity

    --DAO

    --Action

    --struts.xml

    --JSP

3)

       让Action实现接口SessionAware,该接口需要实现一个 void setSession(Map<String,Object> map),该方法的目的是将session传入给Action。 即,当Action被实例化以后,Struts2会自动判断其是否实现了SessionAware接口,如果是则自动调用其setSession方法。

代码:

DAO:

public class LoginDAOImpl implements ILoginDAO{

public Admin findByCode(String adminCode) throws DAOException {
if(adminCode.length()==0 || adminCode==null){
return null;
}
String sql = "select * from admin_info where admin_Code=?";
Connection con = DBUtil.getConnection();

try {
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, adminCode);

ResultSet rs = ps.executeQuery();
if(rs.next()){
Admin a = createAdmin(rs);
return a;
}
} catch (SQLException e) {
e.printStackTrace();
throw new DAOException("查询管理员信息失败",e);
}finally{
DBUtil.close(con);
}
return null;
}

private Admin createAdmin(ResultSet rs) throws SQLException {
Admin admin = new Admin();
admin.setId(rs.getInt("id"));
admin.setAdminCode(rs.getString("admin_code"));
admin.setPassword(rs.getString("password"));
admin.setName(rs.getString("name"));
admin.setTelephone(rs.getString("telephone"));
admin.setEmail(rs.getString("email"));
admin.setEnrollDate(rs.getDate("enrolldate"));
return admin;
}

}

Action:
public class LoginAction extends BaseAction{
public String execute() throws DAOException {
ILoginDAO dao = DAOFactory.getLoginDAO();
Admin a = null;
try {
a = dao.findByCode(adminCode);
//判断账号是否正确
if(a == null){
message = "账号有误";
return "fail";
}else{
//如果账号对了判断密码是否正确
if(!a.getPassword().equals(password)){
message = "密码有误";
return "fail";
}
}
} catch (DAOException e) {
e.printStackTrace();
return "error";
}
session.put("admin", a);
return "success";
}

// input
private String adminCode;
private String password;

// output
private String message;

public String getAdminCode() {
return adminCode;
}

public void setAdminCode(String adminCode) {
this.adminCode = adminCode;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

}

struts.xml
<!-- 登陆模块的配置 -->
<package name="login" namespace="/login" extends="struts-default">
<!-- 跳转到登陆页Action -->
<action name="toLogin">
<result name="success">
/WEB-INF/main/login.jsp
</result>
</action>
<!-- 登陆验证Action -->
<action name="login" class="netctoss.action.LoginAction">
<result name="success">
/WEB-INF/main/index.jsp
</result>
<result name="fail">
/WEB-INF/main/login.jsp
</result>
<result name="error">
/WEB-INF/main/error.jsp
</result>
</action>
</package>


Jsp:
<form action="login" method="post">
<table>
<tr>
<td class="login_info">账号:</td>

4000
<td colspan="2"><input name="adminCode" type="text" class="width150" /></td>
<td class="login_error_info"><span class="required">30长度的字母、数字和下划线</span></td>
</tr>
<tr>
<td class="login_info">密码:</td>
<td colspan="2"><input name="password" type="password" class="width150" /></td>
<td><span class="required">30长度的字母、数字和下划线</span></td>
</tr>
<tr>
<td class="login_info">验证码:</td>
<td class="width70"><input name="" type="text" class="width70" /></td>
<td><img src="../images/valicode.jpg" alt="验证码" title="点击更换" /></td>
<td><span class="required"></span></td>
</tr>
<tr>
<td></td>
<td class="login_button" colspan="2">
<a href="javascript:document.forms[0].submit();"><img src="../images/login_btn.png" /></a>
</td>
<td><span class="required"><s:property value="message"/></span></td>
</tr>
</table>
</form>

BaseAction和ILoginDAO
public interface ILoginDAO {
Admin findByCode(String adminCode) throws DAOException;
}

public class BaseAction implements SessionAware{

protected Map<String, Object> session;
public void setSession(Map<String, Object> arg0) {
session = arg0;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: