Struts2学习第六课 实现登录登出功能
关于Struts2请求的扩展名问题:
1).org.apache.struts2包下的default.properties中配置了struts2应用的一些常量
2).struts.action.extension定义了当前struts2应用可以接受的请求的扩展名。
3).可以在struts.xml文件中以常量配置的方式修改default.properties所配置的常量。
<constant name="struts.action.extension" value="action,do,"></constant>
直接看代码:
package logan.struts.study; import java.util.Map; import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.SessionAware; public class UserAction implements SessionAware,ApplicationAware{ private Map<String, Object> session = null;
private Map<String, Object> application = null; private String username; public void setUsername(String username) {
this.username = username;
} public String logout(){
//数量减一
Integer count = (Integer) application.get("count");
if(count != null && count >0){
count--;
application.put("count", count);
}
count--; //session失效
((SessionMap)session).invalidate(); return "logout-success";
} public String execute(){ //把用户信息存入Session域中 //1.获取session,通过实现RequestAware接口 //获取登录信息
session.put("username", username);
//把用户信息存入Session域中 //
Integer count = (Integer) application.get("count");
if(count == null){
count = 0;
}
//2.使当前在线人数 + 1
count++;
application.put("count", count); return "login-success";
} @Override
public void setSession(Map<String, Object> session) {
// TODO Auto-generated method stub
this.session = session; } @Override
public void setApplication(Map<String, Object> application) {
// TODO Auto-generated method stub
this.application = application; } }
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<!-- 配置Struts2可以受理的请求的扩展名 -->
<constant name="struts.action.extension" value="action,do"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="login-ui">
<result>/login.jsp</result>
</action> <action name="user-login" class="logan.struts.study.UserAction">
<result name="login-success">/login-success.jsp</result>
</action> <action name="logout" class="logan.struts.study.UserAction"
method="logout">
<result name="logout-success">/login.jsp</result>
</action> </package> </struts>
web.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<!-- 配置Struts2可以受理的请求的扩展名 -->
<constant name="struts.action.extension" value="action,do"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="login-ui">
<result>/login.jsp</result>
</action> <action name="user-login" class="logan.struts.study.UserAction">
<result name="login-success">/login-success.jsp</result>
</action> <action name="logout" class="logan.struts.study.UserAction"
method="logout">
<result name="logout-success">/login.jsp</result>
</action> </package> </struts>
index.jsp
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<!-- 配置Struts2可以受理的请求的扩展名 -->
<constant name="struts.action.extension" value="action,do"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="login-ui">
<result>/login.jsp</result>
</action> <action name="user-login" class="logan.struts.study.UserAction">
<result name="login-success">/login-success.jsp</result>
</action> <action name="logout" class="logan.struts.study.UserAction"
method="logout">
<result name="logout-success">/login.jsp</result>
</action> </package> </struts>
login-success.jsp
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<!-- 配置Struts2可以受理的请求的扩展名 -->
<constant name="struts.action.extension" value="action,do"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="login-ui">
<result>/login.jsp</result>
</action> <action name="user-login" class="logan.struts.study.UserAction">
<result name="login-success">/login-success.jsp</result>
</action> <action name="logout" class="logan.struts.study.UserAction"
method="logout">
<result name="logout-success">/login.jsp</result>
</action> </package> </struts>
login.jsp
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<!-- 配置Struts2可以受理的请求的扩展名 -->
<constant name="struts.action.extension" value="action,do"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="login-ui">
<result>/login.jsp</result>
</action> <action name="user-login" class="logan.struts.study.UserAction">
<result name="login-success">/login-success.jsp</result>
</action> <action name="logout" class="logan.struts.study.UserAction"
method="logout">
<result name="logout-success">/login.jsp</result>
</action> </package> </struts>
实现了简单的登录登出功能。
Struts2学习第六课 实现登录登出功能的更多相关文章
- Django项目: 4.用户登录登出功能
用户登录登出功能 一.功能需求分析 1. 登录退出功能分析 流程图 功能 登录页面 登录功能 退出功能 二.登录页面 1. 接口设计 接口说明 类目 说明 请求方法 GET url定义 /user/l ...
- ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 登录登出 上一章节我们总算完善了注册的功能,而且也添加了一个用户,现 ...
- SpringBoot登录登出切面开发
阅读本文约“2.5分钟” 本文开发环境是SpringBoot2.X版本. 对于系统而言(这里多指管理系统或部分具备登录登出功能的系统),登录登出是一个类权限验证的过程,现在一般是以token进行校验, ...
- 单点登录CAS使用记(六):单点登出、单点注销
单点登出基本上没有啥配置 直接在原来logout的时候,重定向到Cas-Server的logout方法 @RequestSecurity @RequestMapping(value = "l ...
- Python学习第六课
Python学习第六课 课前回顾 列表 创建 通过 [] :写在[]里,元素之间用逗号隔开 对应操作: 查 增 append insert 改(重新赋值) 删除(remove del pop(删除后会 ...
- Android网络开发实例(基于抓包实现的网络模拟登录,登出和强制登出)
学习Android有几个月了,最近喜欢上了网络编程,于是想通过Android写一些一个小程序用于连接外网.在这里非常感谢雪夜圣诞的支持,非常感谢,给我打开新的一扇门. 1.声明,本程序只能用于西南大学 ...
- ThinkPHP---案例1登录登出和添加部门
配置文件分3类:系统配置文件,分组配置文件,应用配置文件 ①系统配置文件ThinkPHP/Conf/convention.php: ②分组 / 模块 /平台配置文件Home/Conf/config.p ...
- flask 实现登录 登出 检查登录状态 的两种方法的总结
这里我是根据两个项目的实际情况做的总结,方法一(来自项目一)的登录用的是用户名(字符串)和密码,前后端不分离,用form表单传递数据:方法二用的是手机号和密码登录,前后端分离,以json格式传递数据, ...
- 单点登录(二)使用Cookie+File实现单点登录登出(附源代码)
上一篇文章<单点登录(一)使用Cookie+File实现单点登录>中,我们实现了单点登录的功能. 本文作为上一篇文章的扩展部分,加入"单点登出"功能. 源代码下载:链接 ...
随机推荐
- mysql innobackupex备份实施
最近用innobackup进行备份测试,我们只备份一个innodb类型的库,数据大小大概50多G,用innobackupex大概用了5个多小时,但是mysqldump只用了大约2个小时,这让我很费解, ...
- GetWindowRect和GetClientRect比较学习
一:关于坐标 MFC中绘图时经常涉及到坐标计算,GetWindowRect和GetClientRect这两个函数,是获取逻辑坐标系中窗口或控件(其实也是窗口)大小和坐标的常用函数了,有什么不一样的? ...
- Delphi 运行Word VBA 宏 删除软回车
Sub 整理网页()'整理网页:删除软回车.删除空白段.使段落文字两端对齐Selection.WholeStory Selection.Find.ClearFormatting S ...
- linux raid技术
一.概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意.是为了提高文件在磁盘上的读写速度而研究出来的. ...
- IE6、IE7、IE8及其他浏览器多个元素并排显示
IE6.IE7.IE8及其他浏览器多个元素并排显示 HTML代码 <div class="line"> <h1>全部input框</h1> &l ...
- 英语发音规则---字母组合oo的发音规律
英语发音规则---字母组合oo的发音规律 一.总结 一句话总结:在英语单词中,字母组合oo多数读长音/u:/,少数读短音/ʊ/.另外,还有极少数的特殊情况读/ʌ/, 在英语单词中,字母组合oo多数读长 ...
- 分享知识-快乐自己:Caused by: org.hibernate.tool.schema.extract.spi.SchemaExtractionException: More than one table found in namespace (, ) : Dept (XXX)
在命名空间(,)中找到多个表 - SchemaExtractionException? 问题: 尝试在Java应用程序中使用Hibernate将一些值保存到表中时,我一直面临着这个奇怪的异常. 但是, ...
- 1W字看懂互联网知识经济
互联网知识经济,发生关键变化的不是知识,而是经济. 今天和大家分享方军老师的新书<付费:互联网知识经济的兴起>.这本书是一个老互联网人看新知识经济,很有意思的视角在于,以互联网的发展为节点 ...
- Tomcat_异常_02_IOException while loading persisted sessions: java.io.EOFException
异常原因: EOFException表示输入过程中意外地到达文件尾或流尾的信号,导致从session中获取数据失败. 这是由于tomcat上次非正常关闭时有一些活动session被持久化(表现为一些临 ...
- 在Windows下搭建Android开发环境
随着移动互联网的迅速发展,前端的概念已发生很大的变化,已不仅仅局限在网页端.而Android系统作为智能机市场的老大,作为前端开发工程师, 非常有必要了解和学习.但面对众多学习资料,站在前端开发工程师 ...