`
conkeyn
  • 浏览: 1504693 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

用户登陆,退出等基本Action(2)

阅读更多

用户登陆页面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="308" height="232" border="0" cellpadding="0" cellspacing="0" class="table3">
    <tr>
    <td colspan="10"><span class="font_red"><s:actionerror/></span></td>
    </tr>
      <tr>
        <td width="82" height="40" align="right" valign="middle" class="font06">用户名:</td>
        <td colspan="3" align="left" valign="middle"><input type="text" name="username" id="username" tabindex="1" /></td>
      </tr>
      <tr>
        <td width="82" height="40" align="right" valign="middle" class="font06">密    码:</td>
        <td colspan="3" align="left" valign="middle"><input type="password" name="pwd" id="pwd" tabindex="2" /></td>
      </tr>
      <tr>
        <td width="82" height="40" align="right" valign="middle" class="font06">验证码:</td>
        <td width="59" align="left" valign="middle"><input name="confirm_code" type="text" class="table3" size="5" maxlength="4" /></td>
        <td width="79"><img src="<s:url action='confirm' namespace='/validation'/>" onclick="confirmCodeNew(this)" style="cursor:pointer" /></td>
        <td width="86" align="left" valign="middle" class="font06">&nbsp;</td>
      </tr>
      <tr>
        <td height="40">&nbsp;</td>
        <td colspan="3" align="left" valign="middle"><input type="checkbox" name="rember_me" onclick="remeber_me_change(this);"/>
            <span class="font06">记住用户名</span></td>
      </tr>
      <tr>
        <td height="50">&nbsp;</td>
        <td height="50" colspan="3" align="left" valign="middle"><img src="<s:url value='/images/3vsxdt_36.gif'/>" onclick="checkLoginForm()" style="cursor:pointer" width="158" height="42" border="0" /></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>
 

 

 

 

 

 

 

分享到:
评论

相关推荐

    jira用户操作指南(详细版)

    一、登录到JIRA 许多JIRA实例都会根据 权限 限制某些用户或用户组查看问题以及对问题的操作。而有些 JIRA实例就允许匿名用户访问,就像http://www.jira.cn中文演示站点允许任何未注册用户体验JIRA。 当你还没有登录...

    仿世纪佳缘婚介交友系统5.3 ASP+SQL

    注意:如果是当前用户设置完要退出再登录后台。 4、重新统计各项数据(updata.asp) 模块功能包括:更新用户数据、修复用户数据、更新系统统计、更新缓存数据、更新群组数据、更新到期状态等。可根据名功能之下...

    支付宝到账DEMO.exe

    结论:采用pc端数据抓取结合模拟人工操作演出退出登录时长同时做好退出登录的消息提醒,实测20小时需要登录一次还是能够接受的 *** ## 前端生成付款二维码 接口1: alipays://platformapi/startapp?appId=20000123...

    多多校园论坛,很经典很强大

    2 域名转发注意:转发时请不要选择隐藏文件路径选项(框架功能),这样会导致用户无法登录 3 管理员在修改会员密码时只要输入新密码一项即可(以便帮助会员更改密码) 4 管理员登录 管理留言 时,第一次输入错误...

    ARM_Linux启动分析.pdf

    在一般的系统实现中,都使用了2、3、4、5几个级别,在 Redhat系统中,2表示无NFS支持的多用户模式,3表示完全多用户模式(也是最常用的级别),4保留给用户自定义,5表示XDM图形登录方式。7- 9级别也是可以使用的,...

    文档编辑器

    Text1.Text = "菜单(Menu)是Windows窗口的基本组成部分,大多数应用程序都有菜单,菜单中包含着各种命令的集合,Visual Basic允许用户为程序中的每个窗体创建一个独立的菜单系统,菜单包括下拉菜单和弹出式菜单。...

    火炬博客系统5

    用户可以在网站上注册一个帐户,建立自己的博客,用户可以登录到自己的管理界面,管理文章、评论、相片、个人信息等。 2。博客首页功能。可显示火炬博客系统的全面信息,如最新文章、热门文章等。 3。我的...

    火炬博客系统7

    用户可以在网站上注册一个帐户,建立自己的博客,用户可以登录到自己的管理界面,管理文章、评论、相片、个人信息等。 2。博客首页功能。可显示火炬博客系统的全面信息,如最新文章、热门文章等。 3。我的...

    火炬博客系统6

    用户可以在网站上注册一个帐户,建立自己的博客,用户可以登录到自己的管理界面,管理文章、评论、相片、个人信息等。 2。博客首页功能。可显示火炬博客系统的全面信息,如最新文章、热门文章等。 3。我的...

    python入门到高级全栈工程师培训 第3期 附课件代码

    第2章 01 上节课复习 02 arp协议复习 03 字符编码 第3章 01 网络基础和dos命令 02 为何学习linux 03 课程内容介绍 04 操作系统内核与系统调用 05 操作系统安装原理 06 linux操作系统安装 07 初识linux命令 08 ...

    Java Web程序设计教程

    程序设计教程.pdf&gt;&gt;人民邮电出版社的...15.4.3管理员登录与退出实现 306 15.4.4系统管理实现 313 15.4.5图书管理实现 319 15.4.6读者管理实现 329 15.4.7借还管理实现 333 15.4.8前台功能实现 336 本章小结 342

    多多微型论坛程序 v2.0

    【后台登录】而后台帐号的用户和密码都可以更改,在右侧的管理菜单中进行更改,而且管理帐号只有一个,它不是会员,没有基本信息;会员要是认证以上等级,右边的[管理留言]才会显示,请注意这里的区别,操作方法:...

    语言程序设计课后习题答案

    二进制是基数为2,每位的权是以2 为底的幂的进制,遵循逢二进一原则,基本符号为0和1。采用二进制码表示信息,有如下几个优点:1.易于物理实现;2.二进制数运算简单;3.机器可靠性高;4.通用性强。其缺点是它表示数...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    7.这时执行程序,可实现按下登录按钮进入主窗口,按下退出按钮退出程序。 8.添加用户名密码判断功能。将登陆按钮的槽函数改为: void loginDlg::on_loginBtn_clicked() { if(m_ui-&gt;usrLineEdit-&gt;text()==tr("qt")&&m...

    JSTL详细标签库介绍

    &lt;!...&lt;HTML&gt;&lt;HEAD&gt;关于java异常处理(讲义)--JSP中文网 ...第二步:处理对象与方法:声明4个GUI组件对象和1个用于存储计算结果(double)的和2个被除数与除数基本类型(int)&lt;BR&gt;&lt;BR&gt;A、 初始化对象方法init()&lt;BR&gt;B...

    精通windows server 2008 命令行与powershell 电子书PDF单文件完整版

    6.6.3 finger——查看登录用户信息 320 6.6.4 query——终端服务查询 320 6.6.5 reset session——重置会话 323 第7章 系统诊断 324 7.1 relog——导出性能日志文件 324 7.2 typeperf——性能计数器 325 7.3 ...

    精通windows server 2008 命令行与powershell电子书PDF版(第一卷)

    6.6.3 finger——查看登录用户信息 320 6.6.4 query——终端服务查询 320 6.6.5 reset session——重置会话 323 第7章 系统诊断 324 7.1 relog——导出性能日志文件 324 7.2 typeperf——性能计数器 325 7.3 ...

Global site tag (gtag.js) - Google Analytics