Struts2+Spring+iBatis整合用户管理实例之二:登录和登出

来源:互联网 发布:如何投资知乎 编辑:程序博客网 时间:2024/04/29 07:42

    



    登录和登出俩操作的流程都是:

    1.jsp提交到struts的Action,Action会查找所需的实例,这时spring帮助注入实例;

    2.注入的loginAction实例(spring已经往里注入了其他所需的实例)会去servise里查找实现的方法

    3. 执行具体实现后,还要对session操作,记录登录、登出状态。


1.登录jsp

根据session判断是否已登录,

登录过的情况下再显示:用户名、用户注销按钮、登录时间

<%  String s = (String)session.getAttribute("username");    if(null != s)//判断是否已分配session,登录过的情况下再显示以下信息      {  %>      <%=s %>同学你好!   <input type="button" name="lo" value="用户注销"onClick="doLink('logOut')" /><br>        <h4>(您已经在本站点停留了<%=(session.getLastAccessedTime()-session.getCreationTime())/1000 %>秒)</h4> <!--计算session创建时间-->  <%         }  %> 

根据传参控制调用的Action以及方法

<!-- 根据传参控制调用的Action以及方法 --><script type="text/javascript">var link;function doLink(link) {document.getElementById("myform").action = link;document.getElementById("myform").submit();}</script></head>
表单

<form id="myform" action="login" method="post"><input type="button" name="b2" value="注册"onClick="window.open('register.jsp','new','height=250,width=400,top=100,left=400')" />   <input type="button" name="b1" value="用户管理"onClick="doLink('queryall')" /><br><br>username:<input type="text" name="username" /><br>password:<input type="password" name="password" /><br><input type="submit" name="sub" value="登录" />    <input type="reset" name="reset" value="重置" /></form>



2.loginAction

这个Action只管登录和登出的事

里边聚合了一个service实例,这个要靠spring来注入,

除了要调用service的方法,还有通过session来管理登录状态:

public class LoginAction extends ActionSupport {    private String username;    private String password;    private ILogin service;         public LoginAction()    {    }public String login(){boolean flag = false;flag = service.login(getUsername(), getPassword());if(true == flag){Map<String, Object> attibutes = ActionContext.getContext().getSession();//记录用户登录信息attibutes.put("username", username);attibutes.put("password", password);//登录session }return flag==true?SUCCESS:ERROR;    } public String logOut(){ Map<String, Object> attibutes = ActionContext.getContext().getSession();attibutes.remove("username");    return SUCCESS;}        //setter&getter}


3.loginService

这儿只用到了dao中的一个方法,从数据库中查询后放回给action

public class LoginService implements ILogin{private User_SSI user;    private IUserDao dao;public boolean login(String username, String password)    {    user.setUsername(username);    user.setPassword(password);    List<User_SSI> l = dao.queryUserName(user.getUsername());    for(int i=0;i<l.size();i++)    {    String pwd = l.get(i).getPassword();    if(user.getPassword().equals(pwd))     return true;    }    return false;    }    //setter&getter




4.登录结果jsp

通过action处理后跳转到下面的页面中

成功可以返回继续操作,或者直接注销

<%         String sa = (String)session.getAttribute("username");      if(null != sa && !sa.equals("") ) //null是防止NullPointer,如果session设置成功,就不是空值      {  %>      <h2> 登录成功 ,欢迎  :"<%=sa%>"  登录 </h2>      <br>      <h2> <a href="index.jsp"> 返回主页</a></h2> <br>     <h2> <a href="logOut.jsp">注销按钮</a> </h2>  <%      }      else      {  %>           <h2>还未登录 <a href="index.jsp">点此处登录</a></h2>  <%         }  %> 

失败倒计时两秒后退回登陆页重新登录

  <body><%  response.addHeader("refresh","2;URL=index.jsp");  %>     <h2> 登录失败,两秒后自动跳转回主页</h2>    <h2> 或点此处<a href="index.jsp">重新登录</a> </h2>    </body>

    <body>   <%       response.setHeader("refresh","3;URL=index.jsp"); //倒计时跳转  %>             <h2>已经注销成功, 3秒内若没有跳转,<a href="index.jsp">请点击此处</a></h2>             </body>  




















原创粉丝点击