你应该是新手,还不明白概念,所以在网上找些视频教程看吧,搜索j2ee或者jsp的教程,jsp就是用java程序动态生成html页面,浏览器不能解析java代码,所以tomcat这种服务器负责解析,生成最终的html不知道你为什么这么想 这么做
本来应该各做各的事
为什么要掺在一起呢
只是单纯想知道怎么做吗?
你用java写一段js+html
直接write出来就行了可以用:File f_html = new File("Loginhtml");
f_htmlcreateNewFile();
要想生成html页面的话,容器会替我们直接把jsp编译成servlet输出成html静态页面进行展示。
你要像手动输出html的展示内容可以自己写一个servlet,使用output方法输出html标签代码段直接打印到客户端。
还有如果你想写入html文件的话,你可以通过fileinput字节写入。(这种写法servlet教程上很多实例,包括如何生成文件,如何通过字节或者字符流的形式写入和保存)
java读取html文件跟读取普通文件一样,都是使用输入输出流,但是java读取html文件之后还需要解析,使用Jsoup对html进行解析。下面是一个java读取带表格的任意html文件,并把html文件转换成excel的例子。
要求: 要求能够实现给出任意带table表格的html文件,生成与表格相同内容的excel文件,附件可以作为测试文件,提供给定的rosterhtml文件,通过java代码,实现生成与html页面的table相同样式的rosterxls文件。
首先看rosterhtml:
java代码:
import javaioBufferedReader;import javaioFile;
import javaioFileReader;
import javaioIOException;
import jxlWorkbook;
import jxlwriteLabel;
import jxlwriteWritableCellFormat;
import jxlwriteWritableFont;
import jxlwriteWritableSheet;
import jxlwriteWritableWorkbook;
import jxlwriteWriteException;
import jxlwritebiffRowsExceededException;
import orgjsoupJsoup;
import orgjsoupnodesDocument;
import orgjsoupnodesElement;
import orgjsoupselectElements;
public class HTMLTOExcel {
public static void main(String args[]) throws IOException{
///读取classpath目录下面的路径
String path=HTMLTOExcelclassgetResource("/")getPath();
path+="rosterhtml";
toExcel(path,"roster");
}
//得到Document并且设置编码格式
public static Document getDoc(String fileName) throws IOException{
File myFile=new File(fileName);
Document doc= Jsoupparse(myFile, "GBK","");
return doc;
}
///这个方法用于根据trs行数和sheet画出整个表格
public static void mergeColRow(Elements trs,WritableSheet sheet) throws RowsExceededException, WriteException{
int[][] rowhb=new int[300][50];
for(int i=0;i<trssize();i++){
Element tr=trsget(i);
Elements tds=trgetElementsByTag("td");
int realColNum=0;
for(int j=0;j<tdssize();j++){
Element td=tdsget(j);
if(rowhb[i][realColNum]!=0){
realColNum=getRealColNum(rowhb,i,realColNum);
}
int rowspan=1;
int colspan=1;
if(tdattr("rowspan")!=""){
rowspan = IntegerparseInt(tdattr("rowspan"));
}
if(tdattr("colspan")!=""){
colspan = IntegerparseInt(tdattr("colspan"));
}
String text=tdtext();
drawMegerCell(rowspan,colspan,sheet,realColNum,i,text,rowhb);
realColNum=realColNum+colspan;
}
}
}
///这个方法用于根据样式画出单元格,并且根据rowpan和colspan合并单元格
public static void drawMegerCell(int rowspan,int colspan,WritableSheet sheet,int realColNum,int realRowNum,String text,int[][] rowhb) throws RowsExceededException, WriteException{
for(int i=0;i<rowspan;i++){
for(int j=0;j<colspan;j++){
if(i!=0||j!=0){
text="";
}
Label label = new Label(realColNum+j,realRowNum+i,text);
WritableFont countents = new WritableFont(WritableFontTIMES,10); // 设置单元格内容,字号12
WritableCellFormat cellf = new WritableCellFormat(countents );
cellfsetAlignment(jxlformatAlignmentCENTRE);//把水平对齐方式指定为居中
cellfsetVerticalAlignment(jxlformatVerticalAlignmentCENTRE);//把垂直对齐方式指定为居
labelsetCellFormat(cellf);
sheetaddCell(label);
rowhb[realRowNum+i][realColNum+j]=1;
}
}
sheetmergeCells(realColNum,realRowNum, realColNum+colspan-1,realRowNum+rowspan-1);
}
public static int getRealColNum(int[][] rowhb,int i,int realColNum){
while(rowhb[i][realColNum]!=0){
realColNum++;
}
return realColNum;
}
///根据colgroups设置表格的列宽
public static void setColWidth(Elements colgroups,WritableSheet sheet){
if(colgroupssize()>0){
Element colgroup=colgroupsget(0);
Elements cols=colgroupgetElementsByTag("col");
for(int i=0;i<colssize();i++){
Element col=colsget(i);
String strwd=colattr("width");
if(colattr("width")!=""){
int wd=IntegerparseInt(strwd);
sheetsetColumnView(i,wd/8);
}
}
}
}
//toExcel是根据html文件地址生成对应的xls
public static void toExcel(String fileName,String excelName)throws IOException{
Document doc=getDoc(fileName);
String title = doctitle();
///得到样式,以后可以根据正则表达式解析css,暂且没有找到cssparse
Elements style= docgetElementsByTag("style");
///得到Table,demo只演示输入一个table,以后可以用循环遍历tables集合输入所有table
Elements tables= docgetElementsByTag("TABLE");
if(tablessize()==0){
return;
}
Element table=tablesget(0);
//得到所有行
Elements trs = tablegetElementsByTag("tr");
///得到列宽集合
Elements colgroups=tablegetElementsByTag("colgroup");
try {
//文件保存到classpath目录下面
String path=HTMLTOExcelclassgetResource("/")getPath();
path+=excelName+"xls";
Systemoutprintln(path);
WritableWorkbook book = WorkbookcreateWorkbook(new File(path));
WritableSheet sheet = bookcreateSheet("人事关系", 0);
setColWidth(colgroups,sheet);
mergeColRow(trs,sheet);
bookwrite();
bookclose();
} catch (RowsExceededException e) {
eprintStackTrace();
} catch (WriteException e) {
eprintStackTrace();
}
}
}
解析html文件的例子文档地址:>将以下代码保存为 Testjava 即可运行(界面挫了点,不过核心功能都有,你可以自己拿回去改改界面就可以了)
package com;
import javaxswing;
import javaawtBorderLayout;
import javaawteventActionListener;
import javaawteventActionEvent;
public class Test extends JFrame{
public static void main(String args[]){
new Test();
}
JTextField ieField;
JButton button;
public Test(){
super("单击按钮打开一个网页");
ieField = new JTextField(">java可以使用jsoup、htmlparser等工具进行html的读取和解析,以下是详细说明:
1、jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的 *** 作方法来取出和 *** 作数据。据说它是基于MIT协议发布的。
jsoup的主要功能如下:
从一个URL,文件或字符串中解析HTML;
使用DOM或CSS选择器来查找、取出数据;
可 *** 作HTML元素、属性、文本;
示例代码:
Document doc = Jsoupparse(input, "UTF-8", ">
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)