??? 打開(kāi)eclipse(最好是裝了myeclipse的),新建webproject,新建類這里是JPEGServlet,繼承(extends)HttpServlet[繼承所有方法打上鉤,在新建類的最下方有個(gè)Tchecked控件,這樣很多代碼就自動(dòng)產(chǎn)生了],這些我就不多講了,不好意思班門(mén)弄大斧,如果你是初學(xué),那我就不好意思的講講清楚,大家互相學(xué)習(xí),說(shuō)不定就這一小源碼,大家慢慢發(fā)展變化就變成大大東東了!這也是我發(fā)這篇文章的原因,畢竟我也是個(gè)初學(xué)者......好了,好像是賣(mài)關(guān)子的拉!
1.?? 詳細(xì)源碼如下:
package servlet;? //包名
import java.awt.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
public class JPEGServlet extends HttpServlet {
?private static final long serialVersionUID = 1L;
?public void doGet(HttpServletRequest request, HttpServletResponse response)
???throws ServletException, IOException {
??response.setContentType("image/jpeg");
??ServletOutputStream out = response.getOutputStream();
??BufferedImage image = new BufferedImage(750, 30, BufferedImage.TYPE_INT_RGB);
??int per = 0;
??try
??{
???per = Integer.parseInt((String)request.getParameter("size"));//接收參數(shù),表示進(jìn)度
??}
??catch(Exception e)
??{
???e.printStackTrace();
??}
??
??Graphics graphics = image.getGraphics();
??graphics.setColor(Color.green);
??graphics.fillRect(0, 0, 750, 30);
??graphics.setColor(Color.yellow);
??graphics.fillRect(0, 0, 750 * per / 100, 30);
??JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
??encoder.encode(image);
??out.close();
?}
?public void doPost(HttpServletRequest request, HttpServletResponse response)
???throws ServletException, IOException {
??doGet(request, response);
?}
}
2. web.xml配置如下
<servlet>
?? <servlet-name>jpegServlet</servlet-name>?????????????? /*servlet名稱*/
?? <servlet-class>servlet.JPEGServlet</servlet-class>???? /*servlet類所在位置
??????????????????????????????????????????????????????????? 包名.類名
?????????????????????????????????????????????????????????? */
</servlet>
<servlet-mapping>
?? <servlet-name>jpegServlet</servlet-name>????????????? /*servlet映射設(shè)置
???????????????????????????????????????????????????????????????????????????????????? servlet名稱
?????????????????????????????????????????????????????????????????????????????? ? */
?? <url-pattern>/picture</url-pattern>????????????????? /*訪問(wèn)路徑*/
</servlet-mapping>
3. 訪問(wèn)
?? http://localhost:8088/工程名稱/picture?size=33
?? 這樣去訪問(wèn)得到個(gè)顯示進(jìn)度的圖形
?? 大多數(shù)油箱的存儲(chǔ)容量和網(wǎng)盤(pán)空間顯示的進(jìn)度就可以這樣用size參數(shù)訪問(wèn)來(lái)設(shè)置了,也就是把這個(gè)servlet內(nèi)陷入源碼
?? 如:
<jsp:include page="/picture" flush="true">
?? <jsp:param name="size" value="33">//這里value值當(dāng)然就可以是個(gè)變量了
</jsp:inclue>
4. 加深
?? ①使它動(dòng)態(tài)的進(jìn)度條,速度實(shí)實(shí)在在的在變動(dòng),我想稍微在jsp里寫(xiě)個(gè)程序就不難了吧,如果你不太明白就跟我聯(lián)系羅(QQ:150343747)
?? ②利用這種方式來(lái)實(shí)現(xiàn)“動(dòng)態(tài)驗(yàn)證碼”
?? 這兩點(diǎn),由于時(shí)間和空間問(wèn)題我就先不熬述了,但是值得大家一起來(lái)討論和研究!
5. 思考
??? ①不知道大家有沒(méi)有發(fā)現(xiàn),http://localhost:8088/工程名稱/picture?size=33這樣去訪問(wèn)servlet用查看源文件是看不到的,然后另為為,發(fā)現(xiàn)它是圖片格式,確實(shí)也是圖片格式,代碼response.setContentType("image/jpeg")已經(jīng)告訴我們了,那么是不是就可以
?????? <img src="/picture?size=33" />
來(lái)訪問(wèn)了呢???
??? ②不知道大家有沒(méi)有注意,一般一個(gè)網(wǎng)站上很多相同樣式或背景按鈕只是字不同,比如“確定”“取消”,“放送”等等,難道每改變一個(gè)詞就要用圖片編輯器重新編輯一下嗎?難道就不能用servlet來(lái)設(shè)計(jì)自己樣式的按鈕,只要把參數(shù)“顯示在按鈕上的字”賦給servlet就行了嗎?想想這樣的思路正確嗎?
???? 好了,今天就講這么多,時(shí)間不早了,咱來(lái)日方長(zhǎng)!