導航:首頁 > 編程語言 > jsp做動圖

jsp做動圖

發布時間:2023-05-23 02:16:22

1. 如何在jsP網頁中生成動態圖表

  1. JSP頁面中嵌入動態圖表的兩種方法 :在JSP頁面中插入Applet小程序 ;通過javaBean動態生成圖像。

  2. JSP是一種廣泛應用的網頁設計技術 ,它是一種HTML和Java腳本混合的編程技術 ,它結合了HTML的靜態特性和Java語言的動態能力 ,因此用它進行動態網頁設計非常方便。在進行圖像處理時 ,一般處理靜態圖片非常容易 ,但是 ,在實際應用中常常需要動態地在網頁中生成二維的圖形.

  3. 基於JFreeChart開發的一個時序圖的繪制。代碼如下:

  4. 實例中createDataset()方法用於創建數據集合對象。時序圖的數據集合與其他數據集合不同,它需要添加一個時間段內的所有數據,通常採用TimeSeries類進行添加。該實例中通過Math類的random()方法進行隨機生成。

  5. import java.awt.*;
    import java.awt.event.ActionEvent;
    import
    java.awt.event.ActionListener;
    import java.io.BufferedInputStream;
    import
    java.io.DataInputStream;
    import java.io.FileOutputStream;
    import
    java.io.IOException;
    import java.net.URL;
    import
    java.net.URLConnection;
    import java.text.DateFormat;
    import
    java.text.ParseException;
    import java.text.SimpleDateFormat;
    import
    java.util.Calendar;
    import java.util.Date;
    import java.util.Random;

    import javax.swing.JApplet;
    import javax.swing.Timer;

    import org.jfree.chart.*;
    import
    org.jfree.chart.annotations.CategoryTextAnnotation;
    import
    org.jfree.chart.axis.CategoryAnchor;
    import
    org.jfree.chart.axis.CategoryAxis;
    import
    org.jfree.chart.axis.CategoryLabelPositions;
    import
    org.jfree.chart.axis.DateAxis;
    import
    org.jfree.chart.axis.DateTickUnit;
    import
    org.jfree.chart.axis.DateTickUnitType;
    import
    org.jfree.chart.axis.ValueAxis;
    import
    org.jfree.chart.labels.;
    import
    org.jfree.chart.plot.CategoryPlot;
    import
    org.jfree.chart.plot.PlotOrientation;
    import
    org.jfree.chart.plot.XYPlot;
    import
    org.jfree.chart.renderer.category.BarRenderer;
    import
    org.jfree.chart.title.TextTitle;
    import
    org.jfree.data.category.CategoryDataset;
    import
    org.jfree.data.category.IntervalCategoryDataset;

    import org.jfree.chart.axis.NumberAxis;
    import
    org.jfree.data.category.DefaultCategoryDataset;
    import
    org.jfree.data.gantt.Task;
    import org.jfree.data.gantt.TaskSeries;
    import
    org.jfree.data.gantt.TaskSeriesCollection;
    import
    org.jfree.data.time.Day;
    import org.jfree.data.time.Second;
    import
    org.jfree.data.time.TimeSeries;
    import
    org.jfree.data.time.TimeSeriesCollection;
    import
    org.jfree.data.xy.XYDataset;

    public class shixutu extends JApplet {


  6. //PLOT_FONT是一靜態的字體常量對象,使用此對象可以避免反復用到的字體對象被多次創建

    private static final Font PLOT_FONT = new Font("黑體", Font.ITALIC ,
    18);
    JFreeChart chart;

  7. //創建數據動態更新的監聽
    class DataGenerator extends Timer
    implements ActionListener {

    private static final long serialVersionUID =
    3977867288743720504L;
    String
    equID;
    //設備ID號
    int
    totalTask;
    //任務數
    String[][]
    strTask;
    //任務情況

  8. public void
    actionPerformed(ActionEvent actionevent) {
    addTotalObservation();
    } DataGenerator()
    {



    super(1000,
    null);

    addActionListener(this);

    System.out.println("super");

    }
    }


    //將更新的數據添加到chart中
    private void addTotalObservation()
    {

    System.out.println("addTotalObservation");

    //設置新的數據集

    chart.getXYPlot().setDataset(createDataset());

    //通知Jfreechart
    數據發生了改變,重新繪制柱狀圖
    if
    (chart != null)
    {

    chart.fireChartChanged();

    }
    }
    private static void
    processChart(JFreeChart chart)
    {

    //設置標題字體

    chart.getTitle().setFont(new Font("隸書", Font.BOLD,
    26));

    //設置背景色

    chart.setBackgroundPaint(new
    Color(252,175,134));

    XYPlot plot = chart.getXYPlot();
    //獲取圖表的繪制屬性

    plot.setDomainGridlinesVisible(false);
    //設置網格不顯示

    //獲取時間軸對象

    DateAxis dateAxis = (DateAxis)
    plot.getDomainAxis();

    dateAxis.setLabelFont(PLOT_FONT);
    //設置時間軸字體

    //設置時間軸標尺值字體

    dateAxis.setTickLabelFont(new
    Font("宋體",Font.PLAIN,12));

    dateAxis.setLowerMargin(0.0);
    //設置時間軸上顯示的最小值

    //獲取數據軸對象

    ValueAxis valueAxis =
    plot.getRangeAxis();

    valueAxis.setLabelFont(PLOT_FONT);
    //設置數據字體

    DateFormat format = new SimpleDateFormat("mm分ss秒");
    //創建日期格式對象

    //創建DateTickUnit對象

    DateTickUnit dtu = new
    DateTickUnit(DateTickUnitType.SECOND,30,format);

    dateAxis.setTickUnit(dtu);
    //設置日期軸的日期標簽 } //將結果輸出在文件

  9. private static
    void writeChartAsImage(JFreeChart chart)
    {

    FileOutputStream fos_jpg =
    null;

    try
    {

    fos_jpg = new
    FileOutputStream("D:\test\shixutu.jpg");

    ChartUtilities.writeChartAsJPEG(fos_jpg, 1, chart, 400, 300,
    null);

    } catch (Exception e)
    {

    e.printStackTrace();

    } finally
    {

    try
    {

    fos_jpg.close();

    } catch (Exception e)
    {

    }

    }

    }

    //創建數據集合對象

    public static XYDataset createDataset()
    {

    //實例化TimeSeries對象

    TimeSeries timeseries = new
    TimeSeries("Data");

    Second second = new Second();
    //實例化Day


    double d =
    50D;

    //添加一年365天的數據

    for (int i = 0; i < 500; i++)
    {

    d = d + (Math.random() - 0.5) * 10;
    //創建隨機數據

    timeseries.second(day, d);
    //向數據集合中添加數據

    second = (Second)
    second.next();

    }
    TimeSeriesCollection timeSeriesCollection =
    new
    TimeSeriesCollection(timeseries);

    //返回數據集合對象

    return timeSeriesCollection; }//Applet程序初始化

  10. public void init()
    {
    // 1.
    得到數據
    XYDataset dataset =
    createDataset();

    // 2.
    構造chart

    chart =
    ChartFactory.createTimeSeriesChart(

    "時序圖示範", //
    圖表標題

    "時間", //
    目錄軸的顯示標簽--橫軸

    "數值", //
    數值軸的顯示標簽--縱軸

    dataset, //
    數據集

    false,

    false, //
    是否生成工具

    false //
    是否生成URL鏈接

    );

    // 3.
    處理chart中文顯示問題

    processChart(chart);


    // 4.
    chart輸出圖片

    //writeChartAsImage(chart);

    // 5. chart
    以swing形式輸出

    //6.使用applet輸出

    ChartPanel chartPanel = new
    ChartPanel(chart);

    chartPanel.setPreferredSize(new
    java.awt.Dimension(800,500));

    getContentPane().add(chartPanel); (new
    DataGenerator()).start();

    }

    public void
    paint(Graphics g)
    {
    if
    (chart != null)
    {

    chart.draw((Graphics2D) g,
    getBounds());

    }
    }

    public void destroy() {
    }
    }

2. 如何在JSP中發送一個動態圖像

要 為你的jsp頁面設置MIME類型,你需要設置頁面的contentType屬性: %@ page co 當一個web頁面帶有image/jpeg (或者其他的圖像格式)的MIME類型被發送時,你的瀏覽器將那個返回結果當作一個圖像,然後瀏覽器顯示圖像,作為頁面的一部分或者完全作為圖像自身。要 為畢仔悉你的jsp頁面設置MIME類型,你需要設置頁面的contentType屬性: <%@ page contentType=image/jpeg % 然後你需要創建一個BufferedImage繪制你的動態圖像: BufferedImage image = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB); 創建完一個BufferedImage後,你需要得到圖形環境進行繪制,一個Graphics或者Graphics2D對象: Graphics g = image.getGraphics(); // or Graphics2d g2d = image.createGraphics(); 從現在起你就可以繪制圖像內容了。對圖形環境繪制就會畫到BufferedImage.最開始這個圖像都是黑色的,因此用你希望的背景顏手乎色戚拆填充圖像是一個不錯的主意,然後,當你完成圖像的繪制,你需要dispose圖形環境: g.dispose(); // or g2d.dispose(); 一旦完成圖像的繪制,你在response中返回那個圖像。你可以使用非標準的com.sun.image.codec.jpeg包中的 JPEGImageEncoder類編碼圖像,或者如果你使用JDK1.4,你可以使用標準的ImageIO類。在使用JPEGImageEncoder 時有一個技巧,你必須從ServletResponse取來ServletOutputStream而不能使用隱含的JSP輸出變數out. ServletOutputStream sos = response.getOutputStream(); JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(sos); encoder.encode(image); // or ImageIO.write(image, JPEG, out); 這里有一個從所有的可能方案中(例如g.dispose();或者g2d.dispose();)選取的一個完整的範例。這個例子使用Graphics對 象繪制一個隨機的多邊形,圖像通過JPEGImageEncoder繪制,你可以自由設置多邊形的頂點數得到更復雜的形狀,換言之,有更多頂點和邊。

3. 怎麼用JSP製作動態網頁,需要安裝什麼軟體

一、什麼是ASP?

ASP是Active Server Pages的簡稱,它是一種在微軟公司的WEB伺服器IIS(Internet Infomation Server)上開發交互網頁的新技術。微軟公司最初在IIS3.0版上使用它以取代CGI。隨著Windows NT在WWW上的使用日益增多,ASP已經成為了開發動態網站、構築Internet和Intranet應用的最佳選擇。

二、在哪裡可以找到支持ASP的伺服器軟體?

如果你的計算機上裝的是Windows NT 4.0,那麼你可以通過安裝NT的可選包Windows NT Option Pack 4.0來安裝IIS4.0,然後你就可以在IIS4.0里使用ASP了。如果你的操作系統是Windows 98, 那麼你可以在Win98光碟里找到一個ADD-ONS目錄,下面的PWS目錄裡面有一個小型WWW伺服器軟體PWS(PersonalWeb Server),它也可以支持ASP。如果你想用一用Windows 2000的測試版,那麼你可以選裝Server版或者Advanced Server版,它們都已經自帶IIS5.0了。

三、如何編寫ASP?

你或許用過Javascript在網頁里彈出一個小窗口,你是這樣做的:
<html>
<head>
<title>New Page 1
</head>
<body>
<Script Language=〃JavaScript〃>
alert(〃hello!〃);
</Script>
</body>
</html>
編寫ASP就跟它差不多,同樣是在網頁文件里加些東西,不像CGI那樣你還得寫一個EXE文件。唯一應該注意的是,網頁文件應該以.asp作為後綴名,而不能是.htm,這樣WWW伺服器才能識別它是ASP文件並進行相應的處理。
注意,上面例子中使用了 <script>和</script> 來把腳本包括起來,以區別普通的Html標記。在ASP中,使用另外兩個符號來標記ASP代碼,它們是「<%」 和「%>」。WWW伺服器在處理ASP文件時,一看到$#@60;%就知道ASP的代碼開始了,而看到%>就知道代碼結束。
通常,我們可以用Notepad來編輯ASP文件,不過因為FrontPage98有強大的網頁管理功能,所以最好在Frontpage98里編寫ASP文件。當你要往一個網頁里插入ASP代碼時,只需選擇FrontPage Editor下部的「HTML」標簽頁就行了。

四、一個例子

最後讓我們來看一個例子,將它以a.asp存檔,它在瀏覽器里輸出三個「Hello ASP」,從這里我們可以體會ASP代碼是如何同HTML標記語言結合在一起的。
<html>
<head>
<title>New Page 1
</head>
<body>
<%For i=1 to 3%>
<font size=〃><%=i%>〃Hello ASP
<%Next%>
</body>
</html>
請注意,文件後綴一定要為.asp。

五、ASP的處理流程

當我們用瀏覽器查看一個ASP文件時,都發生了些什麼呢?
以上面那個a.asp為例,當我們在瀏覽器里輸入 http://localhost/a.asp(localhost為主機名),瀏覽器向WWW伺服器發出請求,要求返回a.asp的內容。WWW伺服器在接到請求後,發現它的後綴為.asp,於是就將這個文件交給專門的ASP處理程序,這個程序掃描a.asp,把其中用<%和%>括起來的代碼解釋並執行,最後把執行結果再傳回給WWW伺服器,WWW伺服器把結果通過HTTP協議傳回到瀏覽器。你可以用瀏覽器的查看源代碼功能查看一下,你並沒有發現<%和%>標記,因為它們已經在伺服器端被處理掉了,瀏覽器所獲得的僅僅是結果,是一些標準的HTML標記。整個過程如圖。
下一講中,我們將介紹一些Vbscript的基礎知識。它是在ASP中用得最多的腳本語言之一。

---------------
1.2 JSP及其特點

JavaServer Pages(JSP)是一種實現普通靜態HTML和動態HTML混合編碼的技術,有關JSP基礎概念的說明請參見《JSP技術簡介 》。

許多由CGI程序生成的頁面大部分仍舊是靜態HTML,動態內容只在頁面中有限的幾個部分出現。但是包括Servlet在內的大多數CGI技術及其變種,總是通過程序生成整個頁面。JSP使得我們可以分別創建這兩個部分。例如,下面就是一個簡單的JSP頁面:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><TITLE>歡迎訪問網上商店</TITLE></HEAD>
<BODY>
<H1>歡迎</H1>
<SMALL>歡迎,
<!-- 首次訪問的用戶名字為"New User" -->
<% out.println(Utils.getUserNameFromCookie(request)); %>
要設置帳號信息,請點擊
<A HREF="Account-Settings.html">這里</A></SMALL>
<P>
頁面的其餘內容。.
</BODY></HTML>

下面是JSP和其他類似或相關技術的一個簡單比較:

JSP和Active Server Pages(ASP)相比

Microsoft的ASP是一種和JSP類似的技術。JSP和ASP相比具有兩方面的優點。首先,動態部分用Java編寫,而不是VB Script或其他Microsoft語言,不僅功能更強大而且更易於使用。第二,JSP應用可以移植到其他操作系統和非Microsoft的Web伺服器上。

JSP和純Servlet相比

JSP並沒有增加任何本質上不能用Servlet實現的功能。但是,在JSP中編寫靜態HTML更加方便,不必再用 println語句來輸出每一行HTML代碼。更重要的是,藉助內容和外觀的分離,頁面製作中不同性質的任務可以方便地分開:比如,由頁面設計專家進行HTML設計,同時留出供Servlet程序員插入動態內容的空間。

JSP和伺服器端包含(Server-Side Include,SSI)相比

SSI是一種受到廣泛支持的在靜態HTML中引入外部代碼的技術。JSP在這方面的支持更為完善,因為它可以用Servlet而不是獨立的程序來生成動態內容。另外,SSI實際上只用於簡單的包含,而不是面向那些能夠處理表單數據、訪問資料庫的「真正的」程序。

JSP和javascript相比

javascript能夠在客戶端動態地生成HTML。雖然javascript很有用,但它只能處理以客戶端環境為基礎的動態信息。除了Cookie之外,HTTP狀態和表單提交數據對javascript來說都是不可用的。另外,由於是在客戶端運行,javascript不能訪問伺服器端資源,比如資料庫、目錄信息等等。

4. 如何在JSP頁面發送一個動態圖像

要為你的jsp頁面設置MIME類型,你需要設置頁面的contentType屬性:
<%@ page contentType="image/jpeg" ... %> 然後你需要創建一個BufferedImage繪制你的動態陵兄圖像: BufferedImage image = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB); 創建完一個BufferedImage後,你需要得到圖形環境進行繪制,一個Graphics或者Graphics2D對象: Graphics g = image.getGraphics(); // or Graphics2d g2d = image.createGraphics(); 從現在起你就可以繪制圖像內容了。對圖形環境繪制就會畫到BufferedImage。最開始這個圖像都是黑色的,因此用你希望的背景顏色填充圖像是一個不錯的主意,然後,當你完成圖像的繪制,你需要dispose圖形環境: g.dispose(); // or g2d.dispose();
一旦完成圖像的繪制,你在response中返回那個圖像。你可以使用非標準的com.sun.image.codec.jpeg包中的JPEGImageEncoder類編碼圖像,或者如果你使用JDK1.4,你可以使用標準的ImageIO類。在使用JPEGImageEncoder時有一個技巧,你必須從ServletResponse取來ServletOutputStream而不能使用隱含的JSP輸出變數out。
ServletOutputStream sos = response.getOutputStream(); JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(sos); encoder.encode(image); // or ImageIO.write(image, "JPEG", out);
這里有一個從所有的可能方案中(例緩好如g.dispose();或者g2d.dispose();)選取的一個完整的範例.這個例子使用Graphics對象繪制一個隨機的多邊形,圖像通過JPEGImageEncoder繪制,你可以自由設置多邊形的頂點數得到更復雜的形狀,換言尺哪襲之,有更多頂點和邊。

5. jsp怎樣實現了網頁動態效果的

我個人覺得你可以回答下jsp的原理:間接的回答了網頁動態效果,用jsp技術開發的網頁就具有動態效果,可以和資料庫進行交互.

用戶向伺服器發送請求,才會顯示完整的頁面

  1. 從瀏覽器發送請求打開index.jsp頁面
    2.伺服器得到請求,會將index.jsp翻譯成index_jsp.java
    3.伺服器將index_jsp.java文件編譯成index_jsp.class
    4.伺服器運行index_jsp.class文件。
    5.在瀏覽器上顯示jsp頁面中的內容.

    面試官的問題不一定都需要回答正確完整,能回答80%就很不錯了!

6. 請問jsp頁面裡面如何動態載入圖片

用JS動態設置 <img 的 src

7. jsp中怎樣得到一個動態時序圖,向股票那樣的

創建柱狀圖
1 引入jFreechart的包

2 在web.xml中加入

閱讀全文

與jsp做動圖相關的資料

熱點內容
pc桌面壁紙文件夾 瀏覽:473
微信怎麼添加群 瀏覽:781
40歲男人適合的微信名 瀏覽:925
編程里比例怎麼打 瀏覽:215
蘋果12兩個app如何分屏 瀏覽:592
ps下載完不是壓縮文件 瀏覽:362
電腦中的個人文件包括什麼 瀏覽:572
網路連接一般什麼密碼 瀏覽:199
java定時器quartz實例 瀏覽:259
稻殼excel文件太大怎麼弄 瀏覽:901
文件里的視頻如何保存到相冊 瀏覽:428
手機百度雲文件電腦 瀏覽:957
編程怎麼做到時鍾精準 瀏覽:912
錘子用過的壁紙在哪個文件里 瀏覽:468
qq網站安全性未知訪問不了怎麼辦 瀏覽:270
燕秀怎麼修改編程人名字 瀏覽:789
2012年天之眼導航升級 瀏覽:595
如何安裝視頻文件 瀏覽:315
紅米2A升級miui9 瀏覽:927
如何在表格中加入一行資料庫 瀏覽:421

友情鏈接