过滤器接口与实现字符编码过滤器实例

 

[1]过滤器的原理

 

[2]过滤链

[3]Filter接口

 

*public void init(FilterConfig filterConfig)throws ServletException//过滤器初始化方法,此方法在过滤器初始化时被调用

*public void doilter(ServletRequest request , ServletResponse response,FilterChain chain)throws IOException, ServletException//对请求进行过滤 处理

*public void destroy();//销毁方法,以便释放资源

[4]FilterConfig接口

 

*public Strng getFilterName();//用于获取过滤器的名字

*public ServletContext getServletContent();//获取Servlet上下文

*public String getInitParameter(String name);//获取过滤器的初始化参数值

*public Enumeration getInitParameterNames();//获取过滤器的所有初始化参数

[5]FilterChain接口

public void doFilter(ServletRequest request request, ServletResponse response)throws IOException , ServletException

[6]过滤器的配置

 

<!-- 声明过滤器 -->
	<filter>
		<!-- 过滤器名称 -->
		<filter-name>CharactorFilter</filter-name>
		<!-- 过滤器的完整类名 -->
		<filter-class>com.lyq.CharactorFilter</filter-class>
		<!-- 初始化参数 -->
		<init-param>
			<!-- 参数名 -->
			<param-name>encoding</param-name>
			<!-- 参数值 -->
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<!-- 过滤器映射 -->
	<filter-mapping>
		<!-- 过滤器名称 -->
		<filter-name>CharactorFilter</filter-name>
		<!-- URL映射 -->
		<url-pattern>/*</url-pattern>
	</filter-mapping>


[7]实现字符乱码过滤器处理实例

JSP文件

 <body>
   	<form action="AddServlet" method="post">
		<table align="center" border="1" width="350">
			<tr>
				<td class="2" align="center" colspan="2">
					<h2>添加图书信息</h2>
				</td>
			</tr>
			<tr>
				<td align="right">图书编号:</td>
				<td>
					<input type="text" name="id">
				</td>
			</tr>
			<tr>
				<td align="right">图书名称:</td>
				<td>
					<input type="text" name="name">
				</td>
			</tr>
			<tr>
				<td align="right">作  者:</td>
				<td>
					<input type="text" name="author">
				</td>
			</tr>
			<tr>
				<td align="right">价  格:</td>
				<td>
					<input type="text" name="price">
				</td>
			</tr>
			<tr>
				<td class="2" align="center" colspan="2">
					<input type="submit" value="添 加">
				</td>
			</tr>
		</table>
	</form>
  </body>


servlet文件

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		//获取PrintWriter
		PrintWriter out = response.getWriter();
		//获取图书编号
		String id = request.getParameter("id");
		//获取图书名称
		String name=request.getParameter("name");
		//获取作者
		String author =request.getParameter("author");
		//获取价格
		String price= request.getParameter("price");
		//添加成功
		out.print("<h2>图书信息添加成功</h2><hr>");
		out.print("图书编号:"+id+"<br>");
		out.print("图书名称:"+name+"<br>");
		out.print(" 作者:"+author+"<br>");
		out.print("体格:"+price+"<br>");
		out.flush();//刷新流
		out.close();//关闭流
	}


过滤器文件

package com.lyq;
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;

public class CharactorFilter implements Filter {
	// 字符编码
	String encoding = null;
	public void destroy() {
		encoding = null;
	}
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// 判断字符编码是否为空
		if(encoding != null){
			// 设置request的编码格式
			request.setCharacterEncoding(encoding);
			// 设置response字符编码
     		response.setContentType("text/html; charset="+encoding);
		}
		// 传递给下一过滤器
		chain.doFilter(request, response);
	}
	public void init(FilterConfig filterConfig) throws ServletException {
		// 获取初始化参数
		encoding = filterConfig.getInitParameter("encoding");
	}
}


web配置文件

<!-- 声明过滤器 -->
	<filter>
		<!-- 过滤器名称 -->
		<filter-name>CharactorFilter</filter-name>
		<!-- 过滤器的完整类名 -->
		<filter-class>com.lyq.CharactorFilter</filter-class>
		<!-- 初始化参数 -->
		<init-param>
			<!-- 参数名 -->
			<param-name>encoding</param-name>
			<!-- 参数值 -->
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<!-- 过滤器映射 -->
	<filter-mapping>
		<!-- 过滤器名称 -->
		<filter-name>CharactorFilter</filter-name>
		<!-- URL映射 -->
		<url-pattern>/*</url-pattern>
	</filter-mapping>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>AddServlet</servlet-name>
    <servlet-class>com.lyq.AddServlet</servlet-class>
  </servlet>
   
  <servlet-mapping>
    <servlet-name>AddServlet</servlet-name>
    <url-pattern>/AddServlet</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>


 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值