`
wudi1906
  • 浏览: 68161 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts filter用法,网上的都是胡扯(包括本文,嘿嘿)

阅读更多
<filter> 
        <filter-name>Set_Character_Encoding</filter-name> 
        <filter-class>com.baofeng.media.filter.EncodingFilter</filter-class> 
        <init-param> 
            <param-name>encoding</param-name> 
            <param-value>UTF-8</param-value> 
        </init-param> 
    </filter> 
 <filter-mapping> 
     <filter-name>Set_Character_Encoding</filter-name> 
     <url-pattern>/*</url-pattern>  //不是<servlet-name>
 </filter-mapping> 




不明白吗?往后看

<servlet>
<servlet-name>action</servlet-name> 
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>


对应.指定当服务器收到.do结尾的请求的时候.调用org.apache.struts.action.ActionServlet类来处理.
action就是一个名字.只要保证两部分的<servlet-name>能够一致就ok.*.do可以改.就是个请求的字符.你的jsp中肯定在提交请求的时候.发送的是xxx.do这种

servlet-name是在配置文件里的名字,为了对应匹配的,不要瞎写,应该是红色字体部分。


以下是过滤器的代码,注意,所有前台的请求必须是post的,不然过滤器是不会管的。

 protected FilterConfig filterConfig;

 protected String   encodingName;

 protected boolean   enable;

 public EncodingFilter() {
  this.encodingName = "UTF-8";
  this.enable = false;
 }

 public void init( FilterConfig filterConfig) throws ServletException {
  this.filterConfig = filterConfig;
  loadConfigParams();
 }

 private void loadConfigParams() {
  this.encodingName = this.filterConfig.getInitParameter("encoding");
  String strIgnoreFlag = this.filterConfig.getInitParameter("enable");
  if (strIgnoreFlag.equalsIgnoreCase("true"))
  {
    this.enable = true;
  }else
  {
    this.enable = false;
  }
 }

 public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
   ServletException {
  if (this.enable)
  {
   request.setCharacterEncoding(this.encodingName);
   response.setCharacterEncoding(this.encodingName);
  }
  chain.doFilter(request, response);
 }

 public void destroy() {
 }



还有一点要注意:

通过 get/post 方式从 ie中发送汉字,发送编码方式由Content-Type决定,request.getParameter("XX")得到的字符串是用ISO-8859-1表示的,所以必须在取值前用HttpServeletRequest.setCharacterEncoding 设置想得到的编码类型,或是在<Connector>中添加URIEncoding="GBK"属性,来获取正确的编码类型。

但是,在执行setCharacterEncoding()之前,不能执行任何getParameter()。

java doc上说明:This method must be called prior to reading request parameters or reading input using getReader()。而且,该指定只对POST方法有效,对GET方法无效。分析原因,应该是在执行第一个getParameter()的时候, java将会按照编码分析所有的提交内容,而后续的getParameter()不再进行分析,所以setCharacterEncoding()无效。 而对于GET方法提交表单是,提交的内容在URL中,一开始就已经按照编码分析所有的提交内容,setCharacterEncoding()自然就无效。

摘自:http://www.blogjava.net/xyang/archive/2006/09/28/72343.html
分享到:
评论

相关推荐

    Struts2_interceptor_和_filter区别

    标题和描述均聚焦于“Struts2_interceptor_和_filter区别”,这暗示着对比和解析Struts2框架中拦截器(Interceptor)与过滤器(Filter)的差异是本文的核心议题。接下来,我们将深入探讨这两者在功能、实现方式以及...

    结合struts2编写的通用过滤器filter

    本示例中的“通用过滤器filter”是专门为Struts2设计的,用于增强应用的安全性和功能性。 过滤器(Filter)在Java Servlet规范中定义,是基于请求/响应模型工作的。它们通过实现`javax.servlet.Filter`接口,并重写...

    网上书店struts2

    在"网上书店struts2"项目中,可能会包含关于商品展示、购物车管理、订单处理等相关Action的配置。 五、OGNL OGNL是一种强大的表达式语言,用于在Struts2中获取和设置对象的属性。在视图层,OGNL可以用来动态地渲染...

    tomcat、struts2、servlet Filter(过滤器) 工作原理

    在IT行业中,Tomcat、Struts2和Servlet Filter是Java Web开发中的重要组成部分。了解它们的工作原理对于构建高效、安全的Web应用程序至关重要。下面将详细阐述这三个组件的基本概念和工作流程。 首先,Tomcat是一个...

    Struts2中的session用法

    在 Struts2 中,Session 的使用主要通过实现 SessionAware 接口来实现,本文将详细介绍 Struts2 中的 Session 用法。 一、Session 概念 在 Web 应用程序中,Session 是指服务器端用于存储用户数据的存储空间。...

    struts2标签用法详解

    在本文中,我们将深入探讨Struts2标签的用法,包括它们的基本概念、类型以及如何在实际开发中应用。 一、Struts2标签基础 Struts2标签库是基于JavaServer Pages (JSP) 标准标签库(JSTL)的扩展,它包含了一系列与...

    STRUTS:filter过滤器

    ### STRUTS:filter过滤器 #### 概述 在Java Web开发中,过滤器(Filter)是一种重要的组件,用于拦截客户端发送至服务器的请求或服务器返回至客户端的响应。Struts框架作为Java Web开发中的一种流行框架,利用了...

    struts用法总结

    以下是对Struts用法的详细总结: 1. **STRUTS 编码步骤**: - 创建项目的目录结构:通常包括SOURCE、JSP、WEB-INF、classes和lib目录。 - SOURCE下存放未编译的Java源代码。 - JSP目录下存放用户交互界面的JSP...

    Struts2--1.Filter作为控制器并搭建Struts2的基本环境

    在本文中,我们将深入探讨如何使用Filter作为控制器来搭建Struts2的基本环境。 首先,理解Filter在Web开发中的作用至关重要。Filter是Servlet API的一部分,它允许开发者在请求到达目标Servlet或JSP之前对其进行...

    struts2 ognl用法项目

    在这个“Struts2 OGNL用法项目”中,我们将深入探讨OGNL(Object-Graph Navigation Language),它是Struts2中一个强大的表达式语言,用于在模型对象和视图之间进行数据绑定和表达式计算。 OGNL是Struts2的核心组件...

    struts中dispatchAction用法

    在压缩包文件"struts_DispatchAction"中,可能包含了实现上述步骤的示例代码,包括 DispatchAction 的Java源代码和struts-config.xml配置文件,以及可能的JSP视图文件。通过学习和分析这些文件,初学者可以更深入地...

    Struts简介 什么是Struts Struts基本运作流程

    本文主要讨论 Struts 1 的相关内容。 - **Struts 的核心优势**:Struts 提供了一个结构化的框架,帮助开发者更高效地组织代码,使得应用更加易于维护和扩展。此外,Struts 还提供了一系列的内置功能,如表单验证、...

    struts2标签使用方法

    下面我们将详细探讨Struts2标签的使用方法以及EL(Expression Language)表达式。 1. **Struts2标签库**: - **s:textfield**: 用于创建输入字段,可以设置属性如name、value、size、maxlength等。 - **s:...

    Struts2.5.2的配置及问题解决

    本文将详细介绍Struts2.5.2的配置过程以及可能遇到的问题和解决方案。 首先,配置Struts2.5.2需要从官方站点下载所需的jar包。在http://struts.apache.org/download.cgi#struts252上,你可以找到两个选项:1是指...

    Struts基本用法

    Struts入门必备

    Struts基本用法之国际化

    Struts基本用法之国际化

    网上书店 struts JSP 毕业设计

    网上书店的毕业设计项目通常是为了让学生实践Web应用开发技能,特别是使用Struts和JSP技术。这个项目旨在帮助开发者理解MVC(Model-View-Controller)设计模式在实际中的应用,以及如何通过JSP和Struts框架来实现...

    struts2.5.1简单搭建

    在本文中,我们将深入探讨如何简单搭建一个Struts2.5.1项目,并了解其核心概念。 首先,让我们来看看Struts2的基本组成部分: 1. **模型(Model)**:这是应用程序的核心业务逻辑,通常由Java类实现。模型负责处理...

    struts2写的网上书店系统

    开发者可以从中学习到如何使用Struts2框架进行web应用开发,包括控制器层的设计、业务逻辑的实现以及与视图层的交互。同时,也可以了解到如何在实际项目中整合其他Java技术,如数据库操作、安全控制等。

    Struts2编写的通用(拦截器,过滤器)Filter

    拦截器的实现通常包括创建一个自定义拦截器类,该类继承自`org.apache.struts2.interceptor.BaseInterceptor`或实现`Interceptor`接口,并在`intercept()`方法中编写业务逻辑。 **过滤器(Filter)** 过滤器是...

Global site tag (gtag.js) - Google Analytics