修改JSPsmartUpload组件实现无中文乱码上传下载

本文详细介绍了如何解决使用JSPsmartUpload组件上传和下载包含中文文件名时出现的乱码问题。通过编写一个编码过滤器,设置正确的字符编码,确保文件名在浏览器中显示正常。同时,在JSPsmartUpload组件中增加下载编码的设置,最终实现了文件名的正确显示。

使用JSPsmartUpload组件上传文件,文件名出现中文字符,下载文件,文件名出现中文字符,都会导致文件名在浏览器出现乱码,自己修改了JSPsmartUpload组件原文件,编译打包成.jar文件。

使用说明:

 

一、解决上传出现乱码问题

  1. 我的WEB项目编码一致为“GBK”,为WEB项目编写一个编码过滤器
    package com.model.filter;
    
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.servlet.Filter;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.http.HttpServletRequest;
    
    public class CharacterEncodingFilter implements Filter {
    
        private FilterConfig config;
        private String encoding = "UTF-8";
    
        public void init(FilterConfig config) {
            this.config = config;
            String encoding = config.getInitParameter("encoding");
            if (encoding != null) {
                this.encoding = encoding;
                System.out.println("获取编码成功!!");
            } else {
                System.out.println("无法获取编码,采用默认的UTF-8");
            }
        }
    
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
            try {
                HttpServletRequest hrequest = (HttpServletRequest) request;
                hrequest.setCharacterEncoding(this.encoding);
            } catch (UnsupportedEncodingException ex) {
                Logger.getLogger(CharacterEncodingFilter.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                chain.doFilter(request, response);
            } catch (IOException ex) {
                Logger.getLogger(CharacterEncodingFilter.class.getName()).log(Level.SEVERE, null, ex);
            } catch (ServletException ex) {
                Logger.getLogger(CharacterEncodingFilter.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    
        public void destroy() {
        }
    }
     
  2. 过滤器在XML配置文件里需要注册,如下:
        <filter>
            <filter-name>CharacterEncodingFilter</filter-name>
            <filter-class>com.model.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>gb2312</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
     
  3. 在JSP上传页面,编码设置为“GBK”
    <%-- 
        Document   : upload
        Created on : 2010-8-5, 18:36:04
        Author     : Gavin
    --%>
    
    <%@page contentType="text/html" pageEncoding="gb2312"%>
    <!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=gb2312">
            <title>JSP Page</title>
        </head>
        <body>
            <h1 align="center">Test File Upload</h1>
            <p>
            <form action="upload" enctype="multipart/form-data" name="uploadform" method="post" >
                文件路径1:<br>
                <input type="file" name="file1" size="60" /><br>
                <textarea rows="5" cols="69" name="fileinfo1"></textarea><br>
                <input type="file" name="file2" size="60" /><br>
                <textarea rows="5" cols="69" name="fileinfo2"></textarea><br>
                <input type="submit" value="提交" >&nbsp;&nbsp;
                <input type="reset" value="重置">
            </form>
        </body>
    </html>
     

二、在JSPsmartUpload组件中增加下载编码,具体过程不再赘述,提供修改编译打包的.jar文件,可直接使用。

【电能质量扰动】基于ML和DWT的电能质量扰动分类方法研究(Matlab实现)内容概要:本文研究了一种基于机器学习(ML)和离散小波变换(DWT)的电能质量扰动分类方法,并提供了Matlab实现方案。首先利用DWT对电能质量信号进行多尺度分解,提取信号的时频域特征,有效捕捉电压暂降、暂升、中断、谐波、闪变等常见扰动的关键信息;随后结合机器学习分类器(如SVM、BP神经网络等)对提取的特征进行训练与分类,实现对不同类型扰动的自动识别与准确区分。该方法充分发挥DWT在信号去噪与特征提取方面的优势,结合ML强大的模式识别能力,提升了分类精度与鲁棒性,具有较强的实用价值。; 适合人群:电气工程、自动化、电力系统及其自动化等相关专业的研究生、科研人员及从事电能质量监测与分析的工程技术人员;具备一定的信号处理基础和Matlab编程能力者更佳。; 使用场景及目标:①应用于智能电网中的电能质量在线监测系统,实现扰动类型的自动识别;②作为高校或科研机构在信号处理、模式识别、电力系统分析等课程的教学案例或科研实验平台;③目标是提高电能质量扰动分类的准确性与效率,为后续的电能治理与设备保护提供决策依据。; 阅读建议:建议读者结合Matlab代深入理解DWT的实现过程与特征提取步骤,重点关注小波基选择、分解层数设定及特征向量构造对分类性能的影响,并尝试对比不同机器学习模型的分类效果,以全面掌握该方法的核心技术要点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值