登陆模块学习笔记
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;
}
}
需求
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;
}
}
相关文章推荐
- mojoportal学习笔记之 几个模块的数据库结构
- perl学习笔记十一-----模块
- ORACLE DBA学习笔记--使用LOGON TRIGGER限制用户登陆
- 【javaweb 学习笔记】 第一课 最简单的登陆
- 登陆方式及SSO学习笔记一
- Enterprice library学习笔记之一:【初探】缓存应用模块
- Enterprise Library 4.1 学习笔记( 二)配置应用程序模块
- Enterprise Library 4.1 学习笔记(一)缓存模块
- MM模块学习笔记
- 设备驱动学习笔记(1)----设备和模块的分类
- 关于用jsp实现http认证安全登陆的学习笔记。(正在原创ing)
- 『框架设计(第2版)CLR Via C#』学习笔记(001)——将源代码编译成托管模块
- Enterprise Library 4.1 学习笔记( 三)加密模块
- lalala~ 我的第一篇linux学习笔记_如何查看系统模块
- DNN学习笔记-无法登陆解决
- 登陆验证模块笔记(一)
- Python 学习笔记 - 11.模块(Module)
- 【学习笔记】--Java过滤器,用户登陆验证过滤等
- 逐步登陆学习笔记(一)
- Servlet学习笔记(四)-----使用Servlet处理用户注册和登陆