编码过滤器Filter

编码过滤器的java文件:

CharsetFilter.java:

package com.house.util;
/**
 * @author
 * @version 
 * 创建时间:2006-12-13 15:08:35
 * 类说明:
 */
import javax.servlet.*;
import javax.servlet.http.*;


import java.io.IOException;




public class CharsetFilter implements Filter {


	
	private String targetencoding = "UTF-8";
	
	protected FilterConfig filterConfig = null;


	public void destroy() {
		
		this.filterConfig = null;
	}
	
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {


		HttpServletRequest request = (HttpServletRequest)req;
		request.setCharacterEncoding(targetencoding);
		chain.doFilter(req,resp);
	}


	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
		this.targetencoding = filterConfig.getInitParameter("encoding");


	}	
}


web.xml文件  配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name />
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <filter>
    <filter-name>encoding</filter-name>
    <filter-class>com.house.util.CharsetFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>



在IntelliJ IDEA(通常简称IDEA)中,字符编码过滤器Filter)主要用于处理文本文件的输入输出操作时的编码转换。如果你想创建一个简单的字符编码过滤器,你可以通过编写一个自定义的处理器(Annotator)来实现。以下是一个基本步骤: 1. **创建一个新的Annotator**: 打开IntelliJ IDEA,选择`File` -> `New` -> `Project`,然后选择`Plugins`作为项目类型。 2. **添加新的模块**: 创建一个`src/main/java`目录用于存放代码,并创建一个名为`YourEncodingFilter`的包。 3. **编写Filter类**: 在`YourEncodingFilter`包下创建一个名为`CharEncodingFilter.java`的文件,里面可以定义一个实现了`com.intellij.openapi.editor.event.DocumentEventRunnable`接口的类。例如: ```java import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.event.DocumentEvent; import com.intellij.openapi.editor.event.DocumentListener; public class CharEncodingFilter implements DocumentListener { private final String targetEncoding; // 需要转换的目标编码 public CharEncodingFilter(String targetEncoding) { this.targetEncoding = targetEncoding; } @Override public void beforeDocumentChange(DocumentEvent e) { if (e.getOldText() != null && !ApplicationManager.getApplication().isUnitTestMode()) { // 这里可以根据需要进行字符编码转换 String newText = convertEncoding(e.getOldText(), e.getDocument().getCharset(), targetEncoding); e.setNewText(newText); } } // 编码转换方法,这里只是一个示例,实际需要根据具体库如BOMUtil、Charsets等来实现 private String convertEncoding(String text, Charset currentEncoding, String targetEncoding) { // 实现编码转换逻辑 } // 其他生命周期方法可以省略,因为DocumentListener只会触发beforeDocumentChange事件 } ``` 4. **注册Annotator**: 在项目的`META-INF/plugin.xml`文件中添加关于新模块的配置信息,并注册你的Annotator: ```xml <idea-plugin> <extensions defaultExtensionNs="com.intellij"> <annotator language="*" implementationClass="your.package.CharEncodingFilter"/> </extensions> </idea-plugin> ``` 5. **激活插件**: 完成上述步骤后,记得重启IDEA并启用你的插件才能看到效果。 **相关问题--:** 1. IntelliJ IDEA中如何查看已安装的Annotators? 2. 怎么样调试这个自定义的字符编码过滤器? 3. 是否有其他方式在IntelliJ IDEA中实现文件编码检测和自动转换?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值