利用过滤器处理字符,解决中文乱码问题

web 同时被 3 个专栏收录
10 篇文章 0 订阅
5 篇文章 0 订阅
10 篇文章 0 订阅

1.创建字符编码过滤器对象,名称为CharactorFilter类。该类实现了javax.servlet.Filter,并在都Filter()方法中对请求中的字符编码格式进行设置。代码如下:

package com.lyq.CharactorFilter;
import java.io.IOException;

import javax.servlet.*;

public class CharactorFilter implements Filter {

	public CharactorFilter() {
		// TODO Auto-generated constructor stub
	}

	String encoding = null;// 字符编码

	public void init(FilterConfig filterCongig) throws ServletException {
		encoding = filterCongig.getInitParameter("encoding");// 获取初始化参数
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		if (encoding != null) {// 判断字符编码是否为空
			request.setCharacterEncoding(encoding);// 设置request字符编码
			response.setContentType("text/html;charset=" + encoding);// 设置response字符编码
			chain.doFilter(request, response);
		}
	}
	
	public void destroy() {
		encoding=null;
	}

}

2.创建完过滤器后,还需要对过滤器进行配置才可以正常使用(配置路径可能有所不同,博主如下)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>Eleven</display-name>
  
  <filter>
  <filter-name>CharactorFilter</filter-name>
  <filter-class>com.lyq.CharactorFilter.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-pattern>/index1.jsp</url-pattern><!-- URL映射 -->
  </filter-mapping>
  
</web-app>

3.创建实例index1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.util.*,Javabean.Demo"%>
<jsp:useBean id="user" class="Javabean.Demo" scope="request">
	<jsp:setProperty name="user" property="*" />
</jsp:useBean>
<% request.setCharacterEncoding("utf-8");%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>EL输出用户信息</title>
</head>
<body bgcolor="yellow">
	<form action="index1.jsp" method="post">
		<table>
			<tr>
				<td colspan="2" align="center"><b>用户信息登入</b></td>
			</tr>
			<tr>
				<td align="reight">用户名:</td>
				<td align="left"><input type="text" name="username"></td>
			</tr>
			<tr>
				<td align="reight">密&nbsp;&nbsp;&nbsp;&nbsp;码:</td>
				<td align="left"><input type="password" size="21" name="password"></td>
			</tr>
			<tr>
				<td align="reight">年&nbsp;&nbsp;&nbsp;&nbsp;龄:</td>
				<td align="left"><input type="text" name="age"></td>
			</tr>
			<tr>
				<td align="center"><input type="submit" name="Submit"
					value="提交"></td>
				<td align="center"><input type="reset" name="Reset" value="重置"></td>
			</tr>
			<br>
			<tr>
				<td align="reight">通过JavaBean获得参数的方法</td>
				<td align="center">${user.username}</td>
				<td align="center">${user.password}</td>
				<td align="center">${user.age}</td>
			</tr>
			<tr>
				<td align="reight">方法一:通过param对象获得参数</td>
				<td align="center">${param.username}</td>
				<td align="center">${param.password}</td>
				<td align="center">${param.age}</td>
			</tr>
			<tr>
				<td align="reight">方法二:通过param对象获得参数</td>
				<td align="center">${param['username']}</td>
				<td align="center">${param['password']}</td>
				<td align="center">${param['age']}</td>
			</tr>
		</table>
	</form>
</body>
</html>

运行结果如下
在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 0
    评论
  • 8
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

进击的代码君

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值