`
舟舟同学
  • 浏览: 45676 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

struts2开发4--自定义拦截器把不文明用语改变成***

阅读更多

struts2拦截器是在访问某个Action或者Action的某个方法、字段之前或者之后实施拦截,并且struts2拦截器是可插拔的,拦截器是AOP的一种实现。这里重点介绍下自定义文字过滤拦截器,把我们平时评论中的不文明的用语改变成***显示在评论对话框中。具体操作如下几步完成:(参考程序是把评论中“人品差”改变成“***”,大家可以利用这个方法,根据自己项目需求,设定其他不文明用语)

第一步,在项目中创建ContentAction类,具体代码如下:

package cn.test.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class ContentAction extends ActionSupport{
 private String name;//评论人
 private String content;//评论内容
 public String contentUI()throws Exception{
  return "content";
 }
   
 public String execute() throws Exception{
  ActionContext ac=ActionContext.getContext();
  ac.getApplication().put("name", name);
  ac.getApplication().put("content", content);
     return "success";
    }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getContent() {
  return content;
 }

 public void setContent(String content) {
  this.content = content;
 }
}
第二步,创建content_send.jsp,代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<s:form action="content_execute">
<s:textfield name="name" label="评论人" size="81"></s:textfield>
<s:textarea name="content" label="评论正文" clos="80" rows="10"></s:textarea>
<s:checkbox name="arr" label="我已经阅读并同样条款"></s:checkbox>
<s:submit value="发送" ></s:submit>
</s:form>
</html>

第三步,创建content_success.jsp,代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s"  uri="/struts-tags"%>
<table >
  <tr style="font-size: 12px">
   <td>评论人 :<s:property value="#application.name"/></td>
  </tr>
  <tr>
    <td style="font-size: 12px"> 评论正文: <s:property value="#application.content"/></td>
  </tr>
</table>
</html>

第四步:创建自定义过滤器ContentInterceptor,代码如下:

package cn.test.Interceptor;

import cn.test.action.ContentAction;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class ContentInterceptor extends AbstractInterceptor{

 @Override
 public String intercept(ActionInvocation arg0) throws Exception {
  
  Object obj=arg0.getAction();//获取Action的实例
  if(obj!=null)
  {
   if(obj instanceof ContentAction)
   {
    ContentAction ca=(ContentAction)obj;//实例化ContentAction类
    //System.out.println(ca);
    String content=ca.getContent();//获得用户提交的评论信息
    //System.out.println(content);
    if(content!=null)
    {
    int startIndex=content.indexOf('人');//检测字符人出现的位置
    String str=content.substring(startIndex,startIndex+3);
    if(str.equals("人品差"))
    {
     content=content.replaceAll("人品差", "***");
     ca.setContent(content);
    }
    return arg0.invoke();//放行
    }
    return arg0.invoke();
   }
  return arg0.invoke();
  }
  return arg0.invoke();
 }
}

第五步,配置struts.xml文件

 <!-- 定义拦截器声明 -->
   <interceptors>
    <interceptor name="ContentInterceptor" class="cn.test.Interceptor.ContentInterceptor"></interceptor>
    </interceptors>

<action name="content_*" class="cn.test.action.ContentAction" method="{1}">

                       <!-- 在Action中使用声明的拦截器 -->
        <interceptor-ref name="defaultStack"></interceptor-ref>
        <interceptor-ref name="ContentInterceptor"></interceptor-ref>
        <result name="content">/WEB-INF/jsp/content_send.jsp</result>
        <result name="success">/WEB-INF/jsp/content_success.jsp</result>

大家注意一下,默认拦截器一定使用在自定义拦截器前面,否则,不能实现拦截

第六步:部署项目,启动tomcat,在浏览器中输入:http://localhost:8080/MyWeb/content_contentUI

测试结果:

 

点击发送

 

 

 

1
6
分享到:
评论

相关推荐

    Struts2--自定义拦截器

    自定义拦截器是Struts2中的一个重要特性,允许我们扩展框架的功能,以实现诸如日志记录、权限检查、性能监控等通用任务。在本文中,我们将深入探讨如何创建和使用自定义拦截器。 首先,了解拦截器的基本概念。在...

    JSP 开发之Struts2内建自定义拦截器.docx

    通过自定义拦截器,开发者可以在不修改Action代码的情况下扩展Struts2的功能,使得代码更加模块化和可维护。同时,通过灵活的配置,拦截器可以适应各种业务需求,如登录检查、权限验证、日志记录、事务管理等。因此...

    struts2自定义拦截器配置心得

    Struts2自定义拦截器的配置是Struts2框架中一个非常重要的功能,它允许开发者在Action执行前后插入自定义的逻辑,以实现如权限验证、日志记录、性能监控等多种需求。以下是对标题和描述中涉及的知识点的详细说明: ...

    struts2的一个自定义拦截器小例子

    本示例将聚焦于如何在Struts2中实现一个自定义拦截器。 首先,我们需要了解拦截器在Struts2中的作用。拦截器是AOP(面向切面编程)的一个核心概念,它允许开发者在动作执行前后插入额外的逻辑,如日志记录、权限...

    struts2 自定义拦截器.rar

    自定义拦截器是Struts2框架中一个非常重要的特性,允许开发者扩展和定制框架的行为,以满足特定的业务需求。这篇博客文章可能是关于如何在Struts2中创建和使用自定义拦截器的教程。 在Struts2中,拦截器是基于责任...

    struts2自定义拦截器

    在Struts2中,自定义拦截器是实现业务逻辑控制、数据验证、权限管理等功能的重要手段。下面将详细探讨如何在Struts2中实现自定义拦截器来完成权限拦截。 首先,我们需要了解Struts2拦截器的工作原理。拦截器是在...

    struts2开发文档

    Struts2的核心是WebWork的拦截器机制,这一机制使得业务逻辑控制器与Servlet API完全分离,提高了可测试性和可维护性。 1. **Struts2 概述** - **体系结构**:Struts2采用了全新的体系结构,与Struts 1有很大差异...

    Struts2自定义拦截器

    在深入探讨自定义拦截器之前,我们先理解一下Struts2拦截器的基本概念。 拦截器(Interceptor)是基于Java的动态代理机制实现的,它可以拦截用户的请求,对请求进行预处理,并且在Action执行后进行后处理。通过在...

    struts2--4.拦截器

    拦截器是Struts2框架的一个关键特性,它允许在动作执行前后插入自定义逻辑。拦截器就像过滤器一样,按照预定义的顺序对请求进行处理,可以执行验证、日志记录、事务管理等多种任务。它们通过实现`Interceptor`接口或...

    struts2基础--使用自定义MVC

    4. **定制化配置**:Struts2的配置文件(struts.xml)可以被自定义,以指定Action的映射、结果类型、拦截器栈等。开发者可能根据租房系统的需求调整了这些配置。 5. **自定义模型驱动**:模型驱动是一种编程模式,...

    json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar

    `struts2-json-plugin-2.1.8.1.jar` 则是Struts 2框架的一个插件,主要用于增强Struts 2对JSON的支持。Struts 2是一款非常流行的MVC(Model-View-Controller)框架,用于构建企业级的Java Web应用程序。这个插件允许...

    struts2教程我在培训时用的

    - **内建拦截器**:Struts2提供了一系列预定义的拦截器,如参数填充拦截器、异常处理拦截器等。 - **自定义拦截器**:开发者可以自定义拦截器,实现特定的功能。 - **自定义方法过滤拦截器**:根据Action的方法名来...

    Struts2学习文档

    - **概念介绍**:列出Struts2自带的一些常用拦截器,如`params`拦截器、`servletConfig`拦截器等。 **7.4 开发自己的拦截器** - **实现方式**:指导如何自定义拦截器。 **7.5 深入拦截器编程** - **7.5.1 拦截...

    Struts2 拦截器-v3

    拦截器是Struts2框架中的核心组件,用于增强和扩展应用程序的功能,使得开发者可以在执行Action之前或之后执行自定义逻辑。在"Struts2 拦截器-v3"的学习资料中,我们将会深入探讨这个关键概念。 1. **拦截器原理**...

    struts2-jquery-plugin使用手册,自己写的

    Struts2-jQuery-Plugin是基于Struts2框架的一个扩展插件,它为开发者提供了丰富的jQuery UI组件,使得在Struts2应用中实现交互式的用户界面变得更加便捷。这个使用手册将详细阐述如何集成并利用该插件提升Web应用的...

    struts2-json-plugin源码

    4. **拦截器**:Struts2的拦截器机制允许在Action调用前后执行特定逻辑。JSON插件可能包含用于处理JSON请求和响应的拦截器,比如处理JSON参数的解析和验证。 5. **Action与模型驱动**:如果Action使用模型驱动模式...

    struts1-and-struts2.zip_between

    - **Struts2**:利用拦截器处理异常,可以创建自定义的异常拦截器,使得异常处理更加模块化和可重用。 6. **页面导航** - **Struts1**:依赖于struts-config.xml中的forward标签,配置较为复杂。 - **Struts2**...

    struts2的自定义拦截器例子

    在这个"struts2的自定义拦截器例子"中,我们将深入探讨如何创建和使用自定义拦截器。 首先,拦截器的本质是Java的面向切面编程(AOP)思想在Struts2中的体现。它们允许开发者在动作执行前后插入自定义的逻辑,例如...

    struts-2.5所有jar包

    - **拦截器**:拦截器是Struts2的核心机制之一,通过定义拦截器链,可以实现如权限验证、日志记录、性能监控等功能。 - **配置方式**:可以选择传统的XML配置,也可以使用更加灵活的注解和Conventions配置。 - **...

Global site tag (gtag.js) - Google Analytics