- 浏览: 176270 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
dupeng41255:
问一下,。com的接口 是不是需要注册啊?我调用的时候返回说需 ...
java实现whois域名查询 -
feiyu86:
比喻的非常贴切。。
synchronized方法和代码块的使用 -
罡风笑:
贴结果:CBH 蜀汉 绝顶 刀客
开心一下 你古代的身份。超级好玩~
package com.yal.character.Filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* @author 张少年
* @date 2008-3-20
* 解决Struts中文显示乱码问题
* */
public class SetCharacterEncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = true; //在web.xml文件里定义filter时要用到此参数
public void destroy() {
// TODO Auto-generated method stub
this.encoding = null;
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
// Conditionally select and set the character encoding to be used
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
//Pass control on to the next filter
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;
}
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}
//class end
(注:假如我们是用tomcat作服务器的话,那就更方便了,我们可以直接在tomcat的webapps\jsp-examples\Web-INF\classes\filters目录中的两个源文件RequestDumperFilter.java,SetCharacterEncodingFilter.java复制到你使用的包下。)
2.写好这个类以后,我们就在WEB应用的web.xml文件里定义Filter类,完整web.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<!-- 定义Filter,解决struts中文问题 -->
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.yal.character.Filter.SetCharacterEncodingFilter</filter-class>//包名
<init-param>
<!-- 定义编码格式,我用的是GBK -->
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
<init-param>
<!-- innore参数是在过滤器类定义的 -->
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<servlet-name>*.jsp</servlet-name>
</filter-mapping>
<!-- Filter 定义结束 -->
<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>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>/WEB-INF/jesun.tld</taglib-uri>
<taglib-location>/WEB-INF/jesun.tld</taglib-location>
</taglib>
</web-app>
(3)以后编写JSP文件时,记得加入下面两句:
<%@page contentType="text/html;charset=GBK"%>
<META http-equiv=Content-Type content="text/html;charset=GBK">
到这里我们的工作就做完了,在程序里我们不需要再作任何其它处理,呵呵
发表评论
-
Eclipse 中Hibernate tools 的安装和使用
2014-09-23 20:21 739eclipse 远程安装hibernate插件 自动生成mo ... -
Java关键字final、static使用总结
2011-05-24 12:31 964一、final 根据程序上下文环境,Java关键字final ... -
Ubuntu下jdk的几种不用的环境变量配置
2011-04-08 16:30 21051.安装ubuntu下的jdk 到s ... -
快速递归排序及2分查找
2011-04-06 13:55 1250import java.util.Arrays; pub ... -
Java synchronized用法搜集
2010-08-21 11:13 21821、synchronized关键字的作用域有二种: 1 ... -
生产者与消费者例子(多线程wait()与notifyAll应用)
2010-05-25 16:42 1026package test; import java.ut ... -
synchronized块及方法应用
2010-05-24 16:02 870package test; class Obj impl ... -
run()外部捕获run()内未捕获的异常
2010-05-24 11:25 929package test; import java.ut ... -
java注解简单应用
2010-05-21 13:38 1658package test; import java.la ... -
enum版本石头剪刀布
2010-05-20 15:24 1127package test; public enum Ou ... -
PowerDesigner建模资料
2010-04-22 01:02 985PowerDesigner建模资料 -
jquery帮助文档
2010-04-21 23:49 1053很有用的帮助文档,见附件 -
Hibernate获取数据方式与缓存使用
2010-04-21 21:55 2375Hibernate获取数据的方式有不同的几种,其与缓存结合使用 ... -
URLConnection的连接、超时、关闭用法总结
2010-04-07 20:54 4854Java中可以使用HttpURLConne ... -
螺旋矩阵(顺时针内转)
2010-03-11 15:47 1475import java.util.Arrays; pub ... -
java面试题库
2010-03-08 00:23 771java的一些常见的题集,学习和面试好帮手 -
Apache tomcat集群总结
2010-03-06 03:33 11211.去掉apache中httpd.conf目录中以下几行的注释 ... -
Apache负载均衡设置方法: mod_proxy
2010-03-06 03:28 1108WebjxCom提示:一般来说 ... -
apache中文文档
2010-03-06 01:40 945apache环境配置中的必要手册 -
kxml源码
2010-03-02 23:17 995非常有用的XML解析器,小巧玲珑
相关推荐
本案例“过滤器应用案例”着重讲解了如何利用过滤器来实现用户登录状态的监控以及权限控制。 过滤器在JAVA2EE中的作用: 1. **数据转换**:过滤器可以对请求或响应的数据进行转换,如编码转换,字符集调整等。 2. *...
一个过滤器可以被应用于多个URL模式,也可以有多个过滤器应用于同一个URL模式,这取决于`web.xml`或注解的配置。 7. **Filter的异常处理** 在`doFilter()`方法中,如果抛出未捕获的异常,容器会自动调用`destroy...
#### 五、过滤器应用场景 - **编码过滤**:用于解决客户端提交的数据编码问题,确保字符集的一致性。 - **权限过滤**:检查用户是否已登录,以及是否有权限访问特定资源。 - **日志记录**:记录用户的访问日志,...
CAD中光标动态移动点提示,增加自定义消息,源代码 ADDMON Adds our custom monitor RemoveMonitor REMMON Removes our custom monitor AddFilter ADDFIL Adds our custom filter RemoveFilter REMFIL Removes our ...
例如,以下配置会将名为`MyFilter`的过滤器应用到所有以`.jsp`结尾的URL上: ```xml <filter-name>MyFilter <filter-class>com.example.MyFilter</filter-class> <filter-name>MyFilter *.jsp ``` 四、...
`filter-mapping`部分指定了过滤器应用于所有URL(`/*`),意味着对于每一个请求,都会先通过`EncodingFilter`。 总结一下,中文字符过滤器`EncodingFilter`是处理中文乱码问题的有效手段。通过在请求进入Servlet...
此配置使`LoggerFilter`过滤器应用于所有Web资源,实现全局日志记录。 2. **过滤特定类型文件** ```xml <filter-name>loggerfilter <filter-class>myfilter.LoggerFilter <filter-name>loggerfilter *....
例如,将过滤器应用于所有`.jsp`页面或特定的Servlet。 6. **过滤器的顺序**:多个过滤器可以一起工作,它们的执行顺序取决于在`web.xml`或注解中定义的顺序。过滤器的排列决定了请求通过过滤器链的路径。 综上所...
`<filter-name>`定义过滤器的唯一标识,`<filter-class>`指定实现Filter接口的类全名,`<filter-mapping>`则指定过滤器应用于哪些Servlet或URL模式。 3. **过滤器链**:多个过滤器可以串联形成过滤器链,按照配置的...
`filter-mapping`元素指定了过滤器应用于哪些URL。`/*`表示所有请求都将通过这个过滤器。 除了`EncodingFilter`,在Web应用中还有其他常见的过滤器,如Struts的`TilesFilter`、Hibernate的`OpenSessionInViewFilter...
上述配置表示名为"MyFilter"的过滤器应用于所有以"/jsp/"开头的URL。 5. **编写过滤器类** 创建一个实现`Filter`接口的类,并覆盖`doFilter()`方法。例如: ```java public class MyFilter implements Filter ...
`filter-mapping`则定义了该过滤器应用于所有的URL(`/*`)。 通过这样的方式,`SetCharacterEncodingFilter`可以确保在整个Web应用中,无论用户从何处发送请求,中文字符都能被正确处理,提高了用户体验并避免了...
四、过滤器应用场景 - **权限控制**:检查用户是否已登录,未登录则重定向到登录页面。 - **数据格式化**:如将请求参数转换为特定的格式。 - **安全过滤**:过滤掉恶意请求,如SQL注入。 - **日志记录**:记录每个...
- 配置过滤器映射,将过滤器应用于所有或特定的URL请求。 6. **过滤器执行流程** 当用户发起请求时,过滤器链会按照配置的顺序依次执行。每个过滤器有机会修改请求和响应,直到请求达到最终的目标资源(如Struts2...
每个filter元素定义一个过滤器,filter-mapping元素指定这个过滤器应用到哪些URL。通过这种方式,我们可以构建出层次化的过滤链,请求会依次经过这些过滤器。 此外,Servlet 3.0及以上版本提供了注解驱动的过滤器...
通过使用加减号,开发者可以灵活地控制过滤器应用于特定动作或排除特定动作。 示例代码: ```php public function filters() { return array( 'postOnly+edit,create', // postOnly过滤器应用于edit和create动作 ...
在实际开发中,我们通常会将过滤器应用于整个Web应用,以便所有请求都能得到统一的编码处理。此外,对于POST请求,由于其参数是在请求体中传递的,因此还需要在Servlet或Controller中单独处理请求体的编码设置。在...
在 ASP.NET MVC 中,过滤器通过在方法或控制器级别应用特性来指定。例如,`[Authorize]` 特性用于限制只有经过身份验证的用户才能访问特定的控制器或动作。在提供的例子中,`AuthFiltersController` 中的 `Welcome` ...