Struts其他-如何使用拦截器的例子
2018-02-03 01:23
369 查看
拦截器可以简单地看成是Struts中的"filter"
拦截器可以拦截指定的Action,并且对Action进行相应的操作
在本例里,拦截了ProductAction,并且注入了当前时间
ProductAction.java
准备一个Date属性,用于被拦截器注入时间
list.jsp
用于显示时间
当然现在是显示不出来的,因为还没有拦截器对ProductAction进行时间注入
创建拦截器
把拦截到的Action强制转换成 ProductAction,并设置当前时间(注入)
配置struts.xml
10-12 声明dateInterceptor
16 对ProductAction使用拦截器dateInterceptor
17 一旦使用了自定义的拦截器,本来配置在action上的默认的拦截器就失效了。 所以需要再加上defaultStack
测试
重启tomcat,访问页面
http://127.0.0.1:8080/struts/listProduct
即可看到被注入的当前时间
拦截器可以拦截指定的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
即可看到被注入的当前时间
相关文章推荐
- struts拦截器的使用(简单例子)
- 如何使用Eclipse最简单地配置其他语言的IDE环境:例子-Python
- 如何在项目开发过程中使用Struts-menu
- [转载]在Eclipse3.1中如何使用Lomboz3.1开发struts
- 如何在C#中使用 Win32和其他库 (转)
- 如何使用sys用户remove其他用户的job
- 如何在C#中使用Win32和其他库-------www.knowsky.com
- 举一个简单例子来说明:如何在JSP中使用JavaBean
- 如何在项目开发过程中使用Struts-menu
- GridView控件使用(在GridView中放入其他控件的情况如何取得当前行)
- 深入探讨如何在 C# 中使用 Win32 和其他现有库
- 举个小例子说明如何使用查表这种方式
- Struts中使用commons-fileupload实现上传例子
- 不知道用户密码如何使用其他用户登陆
- 在Eclipse3.1中如何使用Lomboz3.1开发struts
- 在Eclipse3.1中如何使用Lomboz3.1开发struts
- 如何在C#中使用 Win32和其他库
- 关于如何使用struts标签输出值为map的list
- object.insertAdjacentHTML 如何使用?并附上多文件上传的例子
- 通过一个简单的例子,介绍如何使用LDAP(转)