package API;
在峨山縣等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站制作,峨山縣網(wǎng)站建設(shè)費用合理。
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLDecoder;
import Get.Other_API.*;
public class DownFile implements Runnable
{
private String LOCAL_PATH="d:/";
private String Down_Path=null;
//下面兩個是Down_Path的get和set的方法
public String getDown_Path() { return Down_Path;}
public void setDown_Path(String downPath) {Down_Path=downPath;}
public String getPath() { return LOCAL_PATH; }
public void setPath(String Path) {LOCAL_PATH=Path;}
public void DownNow()
{
//待下載文件地址
String fileUrl=getDown_Path();
InputStream in=null;
OutputStream out=null;
HttpURLConnection conn=null;
String fileName=null;
int count=0;
int finished=0;
int _temp=0;
try
{
//初始化連接
URL url=new URL(fileUrl);//將String類型的地址變?yōu)閡rl對象
conn = (HttpURLConnection) url.openConnection();//開啟連接
conn.setDoInput(true);//必要的,開啟輸入輸出的設(shè)置
conn.setDoOutput(true);
//獲取文件名
String disposition=conn.getHeaderField("Content-Disposition");
if(disposition!=null!"".equals(disposition))
{
//從頭中獲取文件名
fileName=disposition.split(";")[1].split("=")[1].replaceAll("\"","");
}
else
{
//從地址中獲取文件名
fileName=fileUrl.substring(fileUrl.lastIndexOf("/")+1);
}
if(fileName!=null!"".equals(fileName))
{
//文件名解碼
fileName=URLDecoder.decode(fileName, "utf-8");
}
else
{
System.out.println("Error");
//如果無法獲取文件名,則隨機(jī)生成一個
//fileName="file_"+(int)(Math.random()*10);
}
//讀取數(shù)據(jù)
if(conn.getResponseCode()==HttpURLConnection.HTTP_OK)
{
//這種方法比較常用,得記住
byte[] buffer=new byte[2048];
in = conn.getInputStream();//獲取文本的輸入流
out=new FileOutputStream(new File(LOCAL_PATH,fileName));//確定輸出的地方
int size=conn.getContentLength();
while((count=in.read(buffer))!=-1)//不斷循環(huán),每次讀取2048比特的數(shù)據(jù)
{
if(count!=0)
{
out.write(buffer,0,count);//將count大小的數(shù)據(jù)寫進(jìn)去
finished+=count;//結(jié)尾的寫入的位置改變,為下次寫入做準(zhǔn)備
if(_temp%500==0)
{
System.out.printf("下載已完成----%1$.2f%%\n",(double)finished/size*100);//動態(tài)輸出下載的進(jìn)度
_temp=0;
}
_temp++;
}
else
{
break;
}
}
}
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
out.close();//關(guān)閉輸出流
in.close();//關(guān)閉輸入流
conn.disconnect();//關(guān)閉連接,有打開就有關(guān)閉
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
//因為該類實現(xiàn)了Runnable接口,所以得實現(xiàn)這個run方法
@Override
public void run() {
// TODO Auto-generated method stub
DownNow();//調(diào)用上面的DownNow方法
}
}
public static ?String do_get(String url) throws ClientProtocolException, IOException {
? String body = "{}";
? DefaultHttpClient httpclient = new DefaultHttpClient();
? try {
? ? ? HttpGet httpget = new HttpGet(url);
? ? ? HttpResponse response = httpclient.execute(httpget);
? ? ? HttpEntity entity = response.getEntity();
? ? ? body = EntityUtils.toString(entity);
? } finally {
? ? ? httpclient.getConnectionManager().shutdown();
? }
? return body;
}
服務(wù)器端接收客戶端的請求的話,需要在服務(wù)器端的java文件實現(xiàn)HttpServlet這個接口,并且在web.xml里配置一個客戶端的請求攔截。
web.xml里的代碼里添加
servlet
servlet-nametestServlet/servlet-name!--這個名字可以自己定--
servlet-classcom.sun.testServlet/servlet-class!--這里是你需要接收客戶端請求的那個類以及包名,也就是下面攔截到的url會轉(zhuǎn)發(fā)到的那個類--
/servlet
servlet-mapping
servlet-nametestServlet/servlet-name!--和上面的name需要一樣--
url-pattern/*/url-pattern!--什么類型的客戶端請求會被攔截,/*?就是全攔截了--
/servlet-mapping
然后再服務(wù)器端的類文件,要實現(xiàn) HttpServlet這個接口。并把doGet()方法和doPost()方法重寫。
這兩種方法分別對應(yīng)的是客戶端的get請求和post請求的處理,你的是post請求的話,就在doPost()方法內(nèi),寫你的業(yè)務(wù)。
然后再用下面兩句話,設(shè)置你要返回客戶端的數(shù)據(jù)。
//這是設(shè)置你要返回去的數(shù)據(jù)。value才是你的數(shù)據(jù),key是標(biāo)簽。
request.setAttribute("key", "value");
//這是設(shè)置你要返回去test.jsp這張頁面。
request.getRequestDispatcher("test.jsp").forward(request, response);
不知道你是不是這個意思,你可以再去看看相關(guān)servlet方面的知識,
關(guān)于客戶端和服務(wù)器端大概也就是有個servlet作為請求的攔截
然后經(jīng)過相關(guān)判斷后,選擇性的傳到服務(wù)器的相應(yīng)類里面。
再經(jīng)過類里面的業(yè)務(wù),把得到需要的數(shù)據(jù)回傳到指定的頁面上。
java超鏈接:
button.setLabel("htmla href=\"http:\\\angelsinklow"angelsinklow/a/html");
如果用start的話,這樣寫
Runtime.getRuntime().exec("cmd /c start ‘http:\\\angelsinklow");
Runtime.getRuntime().exec("iexplore ");
對于JEditorPane,JTextPane,JTextArea,JLabel可以使用
setText("htmlA href=''test/A/html")
對于JEditorPane使用
setEditorKitForContentType("text/html", new PatchedHTMLEditorKit());
addHyperlinkListener(HyperlinkListener ... );
需要引入java.net.url包。
try{getAppletContext().showDocument(new URL("http:\\\angelsinklow"),"打開位置");}
catch(Exception ex) {System.out.println("error"); }
就超鏈接了。