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

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

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

    Love Pisces

    It's not your aptitude but your attitude that determines your altitude!
    posts - 2, comments - 43, trackbacks - 0, articles - 9

    第1章 Java Web編程技術(shù)

    Posted on 2007-05-18 21:11 筱筱 閱讀(443) 評論(0)  編輯  收藏 所屬分類: Struts學習日記

    1.1 Java Web編程的主要組件技術(shù)
             一個完整的Java Web應(yīng)用軟件通常是由多種組件技術(shù)構(gòu)成的,一般由表示層組件、控制層組件、業(yè)務(wù)邏輯層組件及數(shù)據(jù)訪問層組件組成。表示層組件通常由HTML和JSP頁面構(gòu)建,控制層組件一般是Servlet,業(yè)務(wù)邏輯層組件是JavaBeans或EJB,數(shù)據(jù)訪問層組件是JDBC,Hibernate或CMP。此外,Java Web應(yīng)用的各個組件需要在XML格式的配置文件中進行聲明,然后打包,部署Java Web服務(wù)器(例如Tomcat)中運行。
    1.1.1 Servlet
             Servlet(Java服務(wù)器小程序)是由Java編寫的服務(wù)器端程序,是由服務(wù)器端調(diào)用和執(zhí)行的、按照Servlet自身規(guī)范編寫的Java類。
             Servlet可以處理客戶端傳來的HTTP請求,并返回一個響應(yīng)。它是一個Java類,具有可移植、功能強大、安全、集成、模塊化和可擴展性好等特點。

    例1-1:
    package chap1;
    import javax.servlet.*;
    import java.io.*;
    public class Servlet extends GenericServlet{
       public void service(ServletRequest request,ServletResponse response)throws IOException
       {
            response.setContentType("text/html");
            PrintWriter out=response.getWriter();
            out.println("<html>");
            out.println("<body>");
            out.println("<h1>Hello World</h1>");
            out.println("</body>");
            out.println("</html>");
        }
    }
             Servlet需要部署在Web容器中,它的生命周期由Web容器管理,可以分為以下幾個階段:
             1. 裝載Servlet:這項操作一般是動態(tài)執(zhí)行的。有些服務(wù)提供了相應(yīng)的管理功能,可以在啟動的時候就裝載Servlet,并能夠初始化特定的Servlet。
             2.創(chuàng)建一個Servlet實例。
             3.調(diào)用Servlet的init()方法。
             4.服務(wù):如果Web容器接收到對此Servlet的請求,那么它調(diào)用Servlet的service()方法。
             5.銷毀:銷毀實例,通過調(diào)用Servlet的destroy()方法來銷毀Servlet。
     
             Java對Servlet的支持是通過javax.servlet和javax.servlet.http兩個軟件實現(xiàn)的,其中javax.servlet.http是一個子軟件包。
              javax.servlet軟件包包含Servlet常用的接口和類,如GenericServlet,ServletConfig,ServletRequest,ServletResponse和RequestDispatcher等。
              javax.servlet.Servlet接口提供了創(chuàng)建Servlet的一般框架。Servlet可直接實現(xiàn)此接口,或者間接地通過擴展javax.servlet.GenericServlet類或javax.servlet.http.HttpServlet類來實現(xiàn)此接口。javax.servlet.GenericServlet類可用于創(chuàng)建與任何協(xié)議一起使用的Servlet.
              而javax.servlet.http軟件包除了繼承以上的接口和類外,還包含了一些針對HTTP協(xié)議的方法、特殊請求和響應(yīng)對象,如HttpServlet,HttpServletRequest,HttpServletResponse,HttpSession和HttpDispatcher等。

             1. HttpServlet類提供了處理不同HTTP請求類型(有GET,POSTH和PUT等)的方法,其中兩種最常見的HTTP請求類型是GET和POST,它們分別是由doGet()和doPost()方法進行處理的:

                protected void doGet(HttpServletRequest request,HttpServletResponse response)
                      throws ServletException,java.io.IOException;
                protected void doPost(HttpServletRequest request,HttpServletResponse response)
                      throws ServletException,java.io.IOException;

             2. HttpServletRequest接口提供了處理客戶請求的方法。使用這些方法,Servlet可從客戶頁面窗體中取得數(shù)據(jù)。例如,從客戶頁面窗體取得用戶名(username)的方法如下:

                HttpServletRequest request;
                String name=request.getParameter("username");

             3. HttpServletResponse接口提供了以HTML頁面形式把請求發(fā)送給客戶的方法,主要方法有setContentType(),sendRedirect()等。例如,把請求轉(zhuǎn)發(fā)給下一個頁面next.jsp的實現(xiàn)方法如下:

                HttpServletResponse response;
                respinse.sendRedirect("next.jsp");

             4. HttpSession接口用來記錄當前Servlet中的用戶會話。例如:在Web站點上注冊的每個用戶自動與HttpSession對象關(guān)聯(lián)。Servlet可用此對象來存儲關(guān)于用戶會話的信息。可使用HttpSession接口的putValue()和getValue()等方法把數(shù)據(jù)寸入HttpSession對象中,或從該對象中取出數(shù)據(jù)。通過HttpServletRequest對象的getSession()方法可生成一個HttpSession對象,如下面的代碼所示:

                HttpServletRequest request;
                HttpSession session=request.getSession(true);

             5. RequestDispatcher接口可以把Servlet的請求提交或委派給另一個資源,如Servlet,HTML文件或JSP頁面。在這種情況下,源Servlet進行同樣處理并把請求委派給另一個Servlet。RequestDispatcher接口封裝指向特定資源(Servlet,HTML文件或JSP頁面)的URL。用此接口的forward(HttpServletRequest request,HttpServletResponse response)方法委派任務(wù)到特定資源。RequestDispatcher對象可通過HttpServletRequest對象的getRequestDispatcher()方法生成。例如:

                RequestDispatcher td=request.getRequestDispatcher("reply.jsp");
                rd.forward(request,response);

    例1-2:
    MyJsp.jsp:
    <FORM name="form1" method="get" action="MyFirstServlet">

    MyFirstServlet.java:
    package chap1;
    import javax.servlet.http.*;
    import javax.servlet.*;
    import java.io.*;
    import java.util.*;

    public class MyFirstServlet extends HttpServlet{
          public void doPost(HttpServletRequest request,HttpServletResponse response){
          String name=request.getParameter("username");
          RequestDispatcher rd;
          try{
             try{
              if(name.equals("Tom")){
               HttpSession session=request.getSession(true);
               session.setAttribute("nm",name);
               response.sendRedirect("servlet/reply.jsp");
              }
              else{
               rd=request.getRequestDispatcher("servlet/error.jsp");
               rd.forward(request,response);     
               }
             }catch(ServletException e){System.out.println(e);}
            }catch(IOException e){System.out.println(e);}
        }
       public void doGet(HttpServletRequest request,HttpServletResponse response){
           doPost(request,response);
       }
    }
    在Java Web應(yīng)用程序中,Servlet常用做控制器組件。當Servlet部署到Web服務(wù)器中時,需要Web配置文件Web.xml中進行聲明。
    <servlet>
    <servlet-name>MyFirstServlet</servlet-name>
    <servlet-class>chap1.MyFirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>MyFirstServlet</servlet-name>
    <url-pattern>/MyFirstServlet</url-pattern>
    </servlet-mapping>

     

    主站蜘蛛池模板: 粉色视频成年免费人15次| 97久久精品亚洲中文字幕无码 | 亚洲精品中文字幕乱码三区| 精品久久久久久亚洲综合网| 麻豆成人精品国产免费| 亚洲精品无码久久久久久| 成年性午夜免费视频网站不卡| 亚洲一级视频在线观看| 成人福利免费视频| 亚洲中文字幕一二三四区苍井空| 在线观看特色大片免费视频 | 亚洲精品tv久久久久| 人人爽人人爽人人片A免费| 亚洲A丁香五香天堂网| 国产日韩久久免费影院| 久久精品国产96精品亚洲| 96免费精品视频在线观看| 国产精品亚洲四区在线观看 | 亚洲伦理一区二区| 1000部无遮挡拍拍拍免费视频观看 | 国产亚洲成在线播放va| 亚洲一级特黄无码片| 日本卡1卡2卡三卡免费| 亚洲精品亚洲人成在线麻豆| 久久久久免费看黄A片APP | 亚洲av最新在线观看网址| 亚洲精品成人区在线观看| 97人妻精品全国免费视频| 亚洲精品美女久久久久9999| 成人毛片免费观看视频在线| 麻豆一区二区三区蜜桃免费| 亚洲va久久久噜噜噜久久男同| 永久免费av无码网站韩国毛片| 国产成人久久精品亚洲小说| 亚洲国产精彩中文乱码AV| 免费无码精品黄AV电影| 国产精品免费大片一区二区| 亚洲精品综合久久中文字幕| 国产又长又粗又爽免费视频 | 成人免费无码大片a毛片软件| 免费看美女午夜大片|