Struts其他-如何使用拦截器的例子

拦截器可以简单地看成是Struts中的"filter" 
拦截器可以拦截指定的Action,并且对Action进行相应的操作 
在本例里,拦截了ProductAction,并且注入了当前时间

  • ProductAction.java

    准备一个Date属性,用于被拦截器注入时间
    package com.how2java.action;
      
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
     
    import com.how2java.bean.Category;
    import com.how2java.bean.Product;
      
    public class ProductAction {
         
        private Date date;
         
        public Date getDate() {
            return date;
        }
     
        public void setDate(Date date) {
            this.date = date;
        }
     
        private Product product;
         
        private List<Category> categories =new ArrayList();
         
        public List<Category> getCategories() {
            return categories;
        }
     
        public void setCategories(List<Category> categories) {
            this.categories = categories;
        }
     
        public String show() {
            product = new Product();
            product.setName("iphone7");
            return "show";
        }
      
        public String add() {
            return "show";
        }
         
        public String list() {
            Category category1 =new Category();
            category1.setId(1);
            category1.setName("category1");
             
            Category category2 =new Category();
            category2.setId(2);
            category2.setName("category2");
             
            categories.add(category1);
            categories.add(category2);
             
            List<Product> products1=new ArrayList();
            Product p1 = new Product();
            p1.setId(1);
            p1.setName("product1");
            Product p2 = new Product();
            p2.setId(2);
            p2.setName("product2");
            Product p3 = new Product();
            p3.setId(3);
            p3.setName("product3");
      
            products1.add(p1);
            products1.add(p2);
            products1.add(p3);
             
            List<Product> products2=new ArrayList();
            Product p4 = new Product();
            p4.setId(4);
            p4.setName("product4");
            Product p5 = new Product();
            p5.setId(5);
            p5.setName("product5");
            Product p6 = new Product();
            p6.setId(6);
            p6.setName("product6");
             
            products2.add(p4);
            products2.add(p5);
            products2.add(p6);
             
            category1.setProducts(products1);
            category2.setProducts(products2);
             
            return "list";
      
        }
      
        public Product getProduct() {
            return product;
        }
      
        public void setProduct(Product product) {
            this.product = product;
        }
    }
  • list.jsp

    用于显示时间 
    当然现在是显示不出来的,因为还没有拦截器对ProductAction进行时间注入
    <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8" isELIgnored="false"%>
     
    <%@ taglib prefix="s" uri="/struts-tags" %>
     
    <%@page isELIgnored="false"%>
     
    ${date}
     
    <table border="1" cellspacing="0">
        <tr>
            <td>id</td>
            <td>name</td>
            <td>products</td>
        </tr>
         
        <s:iterator value="categories" var="c">
            <tr>
                <td>${c.id}</td>
                <td>${c.name}</td>
                <td>
                    <s:iterator value="#c.products" var="p">
                        ${p.name}<br/>
                    </s:iterator>        
                </td>
            </tr>
        </s:iterator>
     
    </table>
     
    <s:debug/>
  • 创建拦截器

    把拦截到的Action强制转换成 ProductAction,并设置当前时间(注入)
    package com.how2java.interceptor;
     
    import java.util.Date;
     
    import com.how2java.action.ProductAction;
    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
     
    public class DateInterceptor extends AbstractInterceptor {
     
        public String intercept(ActionInvocation invocation) throws Exception {
           ProductAction action = (ProductAction)invocation.getAction();
           action.setDate(new Date());
           return invocation.invoke();
        }
    }
  • 配置struts.xml

    10-12 声明dateInterceptor 
    16 对ProductAction使用拦截器dateInterceptor 
    17 一旦使用了自定义的拦截器,本来配置在action上的默认的拦截器就失效了。 所以需要再加上defaultStack
    <?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>
        <constant name="struts.i18n.encoding" value="UTF-8"></constant>
     
        <package name="basicstruts" extends="struts-default">
            <interceptors>
                <interceptor name="dateInterceptor" class="com.how2java.interceptor.DateInterceptor" />
            </interceptors>
     
            <action name="*Product*" class="com.how2java.action.ProductAction"
                method="{1}">
                <interceptor-ref name="dateInterceptor" />
                <interceptor-ref name="defaultStack" />  
                <result name="show">show.jsp</result>
                <result name="list">list.jsp</result>
            </action>
     
        </package>
     
    </struts>
  • 测试

    重启tomcat,访问页面
     
    http://127.0.0.1:8080/struts/listProduct
     
    即可看到被注入的当前时间






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过信息化手段提升教育、管理和服务水平,实现资源数字化、工作流程化、管理高效化和决策智能化。方案包括智慧校园信息化平台和安防平台的建设,涉及教学、科研、管理和服务等多个方面,以满足现代教育和培训需求。 技术服务要求强调了统一支撑平台的建设,包括数据标准、接口标准、代码标准和用户信息标准的统一制定。平台需满足信创和X86交叉适配要求,确保安全自主可控的系统开发环境。此外,方案还涵盖了用户中心系统、统一认证授权中心、统一工作流中心、统一智能报表中心等多个模块,以及数据共享中心、语音识别、移动服务终端等功能,以实现校园内外部信息的互联互通和资源共享。 智慧校园信息化平台的建设还包括了对教学管理、人事管理、公文管理、档案管理、即时通讯、会议管理、督办工作、资产管理等方面的数字化和自动化升级。这些模块的集成旨在提高工作效率,优化资源配置,加强监督管理,并通过移动应用等技术手段,实现随时随地的信息访问和业务处理。 安防平台的建设则侧重于校园安全,包括停车场管理、人脸识别测温、访客自助登记、视频监控等多个系统。这些系统的集成旨在提高校园的安全管理水平,实现对校园内外人员和车辆的有效监控和管理,确保校园环境的安全稳定。 最后,方案还提到了对固定资产的管理,包括购置、使用、归还、报废等全生命周期的管理,以及对网络设备、安防设备、服务器等硬件设施的配置和管理。通过这些措施,智慧校园建设方案旨在为校园提供一个安全、高效、便捷的学习和工作环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值