您的位置:首页 > Web前端 > JavaScript

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

2016-11-27 18:57 417 查看
问题提出:在“我爱模板网”把网上的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();
}
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息