Struts2+Spring+iBatis整合用户管理实例之二:登录和登出
2013-01-16 14:12
429 查看
原帖地址:http://blog.csdn.net/ruantao1989/article/details/8143979
感谢原作者
登录和登出俩操作的流程都是:
1.jsp提交到struts的Action,Action会查找所需的实例,这时spring帮助注入实例;
2.注入的loginAction实例(spring已经往里注入了其他所需的实例)会去servise里查找实现的方法
3. 执行具体实现后,还要对session操作,记录登录、登出状态。
登录过的情况下再显示:用户名、用户注销按钮、登录时间
[html]
view plaincopyprint?
<%
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以及方法
[javascript]
view plaincopyprint?
<!-- 根据传参控制调用的Action以及方法 --> <script type="text/javascript"> var link; function doLink(link) { document.getElementById("myform").action = link; document.getElementById("myform").submit(); } </script> </head>
[html]
view plaincopyprint?
<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>
里边聚合了一个service实例,这个要靠spring来注入,
除了要调用service的方法,还有通过session来管理登录状态:
[java]
view plaincopyprint?
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}
[java]
view plaincopyprint?
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
成功可以返回继续操作,或者直接注销
[html]
view plaincopyprint?
<%
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>
<%
}
%>
失败倒计时两秒后退回登陆页重新登录
[html]
view plaincopyprint?
<body>
lt;%
response.addHeader("refresh","2;URL=index.jsp");
>
<h2> 登录失败,两秒后自动跳转回主页</h2>
<h2> 或点此处<a href="index.jsp">重新登录</a> </h2>
</body>
[html]
view plaincopyprint?
<body>
;%
response.setHeader("refresh","3;URL=index.jsp"); //倒计时跳转
t;
<h2>已经注销成功, 3秒内若没有跳转,<a href="index.jsp">请点击此处</a></h2>
</body>
感谢原作者
登录和登出俩操作的流程都是:
1.jsp提交到struts的Action,Action会查找所需的实例,这时spring帮助注入实例;
2.注入的loginAction实例(spring已经往里注入了其他所需的实例)会去servise里查找实现的方法
3. 执行具体实现后,还要对session操作,记录登录、登出状态。
1.登录jsp
根据session判断是否已登录,登录过的情况下再显示:用户名、用户注销按钮、登录时间
[html]
view plaincopyprint?
<%
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创建时间-->
<%
}
%>
<% 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以及方法
[javascript]
view plaincopyprint?
<!-- 根据传参控制调用的Action以及方法 --> <script type="text/javascript"> var link; function doLink(link) { document.getElementById("myform").action = link; document.getElementById("myform").submit(); } </script> </head>
<!-- 根据传参控制调用的Action以及方法 --> <script type="text/javascript"> var link; function doLink(link) { document.getElementById("myform").action = link; document.getElementById("myform").submit(); } </script> </head>表单
[html]
view plaincopyprint?
<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>
<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来管理登录状态:
[java]
view plaincopyprint?
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}
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[java]
view plaincopyprint?
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
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处理后跳转到下面的页面中成功可以返回继续操作,或者直接注销
[html]
view plaincopyprint?
<%
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>
<%
}
%>
<% 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> <% } %>
失败倒计时两秒后退回登陆页重新登录
[html]
view plaincopyprint?
<body>
lt;%
response.addHeader("refresh","2;URL=index.jsp");
>
<h2> 登录失败,两秒后自动跳转回主页</h2>
<h2> 或点此处<a href="index.jsp">重新登录</a> </h2>
</body>
<body> <% response.addHeader("refresh","2;URL=index.jsp"); %> <h2> 登录失败,两秒后自动跳转回主页</h2> <h2> 或点此处<a href="index.jsp">重新登录</a> </h2> </body>
[html]
view plaincopyprint?
<body>
;%
response.setHeader("refresh","3;URL=index.jsp"); //倒计时跳转
t;
<h2>已经注销成功, 3秒内若没有跳转,<a href="index.jsp">请点击此处</a></h2>
</body>
<body> <% response.setHeader("refresh","3;URL=index.jsp"); //倒计时跳转 %> <h2>已经注销成功, 3秒内若没有跳转,<a href="index.jsp">请点击此处</a></h2> </body>
相关文章推荐
- Struts2+Spring+iBatis整合用户管理实例之二:登录和登出
- Struts2+Spring+iBatis整合用户管理实例之一:多个Action、service的配置
- Struts2+Spring+iBatis整合用户管理实例之三:用户管理,增删改查
- Struts2+Spring+iBatis整合用户管理实例之三:用户管理,增删改查
- Struts2+Spring+Ibatis用户注册、登录、管理入门学习实例源码下载
- Struts2+Spring+iBatis整合用户管理实例之一:多个Action、service的配置
- ASP.NET整合Discuz!NT3.5实例说明(含用户登录、评论等)
- Struts 2.1.6 精简实例系列教程(6):重写用户登录模块(整合Jquery+JSON)
- java struts2入门学习实例--用户注册和用户登录整合
- ucenter整合第三方应用,实现单点登录,用户信息统一管理
- ASP.NET整合Discuz!NT3.5实例说明(含用户登录、评论等)
- SSH整合开发实例:用户管理系统
- Struts 2.1.6 精简实例系列教程(6):重写用户登录模块(整合Jquery+JSON)
- Struts2.0+Springframework2.5+ibatis2.3完美整合用户登录及增删改查演示示例 连载中.(二)
- Struts2.0+Springframework2.5+ibatis2.3完美整合用户登录及增删改查演示示例 连载中.(三)
- Struts2.0+Springframework2.5+ibatis2.3完美整合用户登录及增删改查演示示例 连载中.(一)
- Struts2.0+Springframework2.5+ibatis2.3完美整合用户登录及增删改查演示示例 连载中.(四)
- ASP.NET整合Discuz!NT3.5实例说明(含用户登录、评论等)
- ASP.NET整合Discuz!NT3.5实例说明(含用户登录、评论等)
- oracle一个用户密码管理多达同意三次企图登录