當前位置:首頁 » 網頁前端 » javaweb實例下載
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

javaweb實例下載

發布時間: 2023-07-23 06:52:29

① java web 項目啟動時載入資料庫的數據到緩存中,如何實現求思路和實例。謝謝高峰相送

可以使用servlet的init方法訪問資料庫載入數據到java集合中,java集合相當於一塊緩存,適用於一般的數據。

② 如何用Java實現Web伺服器

一 HTTP協議的作用原理

WWW是以Internet作為傳輸媒介的一個應用系統 WWW網上最基本的傳輸單位是Web網頁 WWW的工作基於客戶機/伺服器計算模型 由Web 瀏覽器(客戶機)和Web伺服器(伺服器)構成 兩者之間採用超文本傳送協議(HTTP)進行通信 HTTP協議是基於TCP/IP協議之上的協議 是Web瀏覽器和Web伺服器之間的應用層協議 是通用的 無狀態的 面向對象的協議 HTTP協議的作用原理包括四個步驟

( ) 連接 Web瀏覽器與Web伺服器建立連接 打開一個稱為socket(套接字)的虛擬文件 此文件的建立標志著連接建立成功

( ) 請求 Web瀏覽器通過socket向Web伺服器提交請求 HTTP的請求一般是GET或POST命令(POST用於FORM參數的傳遞) GET命令的格式為

GET 路徑/文件名 HTTP/

文件名指出所訪問的文件 HTTP/ 指出Web瀏覽器使用的HTTP版本

( ) 應答 Web瀏覽器提交請求後 通過HTTP協議傳送給Web伺服器 Web伺服器接到後 進行事務處理 處理結果又通過HTTP傳回給Web瀏覽器 從而在Web瀏覽器上顯示出所請求的頁面

例 假設客戶機與 /mydir/l建立了連接 就會發送GET命令 GET /mydir/l HTTP/ 主機名為的Web伺服器從它的文檔空間中搜索子目錄mydir的文件l 如果找到該文件 Web伺服器把該文件內容傳送給相應的Web瀏覽器

為了告知 Web瀏覽器傳送內容的類型 Web伺服器首先傳送一些HTTP頭信息 然後傳送具體內容(即HTTP體信息) HTTP頭信息和HTTP體信息之間用一個空行分開

常用的HTTP頭信息有

① HTTP OK

這是Web伺服器應答的第一行 列出伺服器正在運行的HTTP版本號和應答代碼 代碼 OK 表示請求完成

② MIME_Version

它指示MIME類型的版本

③ content_type 類型

這個頭信息非常重要 它指示HTTP體信息的MIME類型 如 content_type text/指示傳送的數據是HTML文檔

④ content_length 長度值

它指示HTTP體信息的長度(位元組)

( ) 關閉連接 當應答結束後 Web瀏覽器與Web伺服器必須斷開 以保證其它Web瀏覽器能夠與Web伺服器建立連接

二絕敗胡 Java實現Web伺服器功能的程序設計

根據上述HTTP協議的作用原理 實現GET請求的Web伺服器程序的方法如下

( ) 創並攔建ServerSocket類對象 監聽埠 這是為了區別於HTTP的標准TCP/IP埠 而取的

( ) 等待 接受客戶機連接到埠 得到與客戶機連接的socket

( )枯大 創建與socket字相關聯的輸入流instream和輸出流outstream

( ) 從與socket關聯的輸入流instream中讀取一行客戶機提交的請求信息 請求信息的格式為 GET 路徑/文件名 HTTP/

( ) 從請求信息中獲取請求類型 如果請求類型是GET 則從請求信息中獲取所訪問的HTML文件名 沒有HTML文件名時 則以l作為文件名

( ) 如果HTML文件存在 則打開HTML文件 把HTTP頭信息和HTML文件內容通過socket傳回給Web瀏覽器 然後關閉文件 否則發送錯誤信息給Web瀏覽器

( ) 關閉與相應Web瀏覽器連接的socket字

下面的程序是根據上述方法編寫的 可實現多線程的Web伺服器 以保證多個客戶機能同時與該Web伺服器連接

程序 WebServer java文件

//WebServer java 用JAVA編寫Web伺服器

import java io *

import *

public class WebServer {

public static void main(String args[]) {

int i= PORT=

ServerSocket server=null

Socket client=null

try {

server=new ServerSocket(PORT)

System out println( Web Server is listening on port +server getLocalPort())

for ( ) {client=server accept() //接受客戶機的連接請求

new ConnectionThread(client i) start()

i++

}

} catch (Exception e) {System out println(e) }

}

}

/* ConnnectionThread類完成與一個Web瀏覽器的通信 */

class ConnectionThread extends Thread {

Socket client //連接Web瀏覽器的socket字

int counter //計數器

public ConnectionThread(Socket cl int c) {

client=cl

counter=c

}

public void run() //線程體

{try {

String destIP=client getInetAddress() toString() //客戶機IP地址

int destport=client getPort() //客戶機埠號

System out println( Connection +counter+ connected to +destIP+ on port +destport+ )

PrintStream outstream=new PrintStream(client getOutputStream())

DataInputStream instream=new DataInputStream(client getInputStream())

String inline=instream readLine() //讀取Web瀏覽器提交的請求信息

System out println( Received +inline)

if (getrequest(inline)) { //如果是GET請求

String filename=getfilename(inline)

File file=new File(filename)

if (file exists()) { //若文件存在 則將文件送給Web瀏覽器

System out println(filename+ requested )

outstream println( HTTP/ OK )

outstream println( MIME_version )

outstream println( Content_Type text/ )

int len=(int)file length()

outstream println( Content_Length +len)

outstream println( )

sendfile(outstream file) //發送文件

outstream flush()

} else { //文件不存在時

String notfound=

Error file not found

outstream println( HTTP/ no found )

outstream println( Content_Type text/ )

outstream println( Content_Length +notfound length()+ )

outstream println( )

outstream println(notfound)

outstream flush()

}

}

long m =

while (m < ) {m ++ } //延時

client close()

} catch (IOException e) {

System out println( Exception +e)

}

}

/* 獲取請求類型是否為 GET */

boolean getrequest(String s) {

if (s length()> )

{if (s substring( ) equalsIgnoreCase( GET )) return true

}

return false

}

/* 獲取要訪問的文件名 */

String getfilename(String s) {

String f=s substring(s indexOf(′ ′)+ )

f=f substring( f indexOf(′ ′))

try {

if (f charAt( )==′/′)

f=f substring( )

} catch ( e) {

System out println( Exception +e)

}

if (f equals( )) f= l

return f

}

/*把指定文件發送給Web瀏覽器 */

void sendfile(PrintStream outs File file) {

try {

DataInputStream in=new DataInputStream(new FileInputStream(file))

int len=(int)file length()

byte buf[]=new byte[len]

in readFully(buf)

outs write(buf len)

outs flush()

in close()

} catch (Exception e) {

System out println( Error retrieving file )

System exit( )

}

}

}

程序中的ConnectionThread線程子類用來分析一個Web瀏覽器提交的請求 並將應答信息傳回給Web瀏覽器 其中 getrequest()方法用來檢測客戶的請求是否為 GET getfilename(s)方法是從客戶請求信息s中獲取要訪問的HTML文件名 sendfile()方法把指定文件內容通過socket傳回給Web瀏覽器

對上述程序的getrequest()方法和相關部分作修改 也能對POST請求進行處理

三 運行實例

為了測試上述程序的正確性 將編譯後的WebServer class ConnectionThread class和下面的l文件置於網路的某台主機的同一目錄中(如 主機NT SRV的C JWEB目錄)

程序 l文件

這是用JAVA寫出的WEB伺服器主頁

年 月 日


首先在該主機上用java命令運行WebServer class

C jweb>java webserver

然後在客戶機運行瀏覽器軟體 在URL處輸入WebServer程序所屬的URL地址(如 ) 就在瀏覽器窗口顯示出指定的HTML文檔

注意 不能預設埠號 如預設 則運行該主機的正常WEB伺服器

lishixin/Article/program/Java/hx/201311/26626

③ 如何用java進行 web開發實例

這……使用工具創建一個就好,打開eclipse-file-new-Others-Dynamic Web Project

如下填寫好項目名稱就好了,這就是一個web工程,然後你啟動服務就OK了。再復雜的就不是一會能說明白的。

④ javaweb裡面staff是什麼

此處用的是一個java web系統的一個staff表操作的模塊,核心部分包括表的設計、資料庫連接、數據封裝類(VO)的創建、封裝業務的JavaBean(DAO)、servlet和jsp結合對資料庫進行操作和顯示。其他業務的操作大同小異。
涉及到的類、jsp和servlet
ConnectionManager.java
Staff.java
Staff_Interface.java
OperateStaff.java
servlet如下:
GetStaff.java
doAddStaff.java
doEditStaff.java
doDeleteStaff.java
配置文件:web.xml
jsp如下:
AddStaff.jsp
EditStaff.jsp
ShowStaff.jsp
error.jsp
使用sql server 資料庫,staff表如下:
在這里插入圖片描述
此數據表不是本人設計,在欄位設置上有缺陷,還有資料庫的編碼也存在問題,此處只展示表的大體結構,大家在資料庫設計上一定要力求完整!
接下來分析每個類的作用,以便理解DAO,VO,下篇再分析servlet。

ConnectionManager.java
此類是資料庫管理類,注冊資料庫驅動和獲取資料庫連接,以及關閉資料庫連接,其中,getConnection()方法用於返回連接對象dbconnection(後面用得到),另外還含有Connection、ResultSet、Statement對象的關閉方法,如void getConnection(Connection con){省略}

Staff.java
是一個封裝數據的JavaBean(類),也是一個VO(VO就是一個簡單的JavaBean),JavaBean 中定義了成員變數和相應的set和get方法。

Staff_Interface.java
Staff表的操作介面類,在介面類中定義類的方法原型,在具體類OperateStaff.java(DAO)中實現介面。設置介面的作用主要是便於對程序擴充。

OperateStaff.java
為一個DAO,封裝了資料庫的操作,如增加、刪除、修改、查找,在此DAO中,會把從資料庫查詢到的信息實例化為VO(用查詢到的信息來實例化VO(如此處的staff.java類)),再將實例首稿化的VO放入ArrayList數組中(或其他存儲對象中,如HashMap對象)。
DAO中一般含有如下結構:
ArrayList stlist=new ArrayList();

文章知識點與官方知識檔案匹配
Java技能樹首頁概覽
89145 人正在系統學習中
打開CSDN,閱讀體驗更佳

Dao層,Service層,Servlet層運用的自我理解_Young9518的博客
Dao層,Service層,Servlet層者梁孝運用的自我理解 Dao層 先聲明一個介面類,類里聲明一些將會用的方法, 同一層內寫一個實現這個介面類的類,重寫介面類里的方法 方法主要是處理數據的方法, publicinterfaceIStuClassDao {publicListfindAllStuClass...
繼續訪問
什麼是Dao層、Entity層、Service層、Servlet層、Utils層?
Servlet(Server Applet)是Java Servlet的簡稱,是為小服務程序或服務連接器,用Java編寫的伺服器端程序,主要功能在於互動式地瀏覽和修改數據,生成動態Web內容。 Servlet實現過程: (1)客戶端發送請求至伺服器端; ...
繼續訪問
+service+servlet+jsp實現留言板(添加、查看)
運用MVC模式以及servlet、jsp技術實現留言板添加、查看
使用JavaBean(DAO和VO)開發購物車
使用JavaBean(DAO和VO)開發購渣漏物車 一,實現要求 1.編寫一個JavaBean類Book,包含isbn,bookName,auther,publisher,price,amount 屬性。用作VO(ValueObject)。 2.編寫一個類BookDAO,該類中包含一個方法: publicArrayListgetAllBook() 該方法訪問資料庫,查詢資料庫表book_info,將所有圖書以一個數組列表對象的形式返回。 3.改寫作業7中的SelectBook.JSP頁面,使用BookDAO獲得
繼續訪問

Servlet基本功能實現_smallkneif的博客
1、Servlet 1.1、快速入門 創建項目,創建一個類實現Servlet介面,共有五個方法,可以在service方法中列印文字 配置Servlet 執行原理: 伺服器受到瀏覽器請求之後,解析url路徑,獲得Servlet資源路徑
繼續訪問
Servlet及JDBC、簡單運用_summerwangnan的博客_jdbc和...
1.首先建一個包 ,然後創建一個類--BaseDao.java (裡面放入與資料庫相連接的代碼等) package second.; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; ...
繼續訪問
JSP+Servlet+JavaBean+DAO模式+JDBC+Bootstrap+ajax+自定義標簽完成用戶登錄驗證
文章目錄一.案例要求二.使用工具工具相關文件的導入三.案例導圖四.案例實現1.資料庫建立1.1 新建資料庫1.2 建表1.3 添加記錄2.登錄頁面實現Bootstrap部署login.jsp實現效果3.JDBC的DAO模式實現3.1 資料庫連接類3.2 User實體類-JavaBeanUser特徵User代碼3.3 UserDAO介面類3.4 UserDAOImpl實現類3.5 UserDAOPr...
繼續訪問
博客系統(+servlet+service+vo+mysql)
基於的web的博客系統,資料庫是mysql,裡面有mysql資料庫建表的sql語句,直接導入,部署好程序就可以運行了,保證可以運行
JSP中JavaBean和EL的介紹及使用
JavaBean在JSP中的應用 ; JavaBean使用時的注意事項;EL表達式的簡單介紹和使用; 文件中解壓可以直接導入運行的,運行環境MyEclipse2017 ,其它版本請注意添加jar文件!
帶你了解:基於servlet層+service層+層實現前端對資料庫的增刪查改
前記:最近因為疫情原因上網課導致之前的幾節課都沒有好好聽,所以當老師讓我完成這個作業時我還是著急了一下。經過兩天的了解學習,一天多完成了一個簡單的從前斜體樣式端操作資料庫demo.實現效果圖如下: 在這里圖就不多放了,如果你覺得實現以上的功能是你所想學習的,那麼請繼續往下看,否則也不用繼續往下為此花費更多時間了。 一.實現原理 在實現前端操作資料庫之前,我們表面所認為的是:前端—>資料庫 ...
繼續訪問

java web中的service,servlet和Dao有什麼區別
servlet一般用於生成網頁;service在後端中,web,service,Dao三層中,用於service調用Dao層。 Servlet返回的數據比較簡單; Web Service返回的可以是復雜對象,甚至使用附件或者mutidata的二進制文件。 Servlet依賴於Java平台;Web Service是跨平台的,無論什麼在什麼平台使用什麼語言開發的Web Service,其他平台上的任何語言都能調用。 Servlet定義的是一套服務於Java Web開發介面,目的是實現Java Web的動態訪問。
繼續訪問
bean、、service、servlet的簡單說明
bean:存放數據1、存放來自於資料庫的數據。2、存放來自客戶端的數據(表單提交),存數據的中介作用 :data access object:數據訪問對象,主要做的事情就是對資料庫單表進行增刪改操作,查的有可能是多表管理查詢 service:對應界面上的操作,增刪改查,至於這個業務涉及到幾個,就調用幾個 servlet:1、接受用戶請求,進行處理(doget/dopost...
繼續訪問
JSP&Servlet --- JSP DAO模式
這幾天開始和社會董還有小孟願開始寫小組的圖書管理系統,將在此期間遇到的一些問題和學到的一些知識總結在博客里。 這篇博客要總結的就是在WEB項目中用到的很重要的一種資料庫設計模式DAO。DAO是什麼DAO是WEB項目裡面的數據層,主要負責為其他各層(MVC(Model View Controller))提供數據。DAO層里封裝了對資料庫操作的各種操作的JDBC代碼。為什麼要使用DAO我們在寫WEB項
繼續訪問
Java Web中訪問資料庫需要的DAO和VO
VO就是一個普通的JavaBean DAO叫做Data Access Object類,專門負責對資料庫的訪問 然後將資料庫的操作都封裝在DAO內,把從資料庫查詢到的信息實例化為VO,放到ArrayList數組里返回,DAO類的代碼如下
繼續訪問
book的Javabean類的實現
實現Java類的創建,基於book的類,包括許多的信息 name id book_type author
最新發布 JavaWeb連接資料庫(Dao模式),實現添加book並按日期范圍查找相應book信息
JDBC技術,通過簡單的Dao模式封裝,連接資料庫,實現向資料庫中添加book信息,並可以實現按照時間范圍來查找book信息。
使用jsp+servlet+javabean+實現學生體質信息管理系統
大體樣式如下,我已經將該項目部署到伺服器上,網址是http://156.223.25.190:8080/ch_05/index.jsp 在伺服器上資料庫出了些問題還沒解決,只有界面,但是在我電腦上資料庫是沒有問題的。 此項目連接資料庫用的是DButils+cp03的方法。 一、建立jsp頁面 幾乎每個界面的css是一樣的,在此不做重復的代碼 index.jsp <%@ page conte...
繼續訪問

【Java Web開發】DAO和VO
1.pom.xml文件的<dependencies>標簽下添加以下代碼。 <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>7.2....
繼續訪問

JavaWeb搭建超市管理系統
文章目錄SMBMS准備工作登錄功能實現登錄功能優化密碼修改密碼驗證Ajax用戶管理實現用戶數量用戶列表角色列表 SMBMS 准備工作 搭建一個Maven項目、 配置Tomcat 測試項目能否跑起來 導入項目所需的jar包(servlet,jsp,mysql,jstl,standard…) 創建項目包結構 編寫實體類(ORM映射:表—類映射) 編寫基礎公共類(資料庫配置文件) driver=com.mysql.jdbc.driver url=jdbc:mysql://localho
繼續訪問
用JSP完成簡單的圖書信息查詢系統
目錄圖書信息查詢系統分層結構util包DButil代碼bean包Book.java代碼action包BookSearchServlet.java代碼web.xml配置test包BookTest.java代碼WebRoot下jsp頁面search.jsp頁面bookInfo.jsp頁面book表數據瀏覽器效果search.jsp頁面 圖書信息查詢系統 分層結構 util包 DButil代碼 package top.xinsir.util; import java.sql.Connection; impor
繼續訪問

DAO模式實現MySQL資料庫對數據的查詢
1. 前言 在本人開發的一個系統中需要提供注冊和登陸系統,自然需要有用戶管理,對用戶需要進行基礎的增刪改查,DAO是常用的設計模式之一,對數據訪問進行抽象,可以大大減低不同的資料庫之間移植的工作量,本文主要根據本人實現自己DAO模型的過程,講述DAO設計模式以及本人是如何使用DAO實現對數據的訪問的。 2. DAO設計模式 DAO全程是Data Access Object,是
繼續訪問
java servlet _Java Web:JSP+ Servlet+JavaBean+DAO
實例:頁面登錄1、登錄頁面的製做做用:實現數據的提交用戶:密碼:解釋:action=「要提交給伺服器端在web.xml注冊過的servelt的名字」method=「提交給伺服器的方法有get、post,這里選擇post」user、password:咱們要提交的數據名java2、Sertvlet控制器的實現做用:處理來自客服端的請求,接收登錄頁面提交的數據並調用JavaBean實例化,接著調用DAO...
繼續訪問
Servlet、Biz、Dao和Vo關系描述
ServletDome中Servlet、Biz、Dao和Vo關系的簡單描述之補充
繼續訪問
java調用_Servlet裡面一調用Dao里的某個方法
背景:這幾天,由於項目集成的需要,我要在doFilter里調用層里的某些方法,可是總之報空指針,只要調用那個方法,就報錯誤。很是納悶,網上查找了各種原因,終於讓我給突破了,看來還是Java基礎掌握的不夠呀!代碼:在servlet中加入私有變數UserDao,然後在servlet的init()方法中初始化一下即可用。private UserDao userDao;public void ...
繼續訪問
介紹和servlet實現基本功能
java
mysql

⑤ 簡述一下Java中的web容器,舉幾個例子也行

目前市場上常用的開源Java Web容器有Tomcat、Resin和Jetty。其中Resin從V3.0後需要購買才能用於商業目的,而其他兩種則是純開源的。可以分別從他們的網站上下載最新的二進制包和源代碼。
作為Web容器,需要承受較高的訪問量,能夠同時響應不同用戶的請求,能夠在惡劣環境下保持較高的穩定性和健壯性。在HTTP伺服器領域,Apache HTTPD的效率是最高的,也是最為穩定的,但它只能處理靜態頁面的請求,如果需要支持動態頁面請求,則必須安裝相應的插件,比如mod_perl可以處理Perl腳本,mod_python可以處理Python腳本。

上面介紹的三中Web容器,都是使用Java編寫的HTTP伺服器,當然他們都可以嵌到Apache中使用,也可以獨立使用。分析它們處理客戶請求的方法有助於了解Java多線程和線程池的實現方法,為設計強大的多線程伺服器打好基礎。

Tomcat是使用最廣的Java Web容器,功能強大,可擴展性強。最新版本的Tomcat(5.5.17)為了提高響應速度和效率,使用了Apache Portable Runtime(APR)作為最底層,使用了APR中包含Socket、緩沖池等多種技術,性能也提高了。APR也是Apache HTTPD的最底層。可想而知,同屬於ASF(Apache Software Foundation)中的成員,互補互用的情況還是很多的,雖然使用了不同的開發語言。

Tomcat 的線程池位於tomcat-util.jar文件中,包含了兩種線程池方案。方案一:使用APR的Pool技術,使用了JNI;方案二:使用Java實現的ThreadPool。這里介紹的是第二種。如果想了解APR的Pool技術,可以查看APR的源代碼。

ThreadPool默認創建了5個線程,保存在一個200維的線程數組中,創建時就啟動了這些線程,當然在沒有請求時,它們都處理「等待」狀態(其實就是一個while循環,不停的等待notify)。如果有請求時,空閑線程會被喚醒執行用戶的請求。

具體的請求過程是: 服務啟動時,創建一個一維線程數組(maxThread=200個),並創建空閑線程(minSpareThreads=5個)隨時等待用戶請求。 當有用戶請求時,調用 threadpool.runIt(ThreadPoolRunnable)方法,將一個需要執行的實例傳給ThreadPool中。其中用戶需要執行的實例必須實現ThreadPoolRunnable介面。 ThreadPool首先查找空閑的線程,如果有則用它運行要執行ThreadPoolRunnable;如果沒有空閑線程並且沒有超過maxThreads,就一次性創建minSpareThreads個空閑線程;如果已經超過了maxThreads了,就等待空閑線程了。總之,要找到空閑的線程,以便用它執行實例。找到後,將該線程從線程數組中移走。 接著喚醒已經找到的空閑線程,用它運行執行實例(ThreadPoolRunnable)。 運行完ThreadPoolRunnable後,就將該線程重新放到線程數組中,作為空閑線程供後續使用。

由此可以看出,Tomcat的線程池實現是比較簡單的,ThreadPool.java也只有840行代碼。用一個一維數組保存空閑的線程,每次以一個較小步伐(5個)創建空閑線程並放到線程池中。使用時從數組中移走空閑的線程,用完後,再「歸還」給線程池。

⑥ JavaWeb下載文件,怎麼獲取文件下載完畢的狀態

在Javaweb中,上傳下載是經常用到的功能,對於文件上傳,瀏覽器在上傳的過程中是以流的過程將文件傳給伺服器,一般都是使用commons-fileupload這個包實現上傳功能,因為commons-fileupload依賴於commons-io這個包,所以需要下載這兩個包commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar。

1、搭建環境

創建Web項目,將包導入到項目lib下

3、實現文件下載

(第一種文件下載)

注意:該代碼是直接訪問Servlet類的

?

04142package com.load;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//直接使用Http://localhost:8080/Test1/download進行下載,但是這個有缺陷,如果下載文件名中有中文,就會變成亂碼現象!@WebServlet("/download")public class download extends HttpServlet {private static final long serialVersionUID = 1L;public download() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/plain;charset=utf-8");response.setCharacterEncoding("utf-8");response.setHeader("Location","中文.txt");response.setHeader("Content-Disposition", "attachment; filename=" + "賬號.txt");OutputStream outputStream = response.getOutputStream();InputStream inputStream = new FileInputStream("E:/loads"+"/賬號.txt");byte[] buffer = new byte[1024];int i = -1;while ((i = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, i);}outputStream.flush();outputStream.close();}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

(第二種下載方法)

新建jsp頁面選擇下載

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>下載</title></head><body><a href="../DoDownloadServlet?filename=呵呵.txt">點擊下載</a></body></html>

創建Servlet類進行下載(注意:該下載如果文件名是中文的話,一樣會出現亂碼現象)

package com.load;

import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.jsp.JspFactory;import javax.servlet.jsp.PageContext;import org.hsqldb.lib.StringUtil;import com.jspsmart.upload.SmartUpload;import com.jspsmart.upload.SmartUploadException;@WebServlet("/DoDownloadServlet")public class DoDownloadServlet extends HttpServlet {private static final long serialVersionUID = 1L;public DoDownloadServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//得到下載文件的名稱//String filename = request.getParameter("filename");//String filename = new String(FileName.getBytes("iso8859-1"),"UTF-8");//新建SmartUpload對象SmartUpload su = new SmartUpload();PageContext pagecontext = JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true, 8192, true);//上傳初始化su.initialize(pagecontext);//設置禁止打開該文件su.setContentDisposition(null);//下載文件try {su.downloadFile("/listener/"+filename);} catch (SmartUploadException e) {// TODO Auto-generated catch blocke.printStackTrace();}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

(第三種下載的方法)

同上的jsp頁面代碼,這里就不再重復了。

新建Serlvet類,實現下載功能(注意:這里文件名就算是中文名,也不會出現亂碼問題了!)

package com.load;

import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.jsp.JspFactory;import javax.servlet.jsp.PageContext;import org.hsqldb.lib.StringUtil;import com.jspsmart.upload.SmartUpload;import com.jspsmart.upload.SmartUploadException;@WebServlet("/DoDownloadServlet")public class DoDownloadServlet extends HttpServlet {private static final long serialVersionUID = 1L;public DoDownloadServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//獲得文件名稱String path1 = request.getParameter("filename");//獲得路徑名稱String path = request.getSession().getServletContext().getRealPath("/listener/"+path1);// path是根據日誌路徑和文件名拼接出來的File file = new File(path);String filename = file.getName();try {//判斷是否是IE11Boolean flag= request.getHeader("User-Agent").indexOf("like Gecko")>0;//IE11 User-Agent字元串:Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko//IE6~IE10版本的User-Agent字元串:Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.0; Trident/6.0)if (request.getHeader("User-Agent").toLowerCase().indexOf("msie") >0||flag){filename = URLEncoder.encode(filename, "UTF-8");//IE瀏覽器}else {//先去掉文件名稱中的空格,然後轉換編碼格式為utf-8,保證不出現亂碼,//這個文件名稱用於瀏覽器的下載框中自動顯示的文件名filename = new String(filename.replaceAll(" ", "").getBytes("UTF-8"), "ISO8859-1");//firefox瀏覽器//firefox瀏覽器User-Agent字元串://Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0} InputStream fis = new BufferedInputStream(new FileInputStream(path));byte[] buffer;buffer = new byte[fis.available()];fis.read(buffer);fis.close();response.reset();response.addHeader("Content-Disposition", "attachment;filename=" +filename);response.addHeader("Content-Length", "" + file.length());OutputStream os = response.getOutputStream();response.setContentType("application/octet-stream");os.write(buffer);// 輸出文件os.flush();os.close();} catch (IOException e) {e.printStackTrace();}System.out.println(filename);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

⑦ 《JavaWeb開發實戰1200例(第Ⅱ卷)》epub下載在線閱讀,求百度網盤雲資源

《Java Web開發實戰1200例(第Ⅰ卷)》(盧瀚//王春斌)電子書網盤下載免費在線閱讀

資源鏈接:

鏈接:https://pan..com/s/1q3rJnu2DKZqZmHcr6Zl1Wg

密碼:m01y

書名:Java Web開發實戰1200例(第Ⅰ卷)

作者:盧瀚//王春斌

出版社:清華大學

出版年份:2011-1

頁數:909

內容簡介:

《Java Web開發實戰1200例(第1卷)》簡介:《Java Web開發實戰1200例》包括第I卷、第II卷共計1200個例子,《Java Web開發實戰1200例(第1卷)》是第I卷,共計600個例子。

《Java Web開發實戰1200例(第1卷)》以開發人員在項目開發中經常遇到的問題和必須掌握的技術為中心,介紹了應用Java Web進行程序開發的各個方面的知識和技巧,主要包括Java Web編程基礎、文件操作管理、圖形圖像與多媒體技術、窗體應用技術、JSP操作Word與Excel等。全書分6篇23章,共計600個實例和600個經驗技巧。每個實例都是經過作者精心篩選的,具有很強的實用性,其中一些實例是開發人員難於尋覓的解決方案。

《Java Web開發實戰1200例》兩卷共計1200個例子,包括了開發中各個方面最常用的實例,是目前市場上實例最全面的開發類圖書;本書實例來源於多位工程師的多年積累,具有很強的實用性。

《Java Web開發實戰1200例(第1卷)》附帶有配套DVD光碟,光碟中提供有部分實例的視頻和大部分源代碼,讀者稍加修改即可應用。

《Java Web開發實戰1200例(第1卷)》適合Java Web的初學者,如高校學生、求職人員作為練習、速查、學習使用,也適合Java Web程序員參考、查閱。

⑧ 《精通Spring2.xJavaWeb開發》pdf下載在線閱讀,求百度網盤雲資源

《精通Spring2.xJavaWeb開發》電子書網盤下載免費在線閱讀

鏈接:https://pan..com/s/1JmsGQWggP2MaSmDpEqyvQA

提取碼:sc13

書名:精通Spring2.xJavaWeb開發

出版年份:2008-9

頁數:371

內容介紹:

《精通Spring 2.x Java Web開發》按照從易到難、由淺入深、循序漸進的順序介紹Spring,並使用大量的實例使讀者更加深刻地理解所學習的知識,更好地進行開發實踐。《精通Spring 2.x Java Web開發》深刻地揭示了Spring的技術內幕,對IOC、DI、AOP、事務管理等根基性的技術進行了深度的講解。讀者閱讀《精通Spring 2.x Java Web開發》後,不但可以熟練使用Spring的各項功能,而且還能夠對書中的實例舉一反三。