关于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学习第六课 实现登录登出功能的更多相关文章

  1. Django项目: 4.用户登录登出功能

    用户登录登出功能 一.功能需求分析 1. 登录退出功能分析 流程图 功能 登录页面 登录功能 退出功能 二.登录页面 1. 接口设计 接口说明 类目 说明 请求方法 GET url定义 /user/l ...

  2. ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 登录登出 上一章节我们总算完善了注册的功能,而且也添加了一个用户,现 ...

  3. SpringBoot登录登出切面开发

    阅读本文约“2.5分钟” 本文开发环境是SpringBoot2.X版本. 对于系统而言(这里多指管理系统或部分具备登录登出功能的系统),登录登出是一个类权限验证的过程,现在一般是以token进行校验, ...

  4. 单点登录CAS使用记(六):单点登出、单点注销

    单点登出基本上没有啥配置 直接在原来logout的时候,重定向到Cas-Server的logout方法 @RequestSecurity @RequestMapping(value = "l ...

  5. Python学习第六课

    Python学习第六课 课前回顾 列表 创建 通过 [] :写在[]里,元素之间用逗号隔开 对应操作: 查 增 append insert 改(重新赋值) 删除(remove del pop(删除后会 ...

  6. Android网络开发实例(基于抓包实现的网络模拟登录,登出和强制登出)

    学习Android有几个月了,最近喜欢上了网络编程,于是想通过Android写一些一个小程序用于连接外网.在这里非常感谢雪夜圣诞的支持,非常感谢,给我打开新的一扇门. 1.声明,本程序只能用于西南大学 ...

  7. ThinkPHP---案例1登录登出和添加部门

    配置文件分3类:系统配置文件,分组配置文件,应用配置文件 ①系统配置文件ThinkPHP/Conf/convention.php: ②分组 / 模块 /平台配置文件Home/Conf/config.p ...

  8. flask 实现登录 登出 检查登录状态 的两种方法的总结

    这里我是根据两个项目的实际情况做的总结,方法一(来自项目一)的登录用的是用户名(字符串)和密码,前后端不分离,用form表单传递数据:方法二用的是手机号和密码登录,前后端分离,以json格式传递数据, ...

  9. 单点登录(二)使用Cookie+File实现单点登录登出(附源代码)

    上一篇文章<单点登录(一)使用Cookie+File实现单点登录>中,我们实现了单点登录的功能. 本文作为上一篇文章的扩展部分,加入"单点登出"功能. 源代码下载:链接 ...

随机推荐

  1. mysql innobackupex备份实施

    最近用innobackup进行备份测试,我们只备份一个innodb类型的库,数据大小大概50多G,用innobackupex大概用了5个多小时,但是mysqldump只用了大约2个小时,这让我很费解, ...

  2. GetWindowRect和GetClientRect比较学习

    一:关于坐标 MFC中绘图时经常涉及到坐标计算,GetWindowRect和GetClientRect这两个函数,是获取逻辑坐标系中窗口或控件(其实也是窗口)大小和坐标的常用函数了,有什么不一样的? ...

  3. Delphi 运行Word VBA 宏 删除软回车

    Sub 整理网页()'整理网页:删除软回车.删除空白段.使段落文字两端对齐Selection.WholeStory        Selection.Find.ClearFormatting    S ...

  4. linux raid技术

    一.概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意.是为了提高文件在磁盘上的读写速度而研究出来的. ...

  5. IE6、IE7、IE8及其他浏览器多个元素并排显示

    IE6.IE7.IE8及其他浏览器多个元素并排显示 HTML代码 <div class="line"> <h1>全部input框</h1> &l ...

  6. 英语发音规则---字母组合oo的发音规律

    英语发音规则---字母组合oo的发音规律 一.总结 一句话总结:在英语单词中,字母组合oo多数读长音/u:/,少数读短音/ʊ/.另外,还有极少数的特殊情况读/ʌ/, 在英语单词中,字母组合oo多数读长 ...

  7. 分享知识-快乐自己:Caused by: org.hibernate.tool.schema.extract.spi.SchemaExtractionException: More than one table found in namespace (, ) : Dept (XXX)

    在命名空间(,)中找到多个表 - SchemaExtractionException? 问题: 尝试在Java应用程序中使用Hibernate将一些值保存到表中时,我一直面临着这个奇怪的异常. 但是, ...

  8. 1W字看懂互联网知识经济

    互联网知识经济,发生关键变化的不是知识,而是经济. 今天和大家分享方军老师的新书<付费:互联网知识经济的兴起>.这本书是一个老互联网人看新知识经济,很有意思的视角在于,以互联网的发展为节点 ...

  9. Tomcat_异常_02_IOException while loading persisted sessions: java.io.EOFException

    异常原因: EOFException表示输入过程中意外地到达文件尾或流尾的信号,导致从session中获取数据失败. 这是由于tomcat上次非正常关闭时有一些活动session被持久化(表现为一些临 ...

  10. 在Windows下搭建Android开发环境

    随着移动互联网的迅速发展,前端的概念已发生很大的变化,已不仅仅局限在网页端.而Android系统作为智能机市场的老大,作为前端开发工程师, 非常有必要了解和学习.但面对众多学习资料,站在前端开发工程师 ...