導航:首頁 > 編程語言 > java處理html

java處理html

發布時間:2023-07-03 19:09:10

java怎樣可以在HTML中使用

靜態的html標簽是無法直接調用java程序的

有幾種方法可以實現
1、將按鈕放到form表單中,當按鈕點擊時提交表單(或者直接將input的type屬性定義成submit),表單可以指向JSP或Servlet,在JSP或Servlet里調用java程序

2、在按鈕的onclick時間中添加js代碼
self.location="url";其中url指向JSP或Servlet

3、使用第三方的javascript包,dwr是一個不錯的選擇:
需要准備dwr的jar包,並將之放到lib目錄下;
修改web.xml文件,添加DWRServlet的映射;
配置dwr,即在WEB-INF目錄下,添加dwr.xml文件,讓dwr知道在運行的時候應該給哪些JavaBean生成相應的javascript庫!
將需要的腳本庫引入到html頁面中就可以通過dwr的API訪問java類了
不是很難,網上參考資料挺多的

4、使用MVC框架的話就更簡單了,以struts為例,可以仿照1或2,將url替換成配置文件中配置的地址就能訪問java程序了

② java怎樣讀取html文件

java讀取html文件跟讀取普通文件一樣,都是使用輸入輸出流,但是java讀取html文件之後還需要解析,使用Jsoup對html進行解析。下面是一個java讀取帶表格的任意html文件,並把html文件轉換成excel的例子。

要求:要求能夠實現給出任意帶table表格的html文件,生成與表格相同內容的excel文件,附件可以作為測試文件,提供給定的roster.html文件,通過java代碼,實現生成與html頁面的table相同樣式的roster.xls文件。

首先看roster.html:

importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileReader;
importjava.io.IOException;
importjxl.Workbook;
importjxl.write.Label;
importjxl.write.WritableCellFormat;
importjxl.write.WritableFont;
importjxl.write.WritableSheet;
importjxl.write.WritableWorkbook;
importjxl.write.WriteException;
importjxl.write.biff.RowsExceededException;
importorg.jsoup.Jsoup;
importorg.jsoup.nodes.Document;
importorg.jsoup.nodes.Element;
importorg.jsoup.select.Elements;
publicclassHTMLTOExcel{
publicstaticvoidmain(Stringargs[])throwsIOException{
///讀取classpath目錄下面的路徑
Stringpath=HTMLTOExcel.class.getResource("/").getPath();
path+="roster.html";
toExcel(path,"roster");
}
//得到Document並且設置編碼格式
publicstaticDocumentgetDoc(StringfileName)throwsIOException{
FilemyFile=newFile(fileName);
Documentdoc=Jsoup.parse(myFile,"GBK","");
returndoc;
}
///這個方法用於根據trs行數和sheet畫出整個表格
publicstaticvoidmergeColRow(Elementstrs,WritableSheetsheet)throwsRowsExceededException,WriteException{
int[][]rowhb=newint[300][50];
for(inti=0;i<trs.size();i++){
Elementtr=trs.get(i);
Elementstds=tr.getElementsByTag("td");

intrealColNum=0;
for(intj=0;j<tds.size();j++){
Elementtd=tds.get(j);
if(rowhb[i][realColNum]!=0){
realColNum=getRealColNum(rowhb,i,realColNum);
}
introwspan=1;
intcolspan=1;
if(td.attr("rowspan")!=""){
rowspan=Integer.parseInt(td.attr("rowspan"));
}
if(td.attr("colspan")!=""){
colspan=Integer.parseInt(td.attr("colspan"));
}
Stringtext=td.text();
drawMegerCell(rowspan,colspan,sheet,realColNum,i,text,rowhb);
realColNum=realColNum+colspan;
}

}
}
///這個方法用於根據樣式畫出單元格,並且根據rowpan和colspan合並單元格
publicstaticvoiddrawMegerCell(introwspan,intcolspan,WritableSheetsheet,intrealColNum,intrealRowNum,Stringtext,int[][]rowhb)throwsRowsExceededException,WriteException{
for(inti=0;i<rowspan;i++){
for(intj=0;j<colspan;j++){
if(i!=0||j!=0){
text="";
}
Labellabel=newLabel(realColNum+j,realRowNum+i,text);
WritableFontcountents=newWritableFont(WritableFont.TIMES,10);//設置單元格內容,字型大小12
WritableCellFormatcellf=newWritableCellFormat(countents);
cellf.setAlignment(jxl.format.Alignment.CENTRE);//把水平對齊方式指定為居中
cellf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//把垂直對齊方式指定為居
label.setCellFormat(cellf);
sheet.addCell(label);
rowhb[realRowNum+i][realColNum+j]=1;
}
}
sheet.mergeCells(realColNum,realRowNum,realColNum+colspan-1,realRowNum+rowspan-1);
}
publicstaticintgetRealColNum(int[][]rowhb,inti,intrealColNum){
while(rowhb[i][realColNum]!=0){
realColNum++;
}
returnrealColNum;
}
///根據colgroups設置表格的列寬
publicstaticvoidsetColWidth(Elementscolgroups,WritableSheetsheet){
if(colgroups.size()>0){
Elementcolgroup=colgroups.get(0);
Elementscols=colgroup.getElementsByTag("col");
for(inti=0;i<cols.size();i++){
Elementcol=cols.get(i);
Stringstrwd=col.attr("width");
if(col.attr("width")!=""){
intwd=Integer.parseInt(strwd);
sheet.setColumnView(i,wd/8);
}

}

}
}
//toExcel是根據html文件地址生成對應的xls
publicstaticvoidtoExcel(StringfileName,StringexcelName)throwsIOException{
Documentdoc=getDoc(fileName);
Stringtitle=doc.title();
///得到樣式,以後可以根據正則表達式解析css,暫且沒有找到cssparse
Elementsstyle=doc.getElementsByTag("style");
///得到Table,demo只演示輸入一個table,以後可以用循環遍歷tables集合輸入所有table
Elementstables=doc.getElementsByTag("TABLE");
if(tables.size()==0){
return;
}
Elementtable=tables.get(0);
//得到所有行
Elementstrs=table.getElementsByTag("tr");
///得到列寬集合
Elementscolgroups=table.getElementsByTag("colgroup");

try{
//文件保存到classpath目錄下面
Stringpath=HTMLTOExcel.class.getResource("/").getPath();
path+=excelName+".xls";
System.out.println(path);
WritableWorkbookbook=Workbook.createWorkbook(newFile(path));
WritableSheetsheet=book.createSheet("人事關系",0);
setColWidth(colgroups,sheet);
mergeColRow(trs,sheet);
book.write();
book.close();
}catch(RowsExceededExceptione){
e.printStackTrace();
}catch(WriteExceptione){
e.printStackTrace();
}
}
}

解析html文件的例子文檔地址:http://blog.csdn.net/androidwuyou/article/details/52636821

③ java如何解析html文檔

importjava.io.*;
importjava.util.*;
importjavax.swing.text.*;
importjavax.swing.text.html.*;
importjavax.swing.text.html.parser.*;
importjavax.swing.text.html.HTMLEditorKit.ParserCallback;
{//繼承ParserCallback,解析結果驅動這些回調方法
protectedStringbase;
protectedbooleanisImg=false;
protectedbooleanisParagraph=false;
protectedstaticVector<String>element=newVector<String>();
=newString();
publicParser(){
}
(){
returnparagraphText;
}
publicvoidhandleComment(char[]data,intpos){
}
publicvoidhandleEndTag(HTML.Tagt,intpos){
if(t==HTML.Tag.P){
if(isParagraph){
isParagraph=false;
}
}elseif(t==HTML.Tag.IMG){
if(isImg){
isImg=false;
}
}
}
publicvoidhandleError(StringerrorMsg,intpos){
}
publicvoidhandleSimpleTag(HTML.Tagt,MutableAttributeSeta,intpos){
handleStartTag(t,a,pos);
}
publicvoidhandleStartTag(HTML.Tagt,MutableAttributeSeta,intpos){
if(t==HTML.Tag.P){
isParagraph=true;
}elseif((t==HTML.Tag.IMG)){
Stringsrc=(String)a.getAttribute(HTML.Attribute.SRC);
if(src!=null){
element.addElement(src);
isImg=true;
}
}
}
publicvoidhandleText(char[]data,intpos){
if(isParagraph){
StringtempParagraphText=newString(data);
if(paragraphText!=null){
element.addElement(tempParagraphText);
;
}
}
}

privatestaticvoidstartParse(StringsHtml){
try{
ParserDelegatorps=newParserDelegator();//負責每次在調用其parse方法時啟動一個新的DocumentParser
HTMLEditorKit.ParserCallbackparser=newParser();//解析結果驅動這些回調方法。
ps.parse(newStringReader(sHtml),parser,true);//解析給定的流並通過解析的結果驅動給定的回調。
//System.out.println(getParagraphText());
Vectorlink=element;
for(inti=0;i<link.size();i++){
System.out.println("----haha-----");
System.out.println(link.get(i));
}
}catch(Exceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(Stringargs[]){
try{
Stringfilename="D://blogbaby.htm";
BufferedReaderbrd=newBufferedReader(newFileReader(filename));
char[]str=newchar[50000];
brd.read(str);
StringsHtml=newString(str);
startParse(sHtml);
}catch(Exceptione){
e.printStackTrace();
}
}
}

④ 請教如何使用java從html內容中提取指定信息

File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "IP");
看看這個代碼,調用 doc.text() 方法即可。

⑤ java獲取html內的內容

簡單實現:
HtmlRequest類的內容:
[java] view plain
package com.capinfotech.net;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HtmlRequest {

public static void main(String[] args) throws IOException {
URL url = new URL("http://www.163.com/");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
InputStream inputStream = conn.getInputStream(); //通過輸入流獲得網站數據
byte[] getData = readInputStream(inputStream); //獲得網站的二進制數據
String data = new String(getData, "gb2312");
System.out.println(data);

}

public static byte[] readInputStream(InputStream inputStream) throws IOException {
byte[] buffer = new byte[1024];
int len = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while((len = inputStream.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}

bos.close();
return bos.toByteArray();
}

}
這樣就能獲得http://www.163.com的內容,在控制台會列印輸出

⑥ Java 處理 html Css

有,自定義jstl ,這個非常方便,建議樓主去學習下,例子如下:

當時我要在很多頁面根據值判斷狀態給不一樣的樣式。如果用if-else太麻煩了,每個頁面都要寫,於是就用到了自定義jstl。

導入自定義標簽後在頁面調用:

<%@tagliburi="/tags/cos-cstatus"prefix="cs"%>
<td>
<cs:cstatusvalue="${item.the_consolidated_status}"/>
</td>

代碼:

	@Override
publicintdoEndTag()throwsJspException{
try{
if(value==null||value.length()==0){
pageContext.getOut().print("");
}elseif("Normal".equalsIgnoreCase(value)){
pageContext.getOut().print("<spanclass='label'>"+value+"</span>");
}elseif("Warning".equalsIgnoreCase(value)){
pageContext.getOut().print("<spanclass='labellabel-warning'>"+value+"</span>");
}else{
pageContext.getOut().print("<spanclass='labellabel-important'>"+value+"</span>");
}
}catch(Exceptione){
e.printStackTrace();
}
returnEVAL_PAGE;
}

效果:

⑦ java中幾種解析html的工具

HTML分析是一個比較復雜的工作,Java世界主要有幾款比較方便的分析工具:

1.Jsoup
Jsoup是一個集強大和便利於一體的HTML解析工具。它方便的地方是,可以用於支持用jQuery中css selector的方式選取元素,這對於熟悉js的開發者來說基本沒有學習成本。

String content = "blabla";
Document doc = JSoup.parse(content);
Elements links = doc.select("a[href]");

閱讀全文

與java處理html相關的資料

熱點內容
區域網如何用ftp伺服器配置 瀏覽:70
程序員慣性思考模式 瀏覽:439
如何在個稅app上查身份證號 瀏覽:6
電視家app安裝在電視上怎麼安 瀏覽:889
怎麼將pdf格式轉化為圖片格式 瀏覽:637
伺服器拔掉raid卡怎麼裝系統 瀏覽:232
區域對稱加密演算法 瀏覽:245
數字轉漢字php 瀏覽:733
安卓源碼硬體驅動 瀏覽:208
痰證pdf 瀏覽:814
電腦怎麼把word文檔轉pdf 瀏覽:867
程序員那麼可愛有孩子了嗎 瀏覽:480
安卓文字折疊怎麼使用 瀏覽:885
創造一個app如何掙錢 瀏覽:801
php55vc11 瀏覽:642
抖音如何關閉蘋果app充值 瀏覽:332
python多個文件調用 瀏覽:792
java演算法和數據結構 瀏覽:465
糖豆視頻的文件夾 瀏覽:654
php的頭部文件一般在哪個文件里 瀏覽:560