package edu.sdkd.utils;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ProFilter implements Filter {
protected FilterConfig filterConfig;
/**
*
* 初始化
*/
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
/**
*
* 将inStr转为UTF-8的编码形式
*
* @param inStr输入字符串
*
* @return UTF-8的编码形式的字符串
*
* @throws UnsupportedEncodingException
*/
private String toUTF(String inStr) throws UnsupportedEncodingException
{
String outStr = "";
if (inStr != null)
{
// outStr=java.net.URLDecoder.decode(inStr);//不用decode了,到这的时候就已经自动decode过了
// 将字符串转为UTF-8编码形式
outStr = new String(inStr.getBytes("iso-8859-1"), "UTF-8");
}
return outStr;
}
/**
*
* 中文乱码过滤处理
*/
public void doFilter(ServletRequest svlrequest, ServletResponse svlresponse,
FilterChain chain) throws IOException, ServletException
{
// 将Servlet请求与响应对象转换成HttpServlet请求与响应对象
HttpServletRequest request = (HttpServletRequest) svlrequest;
HttpServletResponse response = (HttpServletResponse) svlresponse;
// 获得请求的方式(1.post or 2.get),根据不同请求方式进行不同处理
String method = request.getMethod();
// 1.以post方式提交的请求,直接设置编码为UTF-8
if (method.equalsIgnoreCase("post"))
{
try
{
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
}
// 2.以get方式提交的请求
else
{
// 取出客户提交的参数集
Enumeration<String> paramNames = request.getParameterNames();
// 遍历参数集取出每个参数的名称及值
while (paramNames.hasMoreElements())
{
String name = paramNames.nextElement();// 取出参数名称
String values[] = request.getParameterValues(name);// 根据参数名称取出其值
// 如果参数值集不为空
if (values != null)
{
// 如果参数值集中只有一个值
if (values.length == 1)
{
try
{
// 调用toUTF(values[0])函数,(values[0]即第一个参数值)方法转换参数值的字元编码
String vlustr = toUTF(values[0]);
// 并将该值以属性的形式藏在request
request.setAttribute(name, vlustr);
} catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
}
// 如果参数值集中有多个值
else
{
// 遍历参数值集
for (int i = 0; i < values.length; i++)
{
try
{
// 回圈依次将每个值调用toUTF(values[i])方法转换参数值的字元编码
String vlustr = toUTF(values[i]);
values[i] = vlustr;
} catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
}
// 将该值以属性的形式藏在request
request.setAttribute(name, values);
}
}
}
}
// 设置响应方式和支持中文的字元集
response.setContentType("text/html;charset=UTF-8");
// 继续执行下一个filter,无一下个filter则执行请求
chain.doFilter(request, response);
}
/**
*
* 销毁方法
*/
public void destroy()
{
}
}
<!-- 配置过滤器 -->
<filter>
<description>处理中文乱码过滤器</description>
<filter-name>ProFilter</filter-name>
<filter-class>edu.sdkd.utils.ProFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ProFilter</filter-name>
<url-pattern>*</url-pattern><!-- 过滤所有请求,注:tomcat5请用/* -->
</filter-mapping>
-----------------------------加密-------------------------------------
package edu.sdkd.utils;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import sun.misc.BASE64Encoder;
public class EncryptionUtils {
public static String md5(String message) {
try {
MessageDigest mdDigest = MessageDigest.getInstance("md5");
byte[] md5 = mdDigest.digest(message.getBytes());
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(md5);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
}
分享到:
相关推荐
解决java乱码的代码,配置过滤器,解决乱码问题。
配置Filter过滤器处理JSP中文乱码 参考Tomcat服务器目录webapps的examples示例 简单配置步骤: 1.在项目web.xml文件添加过滤器标记和; 2.实现过滤器代码; 3.对Tomcat服务器conf目录里的Server.xml文件配置...
JSP页面获得sercvlet是不是经常出现乱码呢?很烦人哦,那就试试这个吧,可以解决所有的乱码,里面有说明教你怎么配.
如果你配置了过滤器,但是中文还会乱码,可以参考下面两种方法解决。
下载后按说明文件进行简单配置即可。很好用的
只要按照这个上面说的,就可以解决从jsp页面从oracle数据库读取中文数据时的中文乱码问题。...其他的修改配置之类的方法,我都试过了,没用,只用这个过滤器文件就可以了,里面详细说明了如何使用这个过滤器。
使用filter过滤器解决中文乱码问题,包含源码,以及filter的配置,希望能帮上大家
使用filter解决乱码问题,分为编写doFilter和在web.xml中配置过滤器
编码过滤器,在项目中统一处理编码问题 解决乱码问题
如何配置过滤器,使用过滤器解决登录和乱码问题。 内有代码详解。
本文将总结解决SSH中文乱码问题的方法,主要涉及到spring的编码过滤器、struts.properties配置、MyEclipse工程属性设置等方面。 一、 Spring 的编码过滤器 Spring提供了一个CharacterEncodingFilter来解决中文乱码...
Filter过滤器的代码及其web.xml配置代码 很好的解决网页乱码问题,很方便,只要按照名字添加就可以了
中文乱码问题是JavaWeb开发中最常见的问题之一,解决的方法也有很多种,其中,过滤器是最常用的方法之一。提供了过滤器的源码和详细配置。
解决编码传参中文乱码问题,附有.java和web.xml配置文件关键代码
Struts过滤器可以解决页面之间的乱码问题 一个类继承struts的RequestProcessor(分request 和response处理) 然后在struts-config.xml配置即可!
近用ssh框架和mysql数据库写项目的时候,老是出现中文乱码,根据网上的各种策略,使用spring自带的字符过滤器啊,设置页面编码啊,设置数据库编码啊都设置好为UTF-8了,还是出现中问乱码,后来在spring的配置文件...
在公司实习了8个月,一直都是做android和h5的,但是发现做程序连一点服务都不会该怎么办,所以最近开始学起了java,不知道是不是因为...第三,项目配置过滤器 第四,修改servlet里面的传值编码和传输编码 request.setC
一、问题 在windows上面使用eclipse开发的项目在windows上面运行一切正常,部署到腾讯云时出现向MySQL数据库中插入数据是中文乱码 二、解决办法 ...由于是SSM框架项目,在web.xml中加过过滤器 <filter>e
解决Get请求中文乱码的方式1、修改tomcat server.xml的编码 2、过滤器 ;本文就是通过过滤器修改,因业务需要兼容,所以写的Get拦截器,本文仅支持Get请求拦截器,本文仅支持Get请求拦截器,本文仅支持Get请求拦截器...
模块八:过滤器和监听器(三大组件、八大监听器、session的绑定、解绑、钝化、活化);模块九:文件上传和下载(限制上传(文件的大小和类型)、详细代码、解决下载时文件名乱码问题) --author