`
conkeyn
  • 浏览: 1529149 次
  • 性别: 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>
 

 

 

 

 

 

 

分享到:
评论

相关推荐

    JSP和Struts应用系统用户退出的完美解决方案

    这可能涉及使用单点登录(SSO)机制或者令牌管理,但这超出了基本的JSP和Struts用户退出功能的范围。 总的来说,JSP和Struts应用系统中实现用户退出的完美解决方案不仅包括清除Session和Cookie,还应考虑防止缓存,...

    JSP和Struts解决用户退出问题

    本文将深入探讨如何使用这两种技术解决用户退出登录的问题,确保用户的安全性和系统的稳定性。 首先,理解JSP的基本概念至关重要。JSP是一种Java技术,允许开发者将HTML或者XML文档与Java代码结合起来,生成动态...

    JSP实现用户登录、注册和退出功能

    6. **退出功能**:用户退出功能通常通过点击“注销”按钮实现,这会清除用户的会话信息,将他们重定向回登录页面。在JSP中,这可以通过调用`session.invalidate()`方法来完成,该方法会终止当前用户会话。 7. **...

    php会员登录退出系统代码

    这套代码示例提供了一个基本的会员管理系统,包括登录、退出以及会员状态判断的功能。接下来,我们将详细探讨这些知识点。 首先,`database.php`文件通常包含数据库连接的设置。在PHP中,我们可以使用`mysqli`或`...

    Viewpager仿QQ横滑退出

    本项目"Viewpager仿QQ横滑退出"旨在模仿QQ应用中的页面滑动手势,允许用户通过水平滑动页面来退出当前界面,这为用户提供了一种直观且友好的交互体验。 要实现这一功能,首先需要理解`ViewPager`的基本用法。`...

    安卓一键退出功能

    在Android应用开发中,"一键退出"功能通常指的是允许用户通过单次操作关闭应用程序的全部活动,从而结束应用进程。这个功能虽然在某些情况下不是必须的(因为Android系统本身会管理应用的内存使用),但在一些特定...

    Android完全退出应用demo

    2. **使用Intent.FLAG_ACTIVITY_CLEAR_TASK**:在启动Activity时,添加`FLAG_ACTIVITY_NEW_TASK`和`FLAG_ACTIVITY_CLEAR_TASK`标志,这将清除当前任务栈并启动新的Activity,达到退出的效果。例如: ```java Intent...

    侧滑退出activity

    在Android开发中,"侧滑退出Activity"是一个常见的交互设计,它允许用户通过从屏幕边缘向内滑动来关闭或返回上一级界面。这个功能在许多应用中都可以看到,如Google Maps、微信等,提供了更加直观和便捷的操作体验。...

    用户登录和注销1

    在IT行业中,用户登录和注销是任何Web应用...通过以上步骤,我们就构建了一个基本的用户登录和注销系统,实现了用户身份验证、会话管理以及权限控制。这个系统在MyEclipse和Struts框架下提供了稳定和安全的用户体验。

    Struts用户登录

    5. **Session管理**:为了保持登录状态,Struts可能会使用Session来存储用户的登录信息,直到用户退出或Session超时。 6. **拦截器(Interceptor)**:在Struts 2中,拦截器是处理请求的重要组成部分,它可以用来...

    安全退出activity方法(多种)

    在Android应用开发中,Activity是用户界面的基本组件,它负责展示屏幕上的交互元素并处理用户事件。当用户完成某个操作或者需要节省系统资源时,安全退出Activity是非常重要的。本篇文章将详细探讨多种安全退出...

    ExtJS.in.Action

    第四章“A place for Components”中,详细介绍了各种组件的使用方法,包括按钮、标签、输入框等,并通过示例演示了如何将它们组合在一起以构建更复杂的用户界面。第五章“Organizing Components”则探讨了如何使用...

    用最简单易懂的方法学java 实现登陆功能-servlet

    2. 编写Servlet,获取用户输入,调用模型类进行验证。 3. 模型类(如`UserBean`)与数据库交互,对比用户输入。 4. 根据验证结果,Servlet进行相应操作,如重定向或显示错误信息。 对于初学者来说,实践这些步骤是...

    安卓开发按两次返回键退出demo

    其中一个常见的需求是,当用户连续快速点击两次返回键时,应用能够优雅地退出,而不是简单地回退到上一个活动或关闭当前页面。这个功能在很多应用中被采用,以防止意外的退出或者增加应用的安全性。下面我们将详细...

    jsp+Struts2 +mybatis 注册 登录 入门demo

    **标题与描述解析** ...这个入门级的项目实例对于理解JSP、Struts2和MyBatis的集成应用非常有帮助,同时也涵盖了基本的用户认证逻辑。通过学习和实践,开发者可以深入掌握Java Web开发的基础知识。

    登录拦截器

    4. **注销功能**:提供一个注销Action,清除session中的登录信息,使用户退出系统。 5. **单表增删查实现分页功能**:使用Hibernate的CRUD操作对用户数据进行增删查改,并结合分页插件或自定义分页逻辑,实现数据的...

    Android微信右滑退出功能的实现代码

    在Android开发中,微信右滑退出功能是一种常见的交互方式,让用户能够通过简单的手势来关闭或切换活动(Activity)。本文将详细介绍如何实现这一功能,并提供相关的代码示例。 首先,要实现微信右滑退出,我们需要...

    Java Web用户登录实例代码

    总结来说,这个Java Web用户登录实例展示了如何使用Struts2框架、Servlet API(特别是Session和Cookie)以及基本的验证逻辑来构建一个完整的登录系统。这个系统能够确保用户的身份,保持登录状态,并提供用户友好的...

    返回事件和返回退出同时有效

    如果用户在2秒内再次按下返回键,`isExit`仍为true,那么就会调用`getActivity().onBackPressed()`,从而退出Activity和Fragment。 而对于其他Fragment,保持默认的返回行为,即单次返回键事件就移除或隐藏当前...

    kms登录---S2SH框架

    同时,登录成功后,系统通常会创建一个会话(Session)来跟踪用户状态,直到用户退出或会话超时。 5. **安全考虑**:在实际应用中,除了基本的登录功能,还需要考虑安全性问题,如防止SQL注入、XSS攻击,以及使用...

Global site tag (gtag.js) - Google Analytics