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>

实现了简单的登录登出功能。

时间: 2024-10-07 11:15:08

Struts2学习第六课 实现登录登出功能的相关文章

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

单点登出基本上没有啥配置 直接在原来logout的时候,重定向到Cas-Server的logout方法 @RequestSecurity @RequestMapping(value = "loginout", method = { RequestMethod.GET, RequestMethod.POST }) public String loginout(HttpSession session) { session.invalidate(); return "redirec

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

学习Android有几个月了,最近喜欢上了网络编程,于是想通过Android写一些一个小程序用于连接外网.在这里非常感谢雪夜圣诞的支持,非常感谢,给我打开新的一扇门. 1.声明,本程序只能用于西南大学连接外网登录,其他网站需要自己进行抓包测试. 2.声明,本文更多的是关注网络抓包已经,本地构造,如果有什么错误,请尽情指教,非常感谢. 3.声明,最后源代码,以全部上传github,需要的同志可以自行下载,文章结尾会附带链接. 废话不多说,正文开始: 学校官网 第一步,首先需要实现的是登录操作: 当

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

上一篇文章<单点登录(一)使用Cookie+File实现单点登录>中,我们实现了单点登录的功能. 本文作为上一篇文章的扩展部分,添加"单点登出"功能. 源码下载:链接: http://pan.baidu.com/s/1bn57xCF 密码: 5apa 本例实现效果 浏览器中输入网址:main.tgb.com,后输入用户名:it_main(以it开头即可)和密码pwd_main(以pwd开头即可),勾选"一周内自动登录".点击"登录"按

世界聊天、阵营聊天、登录登出及服务器广播

一.如何设置玩家名字样式 当玩家世界聊天.阵营聊天.登录登出及世界广播时,服务器会提示以玩家名字XXX开头的消息 在通用设置里可以格式化设置玩家的名字样式,以分隔符|隔开,例如:数字|数字|数字|数字|数字...,具体设置如下 1 名字前添加阵营,[联盟]或[部落] 110 名字前添加职业图标 三选一 101 名字前添加职业名称 111 名字前添加职业图标和名称 210 名字前添加种族图标 三选一 201 名字前添加种族名称 211 名字前添加种族图标和名称 310 名字前添加VIP图标 三选一

CAS5.3 单点登录/登出/springboot/springmvc

环境: jdk:1.8 cas server:5.3.14 + tomcat 8.5 cas client:3.5.1 客户端1:springmvc 传统web项目(使用web.xml) 客户端2:springboot 参考博客:https://blog.csdn.net/anumbrella/category_7765386.html 为了方便,没配置https.如果需要参考上面博客 一.CAS 服务端搭建 1.下载源码包:cas overlay github地址:https://github

php 用CAS实现SSO单点登陆及登出功能

php用CAS实现SSO单点登陆及登出功能 一..CAS服务器搭建 CAS服务器端下载地址:http://downloads.jasig.org/cas/ 解压cas-server-4.0.0-release.zip将modules目录下的cas-server-webapp-4.0.0.war改名称为cas.war复制到tomcat的webapps下,启动tomcat,访问:http://localhost:8080/cas/login 就可以看到登录界面了: cas服务端默认采用的是 用户名=

博客系统-程序结构-注册登录登出

注册 c判断是否提交了注册数据 是 l如果密码和用户名任一为空 l如果确认密码和密码不一致 m添加用户 c跳转登录页 否 c显示注册页面(提交验证) 登录 判断是否提交了登录数据 c后台验证登录数据->验证类 判断是否在锁定时间内 m判断是否存在登录数据 存在登录用户 重置失败次数和失败登录时间 更新登录时间,ip c设置session的用户名,用户id,权限,角色 c记录日志 c判断跳转(管理首页/跳转到来源页) 跳转 不存在登录用户 记录登录失败时间 跳转登录页 设置session 显示登录

struts2学习(6)自定义拦截器-登录验证拦截器

需求:对登录进行验证,用户名cy 密码123456才能登录进去:  登录进去后,将用户存在session中: 其他链接要来访问(除了登录链接),首先验证是否登录,对这个进行拦截: com.cy.model.User.java: package com.cy.model; public class User { private String userName; private String password; public String getUserName() { return userNam

Struts2学习第三课 访问Web资源

1.什么是WEB资源? HttpServletRequest,HttpSession,ServletContext等原生的Servlet API. 2.为什么访问WEB资源? B/S的应用的Controller中必然需要访问WEB资源,例如,向域对象中读写属性,读写Cookie,获取realPath等等. 3.如何访问? 在Action中,可以通过一下方式访问web的HttpSession,HttpServletRequest,HttpServletResponse等资源 与Servlet AP