用户登陆页面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">&nbsp;</td>
</tr>
<tr>
<td height="">&nbsp;</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="">&nbsp;</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的更多相关文章

  1. 基于用户登陆的struts2中action的分类详解

    在struts2中action的分类有:继承 ActionSupport 实现 Action,模型驱动(ModelDriven)的 Action,多方法的 Action三种方式. 1.继承 Actio ...

  2. laravel前后端分离的用户登陆 退出 中间件的接口与session的使用

    在项目开发的过程中,需要有用户的登陆 退出 还有校验用户是否登陆的中间件; 基本思路: 登陆: 前端请求接口的参数校验 用户名 密码规则的校验 用户名密码是否正确的校验; 如果上面的校验都通过的了,把 ...

  3. [PHP] - Laravel - 用户登陆中间件

    前言 Laravel 4中,可以使用Route::filter,而在Laravel 5中,没有了filter.php文件,官方建议使用中间件做. 下面是用户登陆的测试例子,涉及到的一些方法和使用,先参 ...

  4. [PHP]用户登陆中间件

    Laravel 4中,可以使用Route::filter,而在Laravel 5中,没有了filter.php文件,官方建议使用中间件做. 下面是用户登陆的测试例子,涉及到的一些方法和使用,先参见这里 ...

  5. linux 用户管理修改用户信息、密码状态、删除用户、退出登陆、切换用户

    修改用户信息usermoduseradd支持的选项usermod都支持passwd有两个选项-l(在密码串前面加了两个叹号),-u,usermod有两个选项:-L 临时锁定用户(Lock)(在密码串前 ...

  6. Flask-Login用户登陆

    Flask-Login Flask-Login 提供用户会话管理,处理常见的登录.退出和注册的任务. Flask-Login 没有绑定数据库,可以从数据库回调用户对象. 安装flask-login p ...

  7. Spring MVC - 拦截器实现 和 用户登陆例子

    1.拦截器 SpringMvc中的拦截器实现了HandlerInterceptor接口,通常使用与身份认证,授权和校验,模板视图,统一处理等: public class HanderIntercept ...

  8. Django之博客系统:用户登陆

    使用django有一个好处就是有各种各样的框架可以拿来直接使用.相比flask,django自带的框架确实要多很多.比如这一章就要介绍的用户登录.Django拥有一个内置的认证(authenticat ...

  9. IOS开发之记录用户登陆状态

    上一篇博客中提到了用CoreData来进行数据的持久化,CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreData还是蛮好用的.今天要说的是如何记录我们用户的登 ...

随机推荐

  1. IIS 问题解决

    一.网站发布后 报500错误 解决办法:重新向iis注册framwork: 二.试图加载格式不正确的程序.(Exception from HRESULT: 0x8007000B) 解决办法:对应应用程 ...

  2. Timus 1796. Amusement Park 聪明题

    On a sunny Sunday, a group of children headed by their teacher came to an amusement park. Aunt Frosy ...

  3. java 图片 批量 压缩 +所有压缩

    /* oldsrc  : 原图片地址目录 如 'd:/'    newsrc  : 压缩后图片地址目录 如 'e:/'    widthdist,heightdist : 压缩后的宽和高       ...

  4. Qt使用QGraphicsView实现滑动窗体效果

    QGraphicsView用来显示一个滚动视图区的QGraphicsScene内容.QGraphicsScene提供了QGraphicsItem的容器功能.通常与QGraphicsView一起使用来描 ...

  5. jQuery中 $ 符号的冲突问题

    jQuery中 $ 符号的冲突问题是常见问题之一.   在jQuery中,$是jQuery的别名,为了书写方便,我们更习惯用$('#id')这一类的方式来书写代码.当同一页面引用了jQuery多个版本 ...

  6. C#Equal的使用

    代码如下: public partial class FramMain : Form { public FramMain() { InitializeComponent(); } private vo ...

  7. Sass函数--map

    MapSass 的 map 常常被称为数据地图,也有人称其为数组,是以 key:value 成对的出现. $map: ( $key1: value1, $key2: value2, $key3: va ...

  8. ASP.NET优化性能方法之一禁用调试模式(转)

    若要设置 ASP.NET 应用程序的调试模式,必须编辑应用程序的 Web.config 配置文件. 通常,ASP.NET 应用程序的 Web.config 文件与应用程序位于相同的 URL 位置上. ...

  9. 视图中的Layout使用(转)

    1.母板页_Layout.cshtml 类似于传统WebForm中的.master文件,起到页面整体框架重用的目地 1.母板页代码预览 1 <!DOCTYPE html> 2 <ht ...

  10. Java数据输入

    以下是数据输入实例: //以下是数据输入实例 import java.util.Scanner;//导入java.util.Scanner,Scanner首字母大写 public class Test ...