用户登陆,退出等基本Action
用户登陆页面user_login.jsp对应action为login.do:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用户登陆</title>
<script type="text/javascript">
function confirmCodeNew(o){
o.src="<s:url action='confirm' namespace='/validation'/>";
}
</script>
</head> <body>
<form id="loginform" name="loginform" method="post" action="<s:url action='process'/>" onsubmit="return checkLoginForm();">
<table width="" height="" border="" cellpadding="" cellspacing="" class="table3">
<tr>
<td colspan=""><span class="font_red"><s:actionerror/></span></td>
</tr>
<tr>
<td width="" height="" align="right" valign="middle" class="font06">用户名:</td>
<td colspan="" align="left" valign="middle"><input type="text" name="username" id="username" tabindex="" /></td>
</tr>
<tr>
<td width="" height="" align="right" valign="middle" class="font06">密 码:</td>
<td colspan="" align="left" valign="middle"><input type="password" name="pwd" id="pwd" tabindex="" /></td>
</tr>
<tr>
<td width="" height="" align="right" valign="middle" class="font06">验证码:</td>
<td width="" align="left" valign="middle"><input name="confirm_code" type="text" class="table3" size="" maxlength="" /></td>
<td width=""><img src="<s:url action='confirm' namespace='/validation'/>" onclick="confirmCodeNew(this)" style="cursor:pointer" /></td>
<td width="" align="left" valign="middle" class="font06"> </td>
</tr>
<tr>
<td height=""> </td>
<td colspan="" align="left" valign="middle"><input type="checkbox" name="rember_me" onclick="remeber_me_change(this);"/>
<span class="font06">记住用户名</span></td>
</tr>
<tr>
<td height=""> </td>
<td height="" colspan="" align="left" valign="middle"><img src="<s:url value='/images/3vsxdt_36.gif'/>" onclick="checkLoginForm()" style="cursor:pointer" width="" height="" border="" /></td>
</tr>
</table>
</form>
</body>
</html>
用户登陆类(UserLogin.java):
package com.web.struts.action; import javax.servlet.http.Cookie; import org.apache.commons.lang.StringUtils; import commodel.Member;
import com.service.IMemberService;
import com.tools.Constant;
import com.tools.MD5Bean; /**
* title:用户登陆
*
* @author conkeyn
* @时间 2009-3-24:上午10:06:25
*/
public class UserLogin extends BaseAction { /** */
private static final long serialVersionUID = -8059803575427183277L; private Member member; public void setMemberService(IMemberService memberService) {
this.memberService = memberService;
} private IMemberService memberService; /**
* 退出
*
* @return
*/
public String logout() {
getSession().removeAttribute(Constant.MEMBER_SESSION_ID);
Cookie[] cookies = getRequest().getCookies();
Cookie member_cookie = null;
for (int i = 0; i < cookies.length; i++) {
member_cookie = cookies[i];
if (member_cookie != null
&& StringUtils.isNotBlank(member_cookie.getName())
&& StringUtils.isNotBlank(member_cookie.getValue())
&& member_cookie.getName().equals(
Constant.MEMBER_SESSION_ID)) {
member_cookie.setMaxAge(-1);// 设置有效期为-1秒,浏览器会自动删除
getResponse().addCookie(member_cookie);
break;
}
}
return SUCCESS;
} /**
* 用户登陆
*
* @return
*/
public String login() { return "login";
} /**
* 处理用户登陆
*
* @return
*/
public String process() {
String confirm_code = getRequest().getParameter("confirm_code");
String confirmcode = (String) getSession().getAttribute("confirmcode");
if (StringUtils.isNotBlank(confirm_code)
&& StringUtils.isNotBlank(confirmcode)
&& confirm_code.equals(confirmcode)) {
String username = getRequest().getParameter("username");
String pwd = getRequest().getParameter("pwd");
String rember_me = getRequest().getParameter("rember_me");
MD5Bean md5 = new MD5Bean();
pwd = md5.MD5Encrypt(pwd);
member = memberService.getMember(username);
if (member == null) {
this.addActionError("不存在该用户,请注册后再登陆!");
return ERROR;
} else if (!pwd.equalsIgnoreCase(member.getPwd())) {
this.addActionError("密码错误,请重新输入!");
return ERROR;
}
getSession().setAttribute(Constant.MEMBER_SESSION_ID,
member.getUsername());
// 设置cookie
if (StringUtils.isNotBlank(rember_me)
&& rember_me.equalsIgnoreCase("true")) {
Cookie cookie = new Cookie(Constant.MEMBER_SESSION_ID, member
.getUsername());
cookie.setMaxAge(60 * 60 * 24 * 365);
getResponse().addCookie(cookie);
}
member.setLoged(true);
memberService.saveMember(member);
} else {
this.addActionError("验证码错误,请重新输入!");
return ERROR;
}
return SUCCESS;
} public Member getMember() {
return member;
} public void setMember(Member member) {
this.member = member;
} }
Struts配置文件(struts-login.xml):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" >
<struts>
<package name="login" extends="struts-default">
<!-- 登陆 -->
<action name="login" class="memberAction" method="login">
<result name="login" type="dispatcher"> /WEB-INF/pages/userlogin.jsp
</result>
</action>
<action name="logout" class="memberAction" method="logout">
<result name="success" type="redirectAction">login</result>
</action>
<action name="process" class="memberAction" method="process">
<result name="error" type="dispatcher">/WEB-INF/pages/userlogin.jsp
</result>
<result name="success" type="dispatcher">/WEB-INF/pages/userlogin_msg.jsp
</result>
</action>
</package>
</struts>
用户登陆,退出等基本Action的更多相关文章
- 基于用户登陆的struts2中action的分类详解
在struts2中action的分类有:继承 ActionSupport 实现 Action,模型驱动(ModelDriven)的 Action,多方法的 Action三种方式. 1.继承 Actio ...
- laravel前后端分离的用户登陆 退出 中间件的接口与session的使用
在项目开发的过程中,需要有用户的登陆 退出 还有校验用户是否登陆的中间件; 基本思路: 登陆: 前端请求接口的参数校验 用户名 密码规则的校验 用户名密码是否正确的校验; 如果上面的校验都通过的了,把 ...
- [PHP] - Laravel - 用户登陆中间件
前言 Laravel 4中,可以使用Route::filter,而在Laravel 5中,没有了filter.php文件,官方建议使用中间件做. 下面是用户登陆的测试例子,涉及到的一些方法和使用,先参 ...
- [PHP]用户登陆中间件
Laravel 4中,可以使用Route::filter,而在Laravel 5中,没有了filter.php文件,官方建议使用中间件做. 下面是用户登陆的测试例子,涉及到的一些方法和使用,先参见这里 ...
- linux 用户管理修改用户信息、密码状态、删除用户、退出登陆、切换用户
修改用户信息usermoduseradd支持的选项usermod都支持passwd有两个选项-l(在密码串前面加了两个叹号),-u,usermod有两个选项:-L 临时锁定用户(Lock)(在密码串前 ...
- Flask-Login用户登陆
Flask-Login Flask-Login 提供用户会话管理,处理常见的登录.退出和注册的任务. Flask-Login 没有绑定数据库,可以从数据库回调用户对象. 安装flask-login p ...
- Spring MVC - 拦截器实现 和 用户登陆例子
1.拦截器 SpringMvc中的拦截器实现了HandlerInterceptor接口,通常使用与身份认证,授权和校验,模板视图,统一处理等: public class HanderIntercept ...
- Django之博客系统:用户登陆
使用django有一个好处就是有各种各样的框架可以拿来直接使用.相比flask,django自带的框架确实要多很多.比如这一章就要介绍的用户登录.Django拥有一个内置的认证(authenticat ...
- IOS开发之记录用户登陆状态
上一篇博客中提到了用CoreData来进行数据的持久化,CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreData还是蛮好用的.今天要说的是如何记录我们用户的登 ...
随机推荐
- Java中的enum
package com.st.java; /** * ENUM枚举类型的使用 * @author Administrator * 2016年04月10日 */ public enum MoneyTyp ...
- WebView使用
WebView是View的一个子类,可以让你在activity中显示网页. 可以在布局文件中写入WebView:比如下面这个写了一个填满整个屏幕的WebView: <?xml version=& ...
- <经验杂谈>C#中一种最简单、最基本的反射(Reflection):通过反射获取方法函数
说起反射之前和很多用C#/.net的同仁们一样,相比于一般应用层对数据的增删改查总有点觉得深奥到难以理解.其实程序这东西,用过.实践过就很简单,我一直这么认为. 先说下概念:反射 Reflection ...
- Javascript进阶篇——(DOM—节点---插入、删除和替换元素、创建元素、创建文本节点)—笔记整理
插入节点appendChild()在指定节点的最后一个子节点列表之后添加一个新的子节点.语法: appendChild(newnode) //参数: //newnode:指定追加的节点. 为ul添加一 ...
- FileShare文件读写锁解决“文件XXX正由另一进程使用,因此该进程无法访问此文件”(转)
开发过程中,我们往往需要大量与文件交互,读文件,写文件已成家常便饭,本地运行完美,但一上到投产环境,往往会出现很多令人措手不及的意外,或开发中的烦恼,因此,我对普通的C#文件操作做了一次总结,问题大部 ...
- 在Fedora20上安装Oracle 12c
本文将引导大家在Fedora20的环境下成功安装Oracle12c. 安装前的准备 编辑/etc/hosts文件,添加本机名称 编辑/etc/selinux/config文件 编辑/etc/redha ...
- Jlink仿真器下载程序时出现Invalid ROM table!
原因:仿真器时钟设置不对,应该将时间改低一点.
- 《APUE》-第五章标准IO库
大多数UNIX应用程序都使用I/O库,本章说明了该库所包含的所有函数,以及某些实现细节和效率方面的考虑.同时需要重点关注标准I/O使用了缓冲的技术,但同时也是因为它的出现,产生了很多细节上的问题. 流 ...
- java基础知识再学习--集合框架-对象的强、软、弱和虚引用
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhangjunhd.blog.51cto.com/113473/53092 本文 ...
- 距离顶部估计像素,显示div!
<html> <head> <title>slide</title> <style type="text/css"> # ...