分享

一个将html文件批量转换成jsp文件的程序(主要处理中文乱码问题)

 liang1234_ 2020-03-23

问题提出:在“我爱模板网”把网上的html模板下载到电脑磁盘中,直接改后缀名为jsp,复制到web项目中的webroot下,在发布web项目到tomcat服务器后,通过页面访问出现中文乱码问题?

模板来源:我爱模板网

java开发工具 :MyEclipse 10

服务器:Tomcat 7.x

解决办法:在改后缀名前,在html文件第一行,加上以下设置编码的语句可以解决乱码问题

<%@ page language='java' import='java.util.*' contentType='text/html;charset=UTF-8'%>

如果将单个html文件改为jsp文件,以上办法可以解决;

如果有大量的html文件要修改为jsp文件,可以编写一个测试程序,批量修改格式,不乱码;

首先需写一个配置文件:file.properties 此配置文件需放在src下

文件内容:

from=D\:/java/webstyle/
to=D\:/java/webstyle1/

 from配置的是修改前的文件夹,此文件加可更改,但需存在;

to配置的是修改后存放jsp的文件夹,此文件加可更改,但需存在;

package cn.chinasofti.zys.htmltojsp;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.junit.Test;

public class HtmlToJsp {
private static Properties pro ;
private static String from;//修改前的文件夹目录
private static String to;//修改后的文件夹目录

static{//此代码块提前加载,读取配置文件中的内容
try {
String path = 'file.properties';
InputStream in = HtmlToJsp.class.getClassLoader().getResourceAsStream(path);
pro = new Properties();
pro.load(in);
from = pro.getProperty('from');
to = pro.getProperty('to');
}
catch (IOException e) {
System.out.println('未找到配置文件');
e.printStackTrace();
}

}
@Test
public  void htmlToJsp(){
String[] froms = new File(from).list();//获得修改前的文件夹中的文件列表
String[] tos = new String[100];//此数组用于存放修改后的文件的全路径名称
//设置修改后的编码方式
String encoded = '<%@ page language=\'java\' '
'import=\'java.util.*\' '
'contentType=\'text/html;charset=UTF-8\' %>' '\r\n';
for (int i = 0; i < froms.length; i ) {
//若文件为html文件,则将其添加至修改后的文件夹目录下,且改变其后缀名
if(froms[i].contains('.html')){//找到文件名包含.html的文件
try {
int index = 0;
//从指定的文件中读出数据,放在输入流中
BufferedInputStream fis = new BufferedInputStream
(new FileInputStream(new File(from,froms[i])));
//在文件读入流中后,改变文件后缀为.jsp
froms[i] = froms[i].replaceAll('.html', '.jsp');//替换文件夹后缀名
tos[i] = to froms[i];//替换后的文件名称
//将文本写入在输出流中,在放入指定的文件中
BufferedOutputStream fos = new BufferedOutputStream
(new FileOutputStream(tos[i]));
//先将编码处理写入流中,在转入文件首行,并换行
fos.write(encoded.getBytes());
while((index=fis.read()) != -1){
//读出后,写入指定文件
fos.write(index);
fos.flush();//刷新
}
//关流
if(fis!=null)fis.close();
if(fos!=null)fos.close();
} catch (IOException e) {
System.out.println('要访问的文件不存在');
e.printStackTrace();
}
}
}
}
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多