<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zhyiwww
    用平實(shí)的筆,記錄編程路上的點(diǎn)點(diǎn)滴滴………
    posts - 536,comments - 394,trackbacks - 0

    1 、 Tomcat 的目錄結(jié)構(gòu)

    目錄

    描述

    /bin

    存放 Windows 平臺(tái)及 Linux 平臺(tái)啟動(dòng)和關(guān)閉 Tomcat 的腳本文件

    /conf

    存放 Tomcat 服務(wù)器的各種配置文件,其中最重要的配置文件是 server.xml

    /server

    包括 3 個(gè)子目錄: Class Lib Webapps

    /server/lib

    存放 Tomcat 服務(wù)器所需的各種 JAR 文件 ( 只有 Tomcat 可以訪問 )

    /server/webapps

    存放 Tomcat 自帶的兩個(gè) Web 應(yīng)用: admin manager

    /common/lib

    存放 Tomcat 服務(wù)器以及所有 Web 應(yīng)用都可以訪問的 JAR 文件

    /share/lib

    存放所有 web 應(yīng)用都可以訪問的 JAR 文件 (Tomcat 不能訪問 )

    /logs

    存放 Tomcat 的日志文件

    /webapps

    當(dāng)發(fā)布 web 應(yīng)用時(shí),默認(rèn)情況下把 web 應(yīng)用文件放于此目錄下

    /work

    Tomcat JSP 生成的 Servlet 放于此目錄下

    注: lib 目錄下都只能接受 JAR 文件,如果類壓縮文件為 ZIP 文件,應(yīng)該將它展開,重新打包為 JAR 文件再拷貝到 lib 目錄下。

    2 、把開放目錄結(jié)構(gòu)的 Web 應(yīng)用打包成 war 文件的方法

    1 )進(jìn)入 helloapp 應(yīng)用的根目錄 <CATALINA_HOME>/webapps/helloapp ;

    2 )把整個(gè) web 應(yīng)用打包為 helloapp.war 文件,命令如下: jar cvf helloapp.war *.* ;(展開: jar xvf helloapp.war );

    3 Servlet 的功能

    1 )創(chuàng)建并返回基于客戶請(qǐng)求的動(dòng)態(tài) html 頁面

    2 )創(chuàng)建可嵌入到現(xiàn)有 html 頁面中的部分 html 頁面( html 片段)

    3 )與其他服務(wù)器資源(如數(shù)據(jù)庫或基于 Java 的應(yīng)用程序)進(jìn)行通訊

    4 )接收多個(gè)客戶機(jī)的輸入,并將結(jié)果廣播到多個(gè)客戶機(jī)上

    5 )根據(jù)客戶請(qǐng)求采用特定的 MIME(Multipurpose Internet Mail Extensions) 類型對(duì)數(shù)據(jù)過濾,例如進(jìn)行圖象格式轉(zhuǎn)換

    4 、 Servlet API 類框圖

    Servlet 的框圖是由兩個(gè) Java 包組成的: javax.servlet javax.servlet.http 。在 javax.servlet 包中定義了所有的 Servlet 類都必須實(shí)現(xiàn)或擴(kuò)展的通用接口和類。在 javax.servlet.http 包中定義了采用 http 協(xié)議通信的 HttpServlet 類。 ?

    servlet_frame.PNG

    5 、 Tomcat 服務(wù)器初次執(zhí)行 JSP 的過程

    ?flow.PNG


    JSP 生成的 Servlet 類實(shí)現(xiàn)了 javax.servlet.jsp.JspPage 接口,該接口擴(kuò)展了 javax.servlet.Servlet 接口。在 javax.servlet.JspPage 接口中定義了代表 JSP 生命周期的方法 JspInit() JspDestory() ,類似 Servlet Init() Destory() 方法。

    6 、 JSP 指令: page 、 include 、 taglib

    page 指令: 可以指定所使用的腳本語言、 JSP 代表的 Servlet 實(shí)現(xiàn)的接口、 Servlet 擴(kuò)展的類以及導(dǎo)入的軟件包。語法: <%@ page 屬性 1=” 1” 屬性 2=” 2” %>

    page 指令屬性表:

    ?

    language

    指定文件所用的腳本語言。目前僅 java 為有效值和默認(rèn)值。該指令作用于整個(gè)文檔。當(dāng)多次使用這一指令時(shí),只有第一次有效。

    <%@ page language=”java”? %>

    method

    指定 Java 程序片段( Scriptlet )所屬的方法的名稱。 Java 程序片段會(huì)成為指定方法的主體。默認(rèn)的方法是 service 方法。當(dāng)多次使用該指令時(shí),只有第一次是有效的。該屬性的有效值包括 Service 、 doGet 、 doPost 等。

    <%@ page method=”doPost”? %>

    import

    指定導(dǎo)入的 Java 軟件包名或類名列表,該列表用逗號(hào)分隔。在 JSP 文件中,可以多次使用該指令來導(dǎo)入不同的軟件包

    <%@ page import=”java.io.*,jav

    a.util.Hashtable”? %>

    content_type

    指定響應(yīng)結(jié)果的 MIME 類型。默認(rèn)的 MIME 類型是 text/html ,默認(rèn)字符編碼為 ISO-8859-1 。當(dāng)多次使用該指令時(shí),只有第一次使用是有效的

    <%@ page content_type=”text/html;

    charset=GB2312” %>

    session=”true/false”

    指定 JSP 頁面是否使用 Session ,默認(rèn)為 true

    <%@ page session=”true” %>

    errorPage=”error_url

    當(dāng)發(fā)生異常時(shí),客戶請(qǐng)求重新定向到哪個(gè)網(wǎng)頁

    <%@ page errorPage=

    ”errorpage.jsp” %>

    isErrorPage=”T/F”

    表示此 JSP 網(wǎng)頁是否為處理異常的網(wǎng)頁

    <%@ page isErrorPage=”true” %>

    include 指令: JSP 可以通過 include 指令來包含其它文件。被包含的文件可以是 JSP 文件、 HTML 文件或文本文件。如果被包含的是 JSP 文件,那么被包含的 JSP 文件中的 Java 程序片段也會(huì)被執(zhí)行。

    include 指令的語法為:

    <%@ include file=”relativeURL” %>

    ?

    7 、 JSP 隱含對(duì)象

    在編寫 JSP 程序時(shí),可以直接使用 Servlet/JSP 容器提供的隱含對(duì)象。使用這些對(duì)象的引用變量時(shí)不需要任何變量聲明。 JSP 中的隱含對(duì)象列表:

    隱含對(duì)象

    ???

    request

    javax.servlet.HttpServletRequest

    response

    javax.servlet.HttpServletResponse

    pageContext

    javax.servlet.jsp.PageContext

    application

    javax.servlet.ServletContext

    out

    javax.servlet.jsp.JspWriter

    config

    javax.servlet.ServletConfig

    page

    java.lang.Object( 相當(dāng)于 Java 中的 this 關(guān)鍵字 )

    session

    javax.servlet.http.HttpSession

    exception

    java.lang.Exception

    8 、裝載并注冊(cè)數(shù)據(jù)庫驅(qū)動(dòng)程序

    // 裝載 JdbcOdbcDriver class

    Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

    // 裝載并注冊(cè) SQLServer Driver

    Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);

    java.sql.DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());

    // 裝載并注冊(cè) OracleDriver

    Class.forName(“oracle.jdbc.driver.OracleDriver”);

    java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

    // 裝載并注冊(cè) MySQLDriver

    Class.forName(“com.mysql.jdbc.Driver”);

    java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver());// 不是必要步驟

    ?

    常用的數(shù)據(jù)庫的 JDBCURL 形式

    ◆如果通過JDBC-ODBC Driver連接數(shù)據(jù)庫,形式如下:

    jdbc:odbc:datasource

    ◆對(duì)于Oracle數(shù)據(jù)庫連接,形式如下:

    jdbc:oracle:thin:@localhost:1521:sid

    ◆對(duì)于SQL Server數(shù)據(jù)庫連接,形式如下:

    jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=BookDB

    ◆對(duì)于MySQL數(shù)據(jù)庫連接,形式如下:

    jdbc:mysql://localhost:3306/BookDB

    中文編碼轉(zhuǎn)換問題

    String dbUrl=”jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=GB2312”

    9 HttpSession 接口

    ?

    ?

    getId()

    返回 session ID

    invalidate()

    使當(dāng)前的 session 失效, servlet 釋放其占用的資源

    setAttriibute(String name,Object object)

    將一對(duì) name/value 屬性保存在 HttpSession 對(duì)象中

    getAttribute(String name)

    根據(jù) name 參數(shù)返回保存在 HttpSession 對(duì)象中的屬性名

    getAttributeNames()

    以數(shù)組的方式返回 HttpSession 對(duì)象中所有的屬性名

    isNew

    判斷是否是新建的 session

    setMaxInactiveinterval()

    設(shè)定一個(gè) session 可以處于不活動(dòng)狀態(tài)的最大時(shí)間間隔,以秒為單位

    getMaxInactiveinterval()

    得到 session 的最大時(shí)間間隔

    10 、一個(gè)標(biāo)準(zhǔn)的 JavaBean 的特征

    1 JavaBean 是一個(gè)公共的 (public) 類;

    2 JavaBean 有一個(gè)不帶參數(shù)的構(gòu)造方法;

    3 JavaBean 通過 setXXX 方法設(shè)置屬性,通過 getXXX 方法獲取屬性。

    11 、 JSP 訪問 JavaBean 的語法

    可以通過程序代碼來訪問 JavaBean ,也可以用特定的 JSP 標(biāo)簽來訪問 JavaBean

    (1) 導(dǎo)入 JavaBean

    如: <%@ page import=”mypack..CounterBean” %>

    (2) 聲明 JavaBean 對(duì)象

    <jsp:useBean id=”myBean” class=”mypack.CounterBean” scope=”session”/>

    注: scope 可選值包括 page 、 request session application ,默認(rèn)為 page

    (3) 訪問 JavaBean 屬性

    JSP 提供了訪問 JavaBean 屬性的標(biāo)簽,如果要將 JavaBean 的某個(gè)屬性輸出到網(wǎng)頁上,可以用 <jsp:getProperty> 標(biāo)簽,如:

    <jsp:getProperty name=”myBean” property=”count”/>

    如果要給 JavaBean 的某個(gè)屬性賦值,可以用 <jsp:setProperty> 標(biāo)簽,如:

    <jsp:setProperty name=”myBean” property=”count” value=”0”/>

    12 、 Tomcat 安全域的類型

    ?

    內(nèi)存域

    MemoryRealm

    在初始化階段,從 XML 文件中讀取安全驗(yàn)證信息,并把它們以一組對(duì)象的形式存放在內(nèi)存中

    JDBC

    JDBCRealm

    通過 JDBC 驅(qū)動(dòng)程序訪問存放在數(shù)據(jù)庫中的安全驗(yàn)證信息

    數(shù)據(jù)源域

    DataSourceRealm

    通過 JNDI 數(shù)據(jù)源訪問存放在數(shù)據(jù)庫中的安全驗(yàn)證信息

    JNDI

    JNDIRealm

    通過 JNDI provider 訪問存放在基于 LDAP 的目錄服務(wù)器中的安全驗(yàn)證信息

    13 、 MVC 設(shè)計(jì)模式

    MVC 模塊

    模型

    代表應(yīng)用程序狀態(tài)和業(yè)務(wù)邏輯

    視圖

    提供可交互式的客戶界面,向客戶顯示模型數(shù)據(jù)

    控制器

    響應(yīng)客戶的請(qǐng)求,根據(jù)客戶的請(qǐng)求來操縱模型,并把模型的響應(yīng)結(jié)果經(jīng)由視圖展現(xiàn)給客戶

    ?

    ?

    JDBC-ODBC 編程的典型步驟

    1 、輸入 java.sql

    在程序的開頭,必須加入下面的代碼:

    Import java.sql.*

    2 、聲明變量

    JDBCDemo.java ,聲明了下面三個(gè)變量, stmt 用于 select 語句, pstmt 用于 update 語句, rs 用于 select 的結(jié)果集。

    Statement stmt;

    PreparedStatement pstmt;

    ResultSet rs;

    3 、加載 jdbc-odbc 橋驅(qū)動(dòng)程序

    Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

    4 、定義 JDBC URL

    URL 中使用的 JDBCDemo 就是在“控制面板”的“ ODBC 數(shù)據(jù)源( 32 位)”中設(shè)置的 ODBC 數(shù)據(jù)源 JDBCDemo 。

    String url=”jdbc:odbc:JDBCDemo”;

    5 、連接數(shù)據(jù)庫

    Connection con=DriverManager.getConnection(url);

    6 、進(jìn)行相應(yīng)的數(shù)據(jù)操作

    如果需要執(zhí)行 select 操作,可以使用 Statement 對(duì)象或 PreparedStatement 對(duì)象,如果需要進(jìn)行 update 操作,就只能使用 PreparedStatement 對(duì)象。

    7 、關(guān)閉數(shù)據(jù)庫連接

    Con.close();

    ?

    源程序: JDBCDemo.java

    /*

    * @(#) JDBCDemo.java

    */

    import java.sql.*;

    ?

    /**

    * 演示 JDBC 操作數(shù)據(jù)庫的各項(xiàng)功能,包括表的 create drop 、 insert 、 update 、 select

    *@versin 1.00 2004/09/05

    *@author spring

    *since jdk1.3

    */

    ?

    public class JDBCDemo

    {

    ?????? public static void main(String args[])

    ?????? {

    ????????????? try{

    ????????????? Statement stmt;

    ????????????? PreparedStatement pstmt;

    ????????????? ResultSet rs;

    ?????????????

    ????????????? // 加載 jdbc-odbc 橋驅(qū)動(dòng)程序

    ????????????? Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    ?????????????

    ????????????? // 定義 JDBC URL

    ????????????? String url="jdbc:odbc:JDBCDemo";

    ?????????????

    ????????????? // 得到與數(shù)據(jù)庫的連接

    ????????????? Connection con=DriverManager.getConnection(url);

    ?????????????

    ????????????? // 顯示 URL 和連接信息

    ????????????? System.out.println("URL:"+url);

    ????????????? System.out.println("Connection:"+con);

    ?????????????

    ????????????? // 得到一個(gè) Statement 對(duì)象

    ????????????? stmt=con.createStatement();

    ?????????????

    ????????????? // 如果表 DemoTable 已經(jīng)存在,則刪除之,否則,拋擲一個(gè)異常

    ????????????? System.out.println("If DemoTable Exist,Delete!");

    ????????????? try{

    ????????????? ???? stmt.executeUpdate("DROP TABLE DEMOTable");

    ????????????? ?? }catch(Exception e){

    ????????????? ?? ? System.out.println(e);

    ????????????? ?? ? System.out.println("Not Delete");

    ????????????? }

    ?????????????

    ????????????? // 在數(shù)據(jù)庫中創(chuàng)建一個(gè)表 DemoTable

    ????????????? stmt.executeUpdate("CREATE TABLE DemoTable(id int,val char(15) not null)");

    ????????????? System.out.println("Table DemoTable created!");

    ?????????????

    ????????????? // 在表中插入一些值

    ????????????? stmt.executeUpdate("insert into DemoTable(id,val) values(1,'one')");

    ????????????? stmt.executeUpdate("insert into DemoTable(id,val) values(2,'two')");

    ????????????? stmt.executeUpdate("insert into DemoTable(id,val) values(3,'three')");

    ????????????? stmt.executeUpdate("insert into DemoTable(id,val) values(4,'four')");

    ????????????? stmt.executeUpdate("insert into DemoTable(id,val) values(5,'five')");

    ?????????????

    ????????????? // 得到另一個(gè) Statement 對(duì)象

    ????????????? stmt=con.createStatement();

    ?????????????

    ????????????? // 查詢數(shù)據(jù)庫中的表 DemoTable ,得到以 ID 排序后的所有記錄,并存儲(chǔ)在 RS

    ????????????? rs=stmt.executeQuery("select * from DemoTable order by id");

    ?????????????

    ????????????? // 顯示表 DemoTable 中的所有記錄

    ????????????? System.out.println("Display all results:");

    ????????????? while(rs.next())

    ????????????? {

    ???????????????????? int theInt=rs.getInt("id");

    ???????????????????? String str=rs.getString("val");

    ???????????????????? System.out.println("id=" + theInt + "val=" + str);

    ????????????? }

    ?????? ??????

    ?????????????

    ????????????? // 創(chuàng)建已準(zhǔn)備好的語句,更新 DemoTable 表中某條記錄 val 字段

    ????????????? // 已準(zhǔn)備好的語句接受兩個(gè)參數(shù)

    ?????????????

    ????????????? /**********************

    ????????????? pstmt=con.preparedStatement("update DemoTable set val=? where id=?");

    ?????????????

    ????????????? // 更改表 DemoTable 中的第 2 條記錄的 val 字段的值

    ????????????? // 填充 update 語句中的 "?", 并執(zhí)行 update 語句

    ????????????? pstmt.setString(1,"Hello!");

    ????????????? pstmt.setInt(2,2);

    ????????????? pstmt.executeUpdate();

    ????????????? System.out.println("Update row number 2:ok.");

    ?????????????

    ?????????????

    ????????????? // 顯示表 DemoTable 中更新后的第 2 條記錄

    ????????????? stmt=con.createStatement();

    ????????????? rs=stmt.executeQuery("select * from DemoTable order by id");

    ????????????? System.out.println("Display row 2:");

    ????????????? if(rs.next() && rs.next())

    ????????????? {

    ???????????????????? int theInt=rs.getInt("id");

    ???????????????????? String str=rs.getString("val");

    ???????????????????? System.out.println("id=" + theInt + "val=" + str);

    ????????????? }

    ?????????????

    ????????????? ***************/

    ?????????????

    ?????????????

    ????????????? // 關(guān)閉與數(shù)據(jù)庫的連接

    ????????????? con.close();

    ?????? }catch(Exception e){?? // 異常處理

    ?????? e.printStackTrace();

    }

    }

    }

    ?

    JSP 的中文環(huán)境

    常見的處理 JSP 的中文的方法有兩種:

    <%@ page contentType=”text/html;charset=gb2312”%>

    <%

    String Hi=” 您好 ”;

    byte[] tmpbyte=Hi.getBytes(“ISO8859_1”);

    Hi=new String(tmpbyte);

    Out.print(Hi);

    %>

    通過簡(jiǎn)單總結(jié),中文處理發(fā)生于以下幾個(gè)地方:

    1 )在 url 附帶中文參數(shù),可以直接讀取。

    例如: <%=request.getParameter(“showword”)%>

    (2) 與數(shù)據(jù)庫有關(guān)的各種 sql 操作,使用 Access 沒有發(fā)生問題。

    ?

    1 JSP 基本語法

    1.1 JSP 語句類型

    JSP 語句主要有以下五種類型:

    編譯器指令 <%@ 指令 %>

    聲明 <%! 預(yù)定義內(nèi)容 %>

    表達(dá)式 <%= 表達(dá)式 %>

    腳本 Scriptlet<% 代碼 %>

    注解 <%-- 注釋內(nèi)容 --%>

    示例:

    <%@ page language=”java”%>

    <html>

    <head>

    <title>Hello,JSP</title>

    </head>

    <body bgcolor=red>

    <%! String strHello=”How are you”;%>

    <h1><%=strHello%></h1>

    <%

    out.println(“This is a sample”);

    %>

    <%--This is a sample of jsp--%>

    </body>

    </html>

    1.2 指令語法

    1.2.1 include 指令

    JSP 中包含一個(gè)靜態(tài)的文件,同時(shí)解析這個(gè)文件中的 JSP 語句。

    語法: <%@ include file=”relativeURL”%>

    屬性: #file=”relativeURL”

    1.2.2 Page 指令

    定義 JSP 文件中的全局屬性

    語法:

    <%@ page

    [language=”java”]

    [extends=”package.class”]

    [import=”{package.class|package.*},….]

    [session=”true|false”]

    [buffer=”none|8kb|sizekb”]

    [autoFlush=”true|false”]

    [isThreadSafe=”true|false”]

    [info=”text”]

    [errorPage=”relativeURL”]

    [contentType=”mimeType[;charset=characterSet]”|”text/html;charset=ISO-8859-1”]

    [isErrorPage=”true|false”]

    %>

    示例:

    <%@ page import=”java.util.*,java.lang.*”%>

    <%@ page buffer=”5kb” autoFlush=”false”%>

    <%@ page errorPage=”error.jsp”%>

    1.2.3 聲明

    JSP 程序中聲明合法的變量和方法

    語法:

    <%! declaration;[daclaration;]+…%>

    示例:

    <%! int=0;%>

    <%! int a,b,c;%>

    <%! Circle a=new Circle(2,0);%>

    1.2.4 表達(dá)式

    包含一個(gè)有效的程序段

    語法:

    <% code fragment%>

    1.3 動(dòng)作語法( Action

    JSP 動(dòng)作語法應(yīng)用 XML 語法結(jié)構(gòu)來控制 Servlet 引擎的行為,你可以動(dòng)態(tài)地插入文件、重用 Java Beans 控件、導(dǎo)向另一個(gè)頁面或產(chǎn)生 Java Html 插件。可用的動(dòng)作有:

    jsp:include :在頁面得到請(qǐng)求時(shí)包含一個(gè)文件;

    jsp:useBean :使用 JavaBean 控件;

    jsp:setProperty :設(shè)置 JavaBean 的屬性;

    jsp:getProperty :將 JavaBean 的屬性插入到輸出中;

    jsp:forward :引導(dǎo)請(qǐng)求者進(jìn)入新的頁面

    jsp:plugin

    1.3.1 jsp:include 動(dòng)作

    這個(gè)動(dòng)作讓你在頁面生成時(shí)插入文件。

    語法:

    <jsp:include page=”relativeURL” flush=”true”/>

    1.3.2 jsp:useBean 動(dòng)作

    這個(gè)動(dòng)作讓你裝入這個(gè) JSP 頁中要用到的 JavaBean ,它讓你能夠充分應(yīng)用 java 的重用性。

    語法:

    <jsp:useBean id=”name” class=”package.class”/>

    1.3.3 jsp:setProperty 動(dòng)作

    jsp:setProperty 設(shè)置所要應(yīng)用的 Bean 的屬性值,你可以在兩種情況下應(yīng)用此動(dòng)作。

    1 、用在 jsp:useBean 之后,表示如下:

    <jsp:useBean id=”myName”…/>

    <jsp:setProperty name=”myName” property=someProperty”…/>

    在這種情況下,此 jsp:setProperty 動(dòng)作不管是新的例示還是原有的 Bean 對(duì)象,都會(huì)執(zhí)行。

    2 、用在 jsp:useBean 實(shí)體之內(nèi),表示如下:

    <jsp:useBean id=”myName”…>

    <jsp:setProperty name=”myName” property=”someProperty”…/>

    </jsp:useBean>

    ?

    ?

    JDBC API 最重要的接口是:

    * java.sql.DriverManager 處理驅(qū)動(dòng)的調(diào)入并且對(duì)產(chǎn)生新的數(shù)據(jù)庫連接提供支持。

    * java.sql.Connection 代表對(duì)特定數(shù)據(jù)庫的連接。

    * java.sql.Statement  代表一個(gè)特定的容器,來對(duì)一個(gè)特定的數(shù)據(jù)庫執(zhí)行 SQL 語句。

    * java.sql.ResultSet  控制對(duì)一個(gè)特定語句的行數(shù)據(jù)的存取。

    其中 java.sql.Statement 又有兩個(gè)子類型:

    1. java.sql.PreparedStatement  用于執(zhí)行預(yù)編譯的 SQL 語句。

    2. java.sql.CallableStatement  用于執(zhí)行對(duì)一個(gè)數(shù)據(jù)庫內(nèi)嵌過程的調(diào)用。

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?



    |----------------------------------------------------------------------------------------|
                               版權(quán)聲明  版權(quán)所有 @zhyiwww
                引用請(qǐng)注明來源 http://www.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2006-05-10 11:04 zhyiwww 閱讀(1519) 評(píng)論(3)  編輯  收藏 所屬分類: j2ee

    FeedBack:
    # re: JSP資料整理--培訓(xùn)資料
    2006-10-31 11:09 | inlife.cn
    頂一個(gè)。好詳細(xì)啊。  回復(fù)  更多評(píng)論
      
    # re: JSP資料整理--培訓(xùn)資料
    2006-12-09 00:56 | batxut
    強(qiáng),值得收藏,在我的Blog作個(gè)鏈接到這里ミ^ō^ミ  回復(fù)  更多評(píng)論
      
    # re: JSP資料整理--培訓(xùn)資料
    2006-12-09 00:58 | batxut
    oh,my god!我的主頁Blog填寫錯(cuò)了,再提交一個(gè)?。?nbsp; 回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 爱情岛亚洲论坛在线观看| 黄色网站软件app在线观看免费| 免费成人高清在线视频| 国产免费观看a大片的网站| 亚洲精品在线免费观看视频| 一级做a爰片久久毛片免费看| 免费无码又爽又刺激聊天APP| 亚洲av无码一区二区三区网站| 国产成人 亚洲欧洲| 在线观看免费高清视频| 亚洲网址在线观看你懂的| 一级做a爰性色毛片免费| 成年女人永久免费观看片| 亚洲午夜精品在线| 日本免费一区二区久久人人澡| 亚洲国产精品综合久久一线| 亚洲色中文字幕在线播放| 中文字幕无码亚洲欧洲日韩| 日本免费一区二区三区四区五六区 | 久久天天躁狠狠躁夜夜免费观看| 亚洲av无码乱码国产精品| 一个人看的hd免费视频| 国产成人免费全部网站| 亚洲精品无码久久久久秋霞| 一级毛片免费播放试看60分钟| 韩国日本好看电影免费看| 97久久国产亚洲精品超碰热| 91久久精品国产免费直播| 亚洲男人天堂av| 永久免费av无码网站yy| 国内精品久久久久久久亚洲 | 国产美女视频免费观看的网站 | 免费av一区二区三区| 亚洲乱码无码永久不卡在线| 一级毛片aa高清免费观看| 亚洲国产人成精品| 免费VA在线观看无码| 免费大黄网站在线观看| 羞羞漫画在线成人漫画阅读免费| 大学生a级毛片免费观看 | 国产亚洲综合色就色|