struts2自定义 * 的示例代码

作者:rainumdo 时间:2021-12-01 16:24:52 

题目:使用struts2自定义 * ,完成用户登陆才能访问权限的实现

  1. 在session中存放user变量表示用户登陆,若user为空则用户没有登陆,反之登陆

  2. 显示提示信息(请先登录)

定义 *

在struts.xml中定义 * 使用标签<Intercaptors>、<Intercapter>。


 <interceptors>
     <interceptor name="test" class="Intercaptor.Intercaptor" />
     <interceptor-stack name="testStack">
       <interceptor-ref name="defaultStack"/>
       <interceptor-ref name="test" />
     </interceptor-stack>
 </interceptors>

注:当我们为某个action添加Intercaptor时就会放弃struts2的其他的 * ,所以我们要把自定义的 * 放在一个一个 * 栈中。

name属性就是Intercaptor.Intercaptor类在服务器上的一个实例

class属性就是这个 * 的的类

实现 *

* 的java类要实现Intercaptor这个接口和里面的方法intercept()。我们这里拦截的条件是用户是否登陆,也就是session中的user变量是否为空。


public class Intercaptor implements Interceptor{

public void destroy() {
 }

public void init() {

}

public String intercept(ActionInvocation invocation) throws Exception {
   Object user=ActionContext.getContext().getSession().get("user");
   if(user!=null){
     return invocation.invoke();
   }
   ActionContext.getContext().put("message", "请先登陆");
   return "success";
 }
}

实现业务逻辑

在action中添加 *


 <action name="Action" class="Action.Action">
     <interceptor-ref name="test"></interceptor-ref>
     <result name="success">Message.jsp</result>
 </action>

其他

action的实现


public class Action extends ActionSupport{
 private String message;

public String getMessage() {
   return message;
 }

public void setMessage(String message) {
   this.message = message;
 }

public String execute() throws Exception {
   return "success";
 }
}

index.jsp


<body>
 用户状态:${user!=null?"已登陆":"未登陆"}<br>
 <a href="UserLogin.jsp" rel="external nofollow" >用户登陆</a>
 <a href="UserQuit.jsp" rel="external nofollow" >用户退出</a>
 <form action="<%request.getContextPath(); %>/testIntercaptor/Action">
   <input type="submit" value="登陆后的操作">
 </form>
</body>

struts2自定义 * 的示例代码

UserLogin.jsp

在request.getSesssion中存放user变量


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

登陆成功
 <%
 request.getSession().setAttribute("user", "user");
 response.setHeader("refresh", "1;url=index.jsp");
 %>

UserQuit.jsp

移除request.getSesssion中user变量


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

退出成功
 <%
 request.getSession().removeAttribute("user");
   response.setHeader("refresh", "1;url=index.jsp");
 %>

Message.jsp

简单是输出message和debug


<body>
 ${message } <br/>
<s:debug></s:debug>
</body>

来源:http://www.jianshu.com/p/fc9e8ef59790?utm_source=tuicool&utm_medium=referral

标签:struts2, ,
0
投稿

猜你喜欢

  • 使用java技术抓取网站上彩票双色球信息详解

    2022-01-04 14:47:51
  • SpringBoot中自定义注解实现参数非空校验的示例

    2022-04-12 10:55:55
  • 对Java ArrayList的自动扩容机制示例讲解

    2022-04-09 07:58:25
  • java Spring的启动原理详解

    2022-09-02 04:39:59
  • Java使用Optional实现优雅避免空指针异常

    2023-06-05 15:35:39
  • java并发编程专题(六)----浅析(JUC)Semaphore

    2023-07-27 23:30:28
  • C# URL短地址压缩算法及短网址原理解析

    2023-03-26 08:36:31
  • SpringCloud如何创建一个服务提供者provider

    2023-08-01 01:56:33
  • Spring Security使用Lambda DSL配置流程详解

    2021-12-23 19:20:32
  • 使用java实现BBS论坛发送邮件过程详解

    2022-12-19 16:58:30
  • C# 数独求解算法的实现

    2022-04-04 18:48:57
  • 关于SpringBoot使用Redis空指针的问题(不能成功注入的问题)

    2023-09-04 01:30:03
  • 通过实例解析java8中的parallelStream

    2022-04-17 12:59:37
  • Java 十大排序算法之计数排序刨析

    2023-11-28 19:21:26
  • C# InitializeComponent()方法案例详解

    2022-06-12 03:07:06
  • RocketMQ4.5.X 实现修改生产者消费者日志保存路径

    2021-05-24 23:58:37
  • java实现图片写入高清字体及带边框的方法

    2023-11-29 03:43:47
  • Spring注解@DependsOn解析

    2022-01-11 08:20:35
  • java微信公众号支付示例详解

    2023-11-15 05:52:01
  • Java后端Tomcat实现WebSocket实例教程

    2023-08-22 17:31:09
  • asp之家 软件编程 m.aspxhome.com