SlideShare una empresa de Scribd logo
1 de 49
CHƯƠNG 6:
    LẬP TRÌNH WEB VỚI CÁC
     CÔNG NGHỆ PHỔ BIẾN
6.1 Giới thiệu Servlet/JSP
6.2 Lập trình web với Servlet
6.3 Lập trình web với JSP
6.4 Giới thiệu ASP
6.5 Lập trình web với ASP

                Lập trình mạng – Chương   1
6.1 Giới thiệu Servlet/JSP
• Servlet là một ứng dụng (class) Java chạy
  trên nền web server.
• Cơ chế hoạt động theo mô hình CGI mở
  rộng.
• Chương trình phải được dịch ra ở dạng
  byte-code(.class), khai báo với web
  server. Web server phải hỗ trợ Java.
• Phải extends class HttpServlet. Không có
  method main.


              Lập trình mạng – Chương   2
6.1 Giới thiệu Servlet/JSP
• Cần có package servlet.jar để biên dịch
  (http://java.sun.com/products/servlet/)
• Các server hiện hỗ trợ Servlet:
   – Apache Tomcat (http://jakarta.apache.org)
   – Sun’s Java Web Server, free, hiện không cho
     download (http://wwws.sun.com/software/jwebserver/)
   – New Atlanta’s ServletExec, tích hợp ServletEngine
     vào các web server(http://newatlanta.com)
   – http://www.macromedia.com/software/jrun/trial/
   –…
• Tham khảo các tài liệu về Servlet:
  http://java.sun.com/products/servlet/docs.html




                       Lập trình mạng – Chương        3
6.1 Giới thiệu Servlet/JSP
• Cấu trúc đơn giản của một Servlet:
  import java.io.*;
  import java.servlet.*;
  import java.servlet.http.*;
  public class Sample extends HttpServlet{
    public doGet(HttpServletRequest request,
                     HttpServletResponse response)
    throws ServletException,IOException{
        //dùng đối tượng “request” để đọc dữ liệu từ client
       //đối tượng “response” để xuất dữ liệu cho client
       PrintWriter out = response.getWriter();
      //dùng đối tượng out để ghi (method print) dữ liệu
    cho client
    }
  }
                   Lập trình mạng – Chương   4
6.1 Giới thiệu Servlet/JSP
• Biên dịch như một class Java.
• File *.class dịch được phải đặt vào đúng thư
  mục quy định sẵn của web server.
  – Tomcat: $/webpages/WEB-INF/classes
  – JWS: $/servlets
• Cấu hình cho web server đối với mỗi servlet:
  – Tomcat: hiệu chỉnh file web.xml trong thư mục
    $/webpages/WEB-INF theo DTD
    http://java.sun.com/j2ee/dtds/web-app_2_2.dtd
  – JWS: Cấu hình bằng web-based tool được cung cấp.



                 Lập trình mạng – Chương   5
6.1 Giới thiệu Servlet/JSP
• Cơ chế hoạt động của một servlet:
  – Web server nhận yêu cầu triệu gọi servlet từ
    client.
    • Nếu servlet chạy lần đầu, web server load file
      servlet tương ứng, khởi tạo các thông số bằng qua
      method init()
    • Nếu servlet đã được khởi tạo, tạo một thread để
      xử lý yêu cầu.
  – Gọi methods doXxx() để xử lý các request
    tương ứng theo giao thức HTTP.
    • doGet(..) cho HTTP GET, doPost cho HTTP POST



                 Lập trình mạng – Chương   6
6.2 Lập trình web với Servlet
• Lấy dữ liệu từ web client gởi đến bằng servlet:
  – Dùng đối tượng của class HttpServletRequest
  – Các methods để lấy thông số:
     • getParameter(“para-name”)
     • getParameterValues(“para-name”)
  String username= request.getParameter(“username”);
  String[] choice =
    request.getParameterValues(“comments”);
  – Dùng đối tượng của class HttpServletRequest để lấy
    các thông tin HTTP header




                   Lập trình mạng – Chương   7
6.2 Lập trình web với Servlet
• Ví dụ lấy tất cả các thông số từ client
   Enumeration parameter_names =
     request.getParameterNames();
   while(parameter_names.hasMoreElements()){
     String para = parameter_names.nextElement();
     out.print(para + “ = ”);
     String[] paraValues = getParameterValues(para);
     if(paraValues.lenght()==1){
        out.println(paraValues[0]);
     }else{
        for(int i = 0, i< paraValues.lenght(),i++){
             out.print(paraValues[i]+ “-”);
        }
     }
   }




                   Lập trình mạng – Chương   8
6.2 Lập trình web với Servlet
• Lấy các thông số HTTP request header: class
  HttpServletRequest cung cấp các method để lấy
  các thông số request header.
  – String getHeader(header-name): lấy nội dung của
    header-name
  – Enumeration getHeaderNames(): lấy tất cả các
    header-name.
  – Một số method điển hình:
     •   Cookie[] getCookies(): dãy Cookie từ client
     •   int getContentLength(): trả giá trị Content-Length
     •   int getContentType(): trả giá trị Content-Type
     •   int getRemoteUser(): giá trị username nếu có authenticate




                      Lập trình mạng – Chương       9
6.2 Lập trình web với Servlet
• Lấy các thông số HTTP request header:
  – Lấy các giá trị của biến môi trường CGI:
     •   QUERY_STRING: getQueryString()
     •   REMOTE_ADDR: getRemoteAddr()
     •   REMOTE_HOST: getRemoteHost()
     •   REQUEST_METHOD: getMethod()
     •   PATH_INFO: getPathInfo()
     •   SCRIPT_NAME: getServletPath()
     •   SERVER_NAME: getServerName()
     •   SERVER_PORT: getServerPort()
     •   HTTP_XXX_YYY: getHeader(“Xxx-Yyy”)
     •   …




                    Lập trình mạng – Chương   10
6.2 Lập trình web với Servlet
• Gởi dữ liệu cho web client: dùng đối tượng của
  class HttpServletResponse:
  – Tạo đối tượng PrintWriter để ghi dữ liệu gởi
     • PrintWriter out = response.getWriter();
  – Xử lý các mã HTTP trả về với các method của class
    HttpServletResponse:
     • void setStatus(int statusCode): gởi các mã response
     • void sendError(int errorCode,String msg): gởi mã lỗi theo
       giao thức HTTP và message
     • void sendRedirect(String URL): chuyển đến một trang URL
       khác
     • Các mã có thể theo giao thức HTTP hoặc dùng các hằng số
       trong class HttpServletResponse.




                     Lập trình mạng – Chương     11
6.2 Lập trình web với Servlet
• Xử lý Cookie với web browser:
  – Chức năng Cookie
    • Kết hợp với web browser để lưu các thông số cần
      thiết.
    • Thông tin có thể dùng để thiết lập phiên làm
      việc(session) trong các ứng dụng thương mại điện
      tử(e-commerce).
    • Lưu trữ username, password
    • Thông tin để customize web site cho user hay
      dùng cho cơ chế personalization
    •…




                Lập trình mạng – Chương   12
6.2 Lập trình web với Servlet
• Ghi thông tin Cookie lên máy client:
  – Thông tin được truyền đi trong field Set-
    Cookie HTTP header
  – Dùng method addCookie(Cookie cookie) của
    class HttpServletResponse.
  – Các thuộc tính quan trọng trong class Cookie:
     • Cookie name: setName(String name) – getName()
     • Cookie value: setValue(String value) – getValue()
     • Max Age: setMaxAge(int seconds) – getMaxAge()




                  Lập trình mạng – Chương   13
6.2 Lập trình web với Servlet
• Ví dụ:
  String user=“”,pass=“”;
  Cookie[] cookies = request.getCookies();
  if(cookies.length==0){
      user = request.getParameter(“username”);
      pass = request.getParameter(“password”);
      Cookie name_cookie = new Cookie(“username”,user);
      response.addCookie(name_cookie);
      Cookie pass_cookie = new Cookie(“password”,pass);
      response.addCookie(pass_cookie);
  }else{
      for(int i=0;i<cookies.length;i++){
        Cookie cookie = cookies[i];
        if(cookie.getName().equals(“username”)) user=cookie.getValue();
        if(cookie.getName().equals(“password”)) pass=cookie.getValue();
      }
  }




                        Lập trình mạng – Chương          14
6.2 Lập trình web với Servlet
• Lưu thông tin về phiên làm việc của user: class
  HttpSession.
  – Có thể dùng để lưu bất kỳ đối tượng nào.
  – Đối tượng của class HttpSession được trả về từ
    method getSession() của class HttpServletRequest.
  – Các method thường sử dụng:
     •   Object getValue(String name) [2.2: getAttribute]
     •   void putValue(String name,Object object) [2.2: putAttribute]
     •   void removeValue(String name) [2.2: removeAttribute]
     •   String[] getValueNames() [Enumeration getAttributeNames()]
     •   String getId()
     •   void setMaxInactiveInterval(int seconds)




                      Lập trình mạng – Chương       15
6.2 Lập trình web với Servlet
• Ví dụ lưu ShoppingCart vào session
  HttpSession session = request.getSession(true);
  ShoppingCart cart =
     (ShoppingCart)session.getValue(“ShoppingCart”);
  if(cart==null){
     cart = new ShoppingCart();
     session.putValue(“ShoppingCart”,cart);
  }
  //process(cart)




                  Lập trình mạng – Chương   16
6.2 Lập trình web với Servlet
• Xử lý kết nối database
  – Dùng JDBC (Java DataBase Connectivity) để
    kết nối và thao tác với database.
  – Quy trình xử lý:
    •   Tạo JDBC driver và URL database
    •   Thiết lập connection đến URL database
    •   Tạo đối tượng statement
    •   Thực thi các câu lệnh SQL
    •   Xử lý kết quả thực thi
    •   Đóng kết nối đến database.




                  Lập trình mạng – Chương   17
6.2 Lập trình web với Servlet
• Kết nối đến database thông qua OBDC trên Windows:
   – Tạo DataSourceName trong ODBC
      Connection con = null; Statement stmt = null; ResultSet rs = null;
      String driver = “sun.jdbc.odbc.JdbcOdbcDriver”;
      String databaseURL = “jdbc:odbc:DataSourceName”;
      try{
         Class.forName(driver);
         con = DriverManager.getConnection(databaseURL);
         stmt = con.createStatement()
         rs = stmt.executeQuery(strSQL);
         while(rs.next()){
           out.println(rs.getString[1]+”-” rs.getInt(“quantity”));//…
         }
         con.close();
      }cacth(SQLException se){ con.close(); }




                        Lập trình mạng – Chương           18
6.2 Lập trình web với Servlet
•   Có thể kết nối database server bất kỳ có driver hỗ trợ.
     – Kết nối đến Oracle Database Server:
     driver=“oracle.jdbc.driver.OracleDriver”
     databaseURL =“jdbc:oracle:thin@localhost:1521:”+dbName
     con = DriverManager.getConnection(databaseURL,user,password)
     – Kết nối đến Sysbase:
     driver=“com.sysbase.jdbc.SysDriver”
     databaseURL = “jdbc:sysbase:Tds:localhost:1521?
        SERVICENAME=“+dbName
     con = DriverManager.getConnection(databaseURL,user,password)




                            Lập trình mạng – Chương           19
6.2 Lập trình web với Servlet
• Dùng Prepared Statements trong các câu lệnh
  thay đổi dữ liệu:
  String preSQLString =
  “UPDATE students SET score = ? WHERE ID=?”;
  PreparedStatement pre_stmt=
     connection.prepareStatement(preSQLString);
  float[] scores = getScores();
  String[] studentIDs = getStudentIDs();
  for(int i=0;i< studentIDs.length;i++){
      pre_stmt.setFloat(1,scores[i]);
      pre_stmt.setString(2, studentIDs[i]);
      pre_stmt.execute();
  }




                    Lập trình mạng – Chương       20
6.2 Lập trình web với Servlet
• Dùng cơ chế Connection Pooling
   – Tạo một dãy các Connection sẵn sàng.
   – Dùng cơ chế thread và đồng bộ để chia xẻ các Connection.
      public synchronized Connection getConnection() throws
        SQLException{
        if(!availableConnections.isEmpty()){
           Connection con = availableConnections.lastElement();
         availableConnections.removeElementAt(
                availableConnections.size()-1);
          busyConnections.addElement(con);
           return con;
        }else{
           //…
        }
      }




                       Lập trình mạng – Chương          21
6.3 Lập trình web với JSP
• JSP (Java Server Pages) là một trang
  HTML xen các đoạn mã Java.
• Trang JSP sẽ được web server biên dịch
  theo thành bytecode, cơ chế hoạt động
  tương tự như Servlet.
• Được tạo sẵn các đối tượng của các class
  HttpServletRequest và
  HttpServletResponse để xử lý giao tiếp
  với web client.



              Lập trình mạng – Chương   22
6.3 Lập trình web với JSP
• Các đoạn mã Java trong trang JSP được đặt
  trong tag: <% %>
   –   Giá trị biểu thức: <%= biểu thức %>
   –   Khai báo các biến <%! [type variable;]+ %>
   –   Java code <% Java code %>
   –   Chú thích <%-- comments --%>
• Các khai báo chỉ thị (derective):
   –   <%@ page import=“[package][,package]*” %>
   –   <%@ page isThreadSafe=“{true|false}” %>
   –   <%@ page session=“{true|false}” %>
   –   <%@ include file=“filename” %>




                     Lập trình mạng – Chương   23
6.3 Lập trình web với JSP
Ví dụ trang JSP
<html>
<body bgcolor="white">
<h1> Request Information </h1>
<font size="4">
JSP Request Method: <jsp:expr> request.getMethod() </jsp:expr>
<br>
Request URI: <jsp:expr> request.getRequestURI() </jsp:expr>
<br>
Request Protocol: <jsp:expr> request.getProtocol() </jsp:expr>
<br>
Servlet path: <jsp:expr> request.getServletPath() </jsp:expr>
<br>
Path info: <jsp:expr> request.getPathInfo() </jsp:expr>
<br>
Path translated: <%= request.getPathTranslated() %>
…




                            Lập trình mạng – Chương              24
6.3 Lập trình web với JSP
• Các đối tượng được xây dựng sẵn trong
  một trang JSP:
  – request: đối tượng class HttpServletRequest
  – response: đối tượng class HttpServletResponse
  – out: đối tượng class PrintWriter
  – session: đối tượng class HttpSession tạo ra từ
    method getSession() của đối tượng request
  – application: đối tượng class ServletContext
  – config: đối tượng class ServletConfig




                  Lập trình mạng – Chương   25
6.4 Giới thiệu ASP
• ASP là một trang HTML có chứa các mã
  script (VBScript hay JavaScript). Các
  script này có thể:
  – Lấy thông tin từ user.
  – Sinh nội dung động.
  – Thao tác với database.
  –…
• Trang ASP được chạy trên web-server hỗ
  trợ (server-side)



               Lập trình mạng – Chương   26
6.4 Giới thiệu ASP
• Các công cụ:
  – Soạn thảo :
    • Có thể dùng trình soạn thảo văn bản text bất kỳ.
    • Các công cụ trực quan : Ms. Visual InterDev, Ms.
      FrontPage, Macromedia Dreamweaver…
  – Web server:
    •   Win9x : Personal Web Server
    •   Win NT/2000 : Internet Information Services.
    •   Chili!Soft : http://www.ChiliSoft.com (UNIX support)
    •   HalcyonSoft : http://www.halcyonsoft.com




                   Lập trình mạng – Chương   27
6.4 Giới thiệu ASP
• Thêm script xử lý vào trang ASP:
  – Đặt mã trong cặp dấu : <%...%>
     • Ví dụ : <HTML><BODY>
                <% REM Hello World ! ASP %>
                </BODY></HTML>
  – Dùng tag SCRIPT :
     • <SCRIPT RUNAT=“SERVER”>….</SCRIPT>
     • Ví dụ : <HTML><BODY>
                <SCRIPT RUNAT=“SERVER”> REM Hello World
                </SCRIPT>
                </BODY></HTML>




                   Lập trình mạng – Chương    28
6.5 Lập trình web với ASP
• Đối tượng xử lý request sẵn có của
  ASP: Request.
  – Lấy thông tin người dùng nhập từ Form:
    • Request.Form(“field_name”)
    • Request.Form(index)
  – Một số field đặc biệt : checkbox, ratio,
    các field cùng tên…




               Lập trình mạng – Chương   29
6.5 Lập trình web với ASP
• Đối tượng xử lý response sẵn có
  của ASP: Response
 – Các phương thức chính:
   • Reponse.Write(“String”)
   • Reponse.Redirect(“URL”)




             Lập trình mạng – Chương   30
6.5 Lập trình web với ASP
• Đối tượng Application:
  – Quản lý thông tin về ứng dụng. Có thể dùng
    để lưu trữ dữ liệu, đối tượng.
• Đối tượng Session:
  – Quản lý thông tin về phiên làm việc(session),
    có thể lưu dữ liệu, đối tượng của một session
• Đố tượng Server:
  – Đặt các thuộc tính, tạo đối tượng mới…




                Lập trình mạng – Chương   31
6.5 Lập trình web với ASP
• Thao tác database: có thể dùng ADO để thao
  tác.
• Ví dụ về đọc dữ liệu từ database
  Dim objRecordset
  Set objRecordset =
    Server.CreateObject(“ADODB.Recordset”)
  objRecordset.Open “table-name”, “DSN=dsn”
  Do While NOT objRecordset.EOF
    Response.Write objRecordset(“field-name”)
    objRecordset.MoveNext
  Loop



                 Lập trình mạng – Chương   32
6.5 Lập trình web với ASP
• Đọc dữ liệu bằng câu lệnh SQL:
  strSQL = “Select * FROM table WHERE ….”
  objRecordset.Open strSQL, “DSN=dsn”
• Dùng in dữ liệu theo dạng bảng, danh
  sách, listbox…
• Có thể dùng cách này để hiện thực việc
  tìm kiếm.




              Lập trình mạng – Chương   33
6.5 Lập trình web với ASP
• Thêm mới record:
  Set obj-Recordset-name =
 Server.CreateObject(“ADODB.Recordset”)
  objRecordset-name.Open “table-name”, “DSN=dsn”, _
    adOpenDynamic, adLockOptimistic
  obj-Recordset-name.AddNew
  obj-Recordset-name.Fields(“field-name”) = …
  obj-Recordset-name.Update
 ‘….
  obj-Recordset-name.Close



                Lập trình mạng – Chương   34
6.5 Lập trình web với ASP
• Cập nhật thông tin trong record:
  strSQLUpdate = “UPDATE table SET field1=…,
    field2=… WHERE …”
  objRecordset. Excute strSQLUpdate




               Lập trình mạng – Chương   35
LẬP TRÌNH WEB VỚI PHP
•   Giới thiệu về PHP
•   Truy cập biến form
•   Quản lý session, cookie
•   Truy xuất cơ sở dữ liệu
•   Một số chức năng khác (tham khảo)




                Lập trình mạng – Chương   36
Giới thiệu về PHP
• Là một ngôn ngữ lập trình ứng dụng web
• Mã lệnh PHP được nhúng vào trang
  HTML tương tự JSP hay ASP
• Hoạt động theo cơ chế thông dịch với
  PHP engine tích hợp vào web server.
  PHP engine hiện tại được hỗ trợ trên
  nhiều loại web server (trên các hệ điều
  hành khác nhau) => PHP có tính portable
  cao
• Các web server phổ biến có thể cài đặt
  PHP engine: IIS, Apache. Apache và PHP
  thường có sẵn trong Linux
              Lập trình mạng – Chương   37
Giới thiệu về PHP
• Cài đặt PHP trên Windows
  – Cài đặt PHP lên máy, có thể download từ:
    http://www.php.net/, …
  – Cấu hình một số thông số cần thiết trong file
    $Windows/php.ini:
    •   error_log = {filename}
    •   post_max_size = 8M
    •   file_uploads = {On|Off}
    •   upload_tmp_dir = {directory}
    •   session.save_path = {directory}
    •   session.auto_start = {0|1}

                   Lập trình mạng – Chương   38
Giới thiệu về PHP
• Cấu hình PHP
  trên IIS
  – Chọn
    Properties của
    web site
  – Cấu hình
    tương tự hình
    bên




                     Lập trình mạng – Chương   39
Giới thiệu về PHP
• Ví dụ một trang PHP đơn giản
  <html> <head>
  <title> PHP Hello World!
  </title></head>
  <body>
  <?
   echo "Welcome to PHP";
  ?>
  </boby>
  </html>

              Lập trình mạng – Chương   40
Giới thiệu về PHP
• Cú pháp PHP tương tự C và Java
• Được viết chèn vào mã HTML theo các
  dạng:
  – <? //commands ?>
  – <?php # commands ?>
  – <script language='php‘>
    /* commands */
    </script>
  – <% # commands %>
• Tên biến trong PHP được đặt sau dấu $
                Lập trình mạng – Chương   41
Truy xuất biến Form
• Dùng chính tên biến đã đặt cho FORM, ví
  dụ file doLogin.php:
  From login.html <br>
  <?php
  echo " Today is: ". date();
  echo " Server:".$Server. " <br> ";
  echo " Username:$Username". "<br>";
  ?>


              Lập trình mạng – Chương   42
Xây dựng hàm và sử dụng lại mã
• Chèn một trang khác vào PHP:
  – require(filename);
• Sử dụng lại mã:
  – include(filename);
• Có thể viết hàm trong trang PHP như khái
  niệm của lập trình cấu trúc
 function check($user, $pass, &$result) {
 #các lệnh thực thi hoặc gọi các hàm khác
 }
 check($username,$password,$result);
 if($result==1){ /*…..*/ }

                  Lập trình mạng – Chương   43
Xây dựng hàm và sử dụng lại mã
• Có thể viết mã PHP theo lập trình hướng
  đối tượng
 class classname{
    //[var $atrr]*;
    function fucn_name([parameter]){
    //…
    }
 }
 $object = new classname();
 &object->attr;
 &object->fucn_name([parameter]);

              Lập trình mạng – Chương   44
Quản lý session và cookie
• Gán giá các giá trị cookie:
  – setcookie(“cookie_name”, value);
  – Bằng sesion:
    session_set_cookie_params($var);
• Lấy giá trị cookie:
  – $cookie_value=
    $HTTP_COOKIE_VARS[“cookie_name”]
  – Bằng session:
    $var = session_get_cookie_params();


                Lập trình mạng – Chương   45
Quản lý session và cookie
• Lưu trữ biến vào sesion:
  session_start(); //ref php.ini
  $var = value;
  session_register($var);
• Sử dụng biến trong session:
  – biến sau khi đã lưu trữ vào session thì có thể
    sử dụng như một biến dữ liệu bình thường
    trong web site



                Lập trình mạng – Chương   46
Quản lý session và cookie
• Kiểm tra một session đã đăng ký chưa:
  session_is_registered(“var”);
  – Ex:
    if (session_is_registered(“Login”)) {
    } else{
    }
• Xoá một biến đã được lưu trong session:
  session_unregister(“var”);


                 Lập trình mạng – Chương   47
Truy xuất cơ sở dữ liệu
• PHP cung cấp các hàm truy xuất
  database khác nhau cho mỗi hệ quản trị
  cơ sở dữ liệu khác nhau
• Thao tác với hệ DBMS MySQL:
  – Tạo kết nối:
    $db = mysql_connect(“server”,”user”,”pass”);
    if(!$db) { //error }
  – Chọn database:
    mysql_select_db(“database”);
    mysql_select_db(“database”,$conn_var);
                   Lập trình mạng – Chương   48
Thao tác với hệ DBMS MySQL
• Thực thi câu truy vấn:
  int mysql_query(string sql,[db_connect]);
  int mysql_query(string database, string sql,
  [db_connect]);
  $result = mysql_query($sql);
  if(mysql_num_rows($result)!=0){
     while($row=mysql_fetch_array($result))
     {
          $fieldname = $row[“fieldname”];
     }
  }
• Đóng kết nối:
  mysql_close($conn_var);
                 Lập trình mạng – Chương   49

Más contenido relacionado

La actualidad más candente

Lap trinhcosodulieuvoi c-sharp_phan-2
Lap trinhcosodulieuvoi c-sharp_phan-2Lap trinhcosodulieuvoi c-sharp_phan-2
Lap trinhcosodulieuvoi c-sharp_phan-2Hiển Phùng
 
4.thuc thi menh lenh voi co so du lieu
4.thuc thi menh lenh voi co so du lieu4.thuc thi menh lenh voi co so du lieu
4.thuc thi menh lenh voi co so du lieuDao Uit
 
Lớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong javaLớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong javaANHMATTROI
 
ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015
ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015
ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015IT Expert Club
 
Technical note playframework_documentation_working with play - java_vn
Technical note playframework_documentation_working with play - java_vnTechnical note playframework_documentation_working with play - java_vn
Technical note playframework_documentation_working with play - java_vnAsahina Infotech
 
Postgresql các vấn đề thực tế
Postgresql các vấn đề thực tếPostgresql các vấn đề thực tế
Postgresql các vấn đề thực tếTechMaster Vietnam
 
Android report
Android reportAndroid report
Android reportMinh Đệ
 
Android Nâng cao-Bài 8-JSON & XML Parsing
Android Nâng cao-Bài 8-JSON & XML ParsingAndroid Nâng cao-Bài 8-JSON & XML Parsing
Android Nâng cao-Bài 8-JSON & XML ParsingPhuoc Nguyen
 
Java thegioiebook 3216
Java thegioiebook 3216Java thegioiebook 3216
Java thegioiebook 3216Đinh Luận
 
Nodejs Introduction
Nodejs IntroductionNodejs Introduction
Nodejs Introductionthanh can
 
Go micro framework to build microservices
Go micro framework to build microservicesGo micro framework to build microservices
Go micro framework to build microservicesTechMaster Vietnam
 
Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture IT Expert Club
 
Golang web database3
Golang web database3Golang web database3
Golang web database3NISCI
 

La actualidad más candente (15)

Lap trinhcosodulieuvoi c-sharp_phan-2
Lap trinhcosodulieuvoi c-sharp_phan-2Lap trinhcosodulieuvoi c-sharp_phan-2
Lap trinhcosodulieuvoi c-sharp_phan-2
 
4.thuc thi menh lenh voi co so du lieu
4.thuc thi menh lenh voi co so du lieu4.thuc thi menh lenh voi co so du lieu
4.thuc thi menh lenh voi co so du lieu
 
Lớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong javaLớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong java
 
Tìm hiểu về NodeJs
Tìm hiểu về NodeJsTìm hiểu về NodeJs
Tìm hiểu về NodeJs
 
ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015
ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015
ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015
 
Vue.js
Vue.jsVue.js
Vue.js
 
Technical note playframework_documentation_working with play - java_vn
Technical note playframework_documentation_working with play - java_vnTechnical note playframework_documentation_working with play - java_vn
Technical note playframework_documentation_working with play - java_vn
 
Postgresql các vấn đề thực tế
Postgresql các vấn đề thực tếPostgresql các vấn đề thực tế
Postgresql các vấn đề thực tế
 
Android report
Android reportAndroid report
Android report
 
Android Nâng cao-Bài 8-JSON & XML Parsing
Android Nâng cao-Bài 8-JSON & XML ParsingAndroid Nâng cao-Bài 8-JSON & XML Parsing
Android Nâng cao-Bài 8-JSON & XML Parsing
 
Java thegioiebook 3216
Java thegioiebook 3216Java thegioiebook 3216
Java thegioiebook 3216
 
Nodejs Introduction
Nodejs IntroductionNodejs Introduction
Nodejs Introduction
 
Go micro framework to build microservices
Go micro framework to build microservicesGo micro framework to build microservices
Go micro framework to build microservices
 
Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture
 
Golang web database3
Golang web database3Golang web database3
Golang web database3
 

Destacado

Digital text book by sara
Digital text book by saraDigital text book by sara
Digital text book by saraSano Anil
 
Innovative work roshna work
Innovative work roshna workInnovative work roshna work
Innovative work roshna workSano Anil
 
48 nguyen tac chu chot cua quyen luc (robert greene & joost elffers)
48 nguyen tac chu chot cua quyen luc (robert greene & joost elffers)48 nguyen tac chu chot cua quyen luc (robert greene & joost elffers)
48 nguyen tac chu chot cua quyen luc (robert greene & joost elffers)vantinhkhuc
 
Digital text book by jasmin
Digital text book by  jasminDigital text book by  jasmin
Digital text book by jasminSano Anil
 
How UPS is Mastering Customer Service with Social Media, presented by Debbie ...
How UPS is Mastering Customer Service with Social Media, presented by Debbie ...How UPS is Mastering Customer Service with Social Media, presented by Debbie ...
How UPS is Mastering Customer Service with Social Media, presented by Debbie ...WordofMouth.org
 
קטלוג חיים ברשת
קטלוג חיים ברשתקטלוג חיים ברשת
קטלוג חיים ברשתahmadeg1
 
2ª semana
2ª semana2ª semana
2ª semanablog2012
 
UNHI Creative Works Symposium Session: Open Source Issues and Opportunities
UNHI Creative Works Symposium Session: Open Source Issues and Opportunities UNHI Creative Works Symposium Session: Open Source Issues and Opportunities
UNHI Creative Works Symposium Session: Open Source Issues and Opportunities UNHInnovation
 
(8,6) pojava na evropska unija
(8,6) pojava na evropska unija(8,6) pojava na evropska unija
(8,6) pojava na evropska unijateodoramishevska
 
UNHI Creative Works Symposium Session: Deconstructing UNH Intellectual Proper...
UNHI Creative Works Symposium Session: Deconstructing UNH Intellectual Proper...UNHI Creative Works Symposium Session: Deconstructing UNH Intellectual Proper...
UNHI Creative Works Symposium Session: Deconstructing UNH Intellectual Proper...UNHInnovation
 
Lean Startup Business Tactics - Identifying Your Minimal Viable Product
Lean Startup Business Tactics - Identifying Your Minimal Viable ProductLean Startup Business Tactics - Identifying Your Minimal Viable Product
Lean Startup Business Tactics - Identifying Your Minimal Viable ProductUNHInnovation
 
2014 Gold Monitor Award Winners: Banking
2014 Gold Monitor Award Winners: Banking2014 Gold Monitor Award Winners: Banking
2014 Gold Monitor Award Winners: BankingCorporate Insight
 
Annuity and Life Insurance Product Update - Q1 2016
Annuity and Life Insurance Product Update - Q1 2016Annuity and Life Insurance Product Update - Q1 2016
Annuity and Life Insurance Product Update - Q1 2016Corporate Insight
 
Healthcare Monitor: 2015 Year in Review
Healthcare Monitor: 2015 Year in ReviewHealthcare Monitor: 2015 Year in Review
Healthcare Monitor: 2015 Year in ReviewCorporate Insight
 
Desizyon ki soti nan 28ièm konsèy gouvènman
Desizyon ki soti nan 28ièm konsèy gouvènmanDesizyon ki soti nan 28ièm konsèy gouvènman
Desizyon ki soti nan 28ièm konsèy gouvènmanlaurentlamothe
 
How "Don't Mess With Texas" Became One of the Most Talked About Ad Campaigns ...
How "Don't Mess With Texas" Became One of the Most Talked About Ad Campaigns ...How "Don't Mess With Texas" Became One of the Most Talked About Ad Campaigns ...
How "Don't Mess With Texas" Became One of the Most Talked About Ad Campaigns ...WordofMouth.org
 

Destacado (20)

Taqwa menurut Imam Ali
Taqwa menurut Imam AliTaqwa menurut Imam Ali
Taqwa menurut Imam Ali
 
Digital text book by sara
Digital text book by saraDigital text book by sara
Digital text book by sara
 
Iphone sketches
Iphone sketchesIphone sketches
Iphone sketches
 
Innovative work roshna work
Innovative work roshna workInnovative work roshna work
Innovative work roshna work
 
48 nguyen tac chu chot cua quyen luc (robert greene & joost elffers)
48 nguyen tac chu chot cua quyen luc (robert greene & joost elffers)48 nguyen tac chu chot cua quyen luc (robert greene & joost elffers)
48 nguyen tac chu chot cua quyen luc (robert greene & joost elffers)
 
Digital text book by jasmin
Digital text book by  jasminDigital text book by  jasmin
Digital text book by jasmin
 
How UPS is Mastering Customer Service with Social Media, presented by Debbie ...
How UPS is Mastering Customer Service with Social Media, presented by Debbie ...How UPS is Mastering Customer Service with Social Media, presented by Debbie ...
How UPS is Mastering Customer Service with Social Media, presented by Debbie ...
 
Ertontsiin togtots
Ertontsiin togtotsErtontsiin togtots
Ertontsiin togtots
 
קטלוג חיים ברשת
קטלוג חיים ברשתקטלוג חיים ברשת
קטלוג חיים ברשת
 
2ª semana
2ª semana2ª semana
2ª semana
 
UNHI Creative Works Symposium Session: Open Source Issues and Opportunities
UNHI Creative Works Symposium Session: Open Source Issues and Opportunities UNHI Creative Works Symposium Session: Open Source Issues and Opportunities
UNHI Creative Works Symposium Session: Open Source Issues and Opportunities
 
(8,6) pojava na evropska unija
(8,6) pojava na evropska unija(8,6) pojava na evropska unija
(8,6) pojava na evropska unija
 
UNHI Creative Works Symposium Session: Deconstructing UNH Intellectual Proper...
UNHI Creative Works Symposium Session: Deconstructing UNH Intellectual Proper...UNHI Creative Works Symposium Session: Deconstructing UNH Intellectual Proper...
UNHI Creative Works Symposium Session: Deconstructing UNH Intellectual Proper...
 
Lean Startup Business Tactics - Identifying Your Minimal Viable Product
Lean Startup Business Tactics - Identifying Your Minimal Viable ProductLean Startup Business Tactics - Identifying Your Minimal Viable Product
Lean Startup Business Tactics - Identifying Your Minimal Viable Product
 
2014 Gold Monitor Award Winners: Banking
2014 Gold Monitor Award Winners: Banking2014 Gold Monitor Award Winners: Banking
2014 Gold Monitor Award Winners: Banking
 
Annuity and Life Insurance Product Update - Q1 2016
Annuity and Life Insurance Product Update - Q1 2016Annuity and Life Insurance Product Update - Q1 2016
Annuity and Life Insurance Product Update - Q1 2016
 
Wikis
WikisWikis
Wikis
 
Healthcare Monitor: 2015 Year in Review
Healthcare Monitor: 2015 Year in ReviewHealthcare Monitor: 2015 Year in Review
Healthcare Monitor: 2015 Year in Review
 
Desizyon ki soti nan 28ièm konsèy gouvènman
Desizyon ki soti nan 28ièm konsèy gouvènmanDesizyon ki soti nan 28ièm konsèy gouvènman
Desizyon ki soti nan 28ièm konsèy gouvènman
 
How "Don't Mess With Texas" Became One of the Most Talked About Ad Campaigns ...
How "Don't Mess With Texas" Became One of the Most Talked About Ad Campaigns ...How "Don't Mess With Texas" Became One of the Most Talked About Ad Campaigns ...
How "Don't Mess With Texas" Became One of the Most Talked About Ad Campaigns ...
 

Similar a Ch06

Bài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 3: Servlet - Lập Trình Mạng Nâng CaoBài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 3: Servlet - Lập Trình Mạng Nâng CaoTuan Nguyen
 
Bai2 tong quan_mvc_0567
Bai2 tong quan_mvc_0567Bai2 tong quan_mvc_0567
Bai2 tong quan_mvc_0567Ham Chơi
 
Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao
Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng CaoBài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao
Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng CaoTuan Nguyen
 
Kiến thức cần thiết làm việc
Kiến thức cần thiết làm việcKiến thức cần thiết làm việc
Kiến thức cần thiết làm việcmanhvokiem
 
JavaEE Basic_Chapter4: Servlet Nâng Cao
JavaEE Basic_Chapter4: Servlet Nâng CaoJavaEE Basic_Chapter4: Servlet Nâng Cao
JavaEE Basic_Chapter4: Servlet Nâng CaoPhaolo Pham
 
Ajax control toolkit
Ajax control toolkitAjax control toolkit
Ajax control toolkitNguyen Huy
 
Lập trình web asp.net MVC
Lập trình web asp.net MVCLập trình web asp.net MVC
Lập trình web asp.net MVCMasterCode.vn
 
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...MasterCode.vn
 
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webBài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webMasterCode.vn
 
Net06 asp.net applications & state management
Net06 asp.net applications & state managementNet06 asp.net applications & state management
Net06 asp.net applications & state managementhoangnguyentien
 

Similar a Ch06 (20)

Bài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 3: Servlet - Lập Trình Mạng Nâng CaoBài 3: Servlet - Lập Trình Mạng Nâng Cao
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
 
Bai2 tong quan_mvc_0567
Bai2 tong quan_mvc_0567Bai2 tong quan_mvc_0567
Bai2 tong quan_mvc_0567
 
Aspnet 3.5 _04
Aspnet 3.5 _04Aspnet 3.5 _04
Aspnet 3.5 _04
 
Ung dun web chuong 2
Ung dun web  chuong 2Ung dun web  chuong 2
Ung dun web chuong 2
 
Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao
Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng CaoBài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao
Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao
 
Kiến thức cần thiết làm việc
Kiến thức cần thiết làm việcKiến thức cần thiết làm việc
Kiến thức cần thiết làm việc
 
chuong_02.ppt
chuong_02.pptchuong_02.ppt
chuong_02.ppt
 
JavaEE Basic_Chapter4: Servlet Nâng Cao
JavaEE Basic_Chapter4: Servlet Nâng CaoJavaEE Basic_Chapter4: Servlet Nâng Cao
JavaEE Basic_Chapter4: Servlet Nâng Cao
 
Ung dung web chuong 6
Ung dung web  chuong 6Ung dung web  chuong 6
Ung dung web chuong 6
 
Ajax control toolkit
Ajax control toolkitAjax control toolkit
Ajax control toolkit
 
Lập trình web asp.net MVC
Lập trình web asp.net MVCLập trình web asp.net MVC
Lập trình web asp.net MVC
 
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
Bài 6: Lập trình với CSDL Kiến trúc kết nối & Buộc dữ liệu - Lập trình winfor...
 
C5. Model, DataSharing.pdf
C5. Model, DataSharing.pdfC5. Model, DataSharing.pdf
C5. Model, DataSharing.pdf
 
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webBài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
 
Web301 slide 1
Web301   slide 1Web301   slide 1
Web301 slide 1
 
Báo cáo tuần đồ án
Báo cáo tuần đồ ánBáo cáo tuần đồ án
Báo cáo tuần đồ án
 
JSP and Database
JSP and DatabaseJSP and Database
JSP and Database
 
Net06 asp.net applications & state management
Net06 asp.net applications & state managementNet06 asp.net applications & state management
Net06 asp.net applications & state management
 
Aspnet 3.5 _05
Aspnet 3.5 _05Aspnet 3.5 _05
Aspnet 3.5 _05
 
Aspnet 3.5 -06
Aspnet 3.5 -06Aspnet 3.5 -06
Aspnet 3.5 -06
 

Más de vantinhkhuc (20)

Url programming
Url programmingUrl programming
Url programming
 
Servlets intro
Servlets introServlets intro
Servlets intro
 
Servlet sessions
Servlet sessionsServlet sessions
Servlet sessions
 
Security overview
Security overviewSecurity overview
Security overview
 
Rmi
RmiRmi
Rmi
 
Md5
Md5Md5
Md5
 
Lecture17
Lecture17Lecture17
Lecture17
 
Lecture11 b
Lecture11 bLecture11 b
Lecture11 b
 
Lecture10
Lecture10Lecture10
Lecture10
 
Lecture9
Lecture9Lecture9
Lecture9
 
Lecture6
Lecture6Lecture6
Lecture6
 
Jsse
JsseJsse
Jsse
 
Jsf intro
Jsf introJsf intro
Jsf intro
 
Jsp examples
Jsp examplesJsp examples
Jsp examples
 
Jpa
JpaJpa
Jpa
 
Ejb examples
Ejb examplesEjb examples
Ejb examples
 
Corba
CorbaCorba
Corba
 
Ajax
AjaxAjax
Ajax
 
Ejb intro
Ejb introEjb intro
Ejb intro
 
Chc6b0c6a1ng 12
Chc6b0c6a1ng 12Chc6b0c6a1ng 12
Chc6b0c6a1ng 12
 

Ch06

  • 1. CHƯƠNG 6: LẬP TRÌNH WEB VỚI CÁC CÔNG NGHỆ PHỔ BIẾN 6.1 Giới thiệu Servlet/JSP 6.2 Lập trình web với Servlet 6.3 Lập trình web với JSP 6.4 Giới thiệu ASP 6.5 Lập trình web với ASP Lập trình mạng – Chương 1
  • 2. 6.1 Giới thiệu Servlet/JSP • Servlet là một ứng dụng (class) Java chạy trên nền web server. • Cơ chế hoạt động theo mô hình CGI mở rộng. • Chương trình phải được dịch ra ở dạng byte-code(.class), khai báo với web server. Web server phải hỗ trợ Java. • Phải extends class HttpServlet. Không có method main. Lập trình mạng – Chương 2
  • 3. 6.1 Giới thiệu Servlet/JSP • Cần có package servlet.jar để biên dịch (http://java.sun.com/products/servlet/) • Các server hiện hỗ trợ Servlet: – Apache Tomcat (http://jakarta.apache.org) – Sun’s Java Web Server, free, hiện không cho download (http://wwws.sun.com/software/jwebserver/) – New Atlanta’s ServletExec, tích hợp ServletEngine vào các web server(http://newatlanta.com) – http://www.macromedia.com/software/jrun/trial/ –… • Tham khảo các tài liệu về Servlet: http://java.sun.com/products/servlet/docs.html Lập trình mạng – Chương 3
  • 4. 6.1 Giới thiệu Servlet/JSP • Cấu trúc đơn giản của một Servlet: import java.io.*; import java.servlet.*; import java.servlet.http.*; public class Sample extends HttpServlet{ public doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{ //dùng đối tượng “request” để đọc dữ liệu từ client //đối tượng “response” để xuất dữ liệu cho client PrintWriter out = response.getWriter(); //dùng đối tượng out để ghi (method print) dữ liệu cho client } } Lập trình mạng – Chương 4
  • 5. 6.1 Giới thiệu Servlet/JSP • Biên dịch như một class Java. • File *.class dịch được phải đặt vào đúng thư mục quy định sẵn của web server. – Tomcat: $/webpages/WEB-INF/classes – JWS: $/servlets • Cấu hình cho web server đối với mỗi servlet: – Tomcat: hiệu chỉnh file web.xml trong thư mục $/webpages/WEB-INF theo DTD http://java.sun.com/j2ee/dtds/web-app_2_2.dtd – JWS: Cấu hình bằng web-based tool được cung cấp. Lập trình mạng – Chương 5
  • 6. 6.1 Giới thiệu Servlet/JSP • Cơ chế hoạt động của một servlet: – Web server nhận yêu cầu triệu gọi servlet từ client. • Nếu servlet chạy lần đầu, web server load file servlet tương ứng, khởi tạo các thông số bằng qua method init() • Nếu servlet đã được khởi tạo, tạo một thread để xử lý yêu cầu. – Gọi methods doXxx() để xử lý các request tương ứng theo giao thức HTTP. • doGet(..) cho HTTP GET, doPost cho HTTP POST Lập trình mạng – Chương 6
  • 7. 6.2 Lập trình web với Servlet • Lấy dữ liệu từ web client gởi đến bằng servlet: – Dùng đối tượng của class HttpServletRequest – Các methods để lấy thông số: • getParameter(“para-name”) • getParameterValues(“para-name”) String username= request.getParameter(“username”); String[] choice = request.getParameterValues(“comments”); – Dùng đối tượng của class HttpServletRequest để lấy các thông tin HTTP header Lập trình mạng – Chương 7
  • 8. 6.2 Lập trình web với Servlet • Ví dụ lấy tất cả các thông số từ client Enumeration parameter_names = request.getParameterNames(); while(parameter_names.hasMoreElements()){ String para = parameter_names.nextElement(); out.print(para + “ = ”); String[] paraValues = getParameterValues(para); if(paraValues.lenght()==1){ out.println(paraValues[0]); }else{ for(int i = 0, i< paraValues.lenght(),i++){ out.print(paraValues[i]+ “-”); } } } Lập trình mạng – Chương 8
  • 9. 6.2 Lập trình web với Servlet • Lấy các thông số HTTP request header: class HttpServletRequest cung cấp các method để lấy các thông số request header. – String getHeader(header-name): lấy nội dung của header-name – Enumeration getHeaderNames(): lấy tất cả các header-name. – Một số method điển hình: • Cookie[] getCookies(): dãy Cookie từ client • int getContentLength(): trả giá trị Content-Length • int getContentType(): trả giá trị Content-Type • int getRemoteUser(): giá trị username nếu có authenticate Lập trình mạng – Chương 9
  • 10. 6.2 Lập trình web với Servlet • Lấy các thông số HTTP request header: – Lấy các giá trị của biến môi trường CGI: • QUERY_STRING: getQueryString() • REMOTE_ADDR: getRemoteAddr() • REMOTE_HOST: getRemoteHost() • REQUEST_METHOD: getMethod() • PATH_INFO: getPathInfo() • SCRIPT_NAME: getServletPath() • SERVER_NAME: getServerName() • SERVER_PORT: getServerPort() • HTTP_XXX_YYY: getHeader(“Xxx-Yyy”) • … Lập trình mạng – Chương 10
  • 11. 6.2 Lập trình web với Servlet • Gởi dữ liệu cho web client: dùng đối tượng của class HttpServletResponse: – Tạo đối tượng PrintWriter để ghi dữ liệu gởi • PrintWriter out = response.getWriter(); – Xử lý các mã HTTP trả về với các method của class HttpServletResponse: • void setStatus(int statusCode): gởi các mã response • void sendError(int errorCode,String msg): gởi mã lỗi theo giao thức HTTP và message • void sendRedirect(String URL): chuyển đến một trang URL khác • Các mã có thể theo giao thức HTTP hoặc dùng các hằng số trong class HttpServletResponse. Lập trình mạng – Chương 11
  • 12. 6.2 Lập trình web với Servlet • Xử lý Cookie với web browser: – Chức năng Cookie • Kết hợp với web browser để lưu các thông số cần thiết. • Thông tin có thể dùng để thiết lập phiên làm việc(session) trong các ứng dụng thương mại điện tử(e-commerce). • Lưu trữ username, password • Thông tin để customize web site cho user hay dùng cho cơ chế personalization •… Lập trình mạng – Chương 12
  • 13. 6.2 Lập trình web với Servlet • Ghi thông tin Cookie lên máy client: – Thông tin được truyền đi trong field Set- Cookie HTTP header – Dùng method addCookie(Cookie cookie) của class HttpServletResponse. – Các thuộc tính quan trọng trong class Cookie: • Cookie name: setName(String name) – getName() • Cookie value: setValue(String value) – getValue() • Max Age: setMaxAge(int seconds) – getMaxAge() Lập trình mạng – Chương 13
  • 14. 6.2 Lập trình web với Servlet • Ví dụ: String user=“”,pass=“”; Cookie[] cookies = request.getCookies(); if(cookies.length==0){ user = request.getParameter(“username”); pass = request.getParameter(“password”); Cookie name_cookie = new Cookie(“username”,user); response.addCookie(name_cookie); Cookie pass_cookie = new Cookie(“password”,pass); response.addCookie(pass_cookie); }else{ for(int i=0;i<cookies.length;i++){ Cookie cookie = cookies[i]; if(cookie.getName().equals(“username”)) user=cookie.getValue(); if(cookie.getName().equals(“password”)) pass=cookie.getValue(); } } Lập trình mạng – Chương 14
  • 15. 6.2 Lập trình web với Servlet • Lưu thông tin về phiên làm việc của user: class HttpSession. – Có thể dùng để lưu bất kỳ đối tượng nào. – Đối tượng của class HttpSession được trả về từ method getSession() của class HttpServletRequest. – Các method thường sử dụng: • Object getValue(String name) [2.2: getAttribute] • void putValue(String name,Object object) [2.2: putAttribute] • void removeValue(String name) [2.2: removeAttribute] • String[] getValueNames() [Enumeration getAttributeNames()] • String getId() • void setMaxInactiveInterval(int seconds) Lập trình mạng – Chương 15
  • 16. 6.2 Lập trình web với Servlet • Ví dụ lưu ShoppingCart vào session HttpSession session = request.getSession(true); ShoppingCart cart = (ShoppingCart)session.getValue(“ShoppingCart”); if(cart==null){ cart = new ShoppingCart(); session.putValue(“ShoppingCart”,cart); } //process(cart) Lập trình mạng – Chương 16
  • 17. 6.2 Lập trình web với Servlet • Xử lý kết nối database – Dùng JDBC (Java DataBase Connectivity) để kết nối và thao tác với database. – Quy trình xử lý: • Tạo JDBC driver và URL database • Thiết lập connection đến URL database • Tạo đối tượng statement • Thực thi các câu lệnh SQL • Xử lý kết quả thực thi • Đóng kết nối đến database. Lập trình mạng – Chương 17
  • 18. 6.2 Lập trình web với Servlet • Kết nối đến database thông qua OBDC trên Windows: – Tạo DataSourceName trong ODBC Connection con = null; Statement stmt = null; ResultSet rs = null; String driver = “sun.jdbc.odbc.JdbcOdbcDriver”; String databaseURL = “jdbc:odbc:DataSourceName”; try{ Class.forName(driver); con = DriverManager.getConnection(databaseURL); stmt = con.createStatement() rs = stmt.executeQuery(strSQL); while(rs.next()){ out.println(rs.getString[1]+”-” rs.getInt(“quantity”));//… } con.close(); }cacth(SQLException se){ con.close(); } Lập trình mạng – Chương 18
  • 19. 6.2 Lập trình web với Servlet • Có thể kết nối database server bất kỳ có driver hỗ trợ. – Kết nối đến Oracle Database Server: driver=“oracle.jdbc.driver.OracleDriver” databaseURL =“jdbc:oracle:thin@localhost:1521:”+dbName con = DriverManager.getConnection(databaseURL,user,password) – Kết nối đến Sysbase: driver=“com.sysbase.jdbc.SysDriver” databaseURL = “jdbc:sysbase:Tds:localhost:1521? SERVICENAME=“+dbName con = DriverManager.getConnection(databaseURL,user,password) Lập trình mạng – Chương 19
  • 20. 6.2 Lập trình web với Servlet • Dùng Prepared Statements trong các câu lệnh thay đổi dữ liệu: String preSQLString = “UPDATE students SET score = ? WHERE ID=?”; PreparedStatement pre_stmt= connection.prepareStatement(preSQLString); float[] scores = getScores(); String[] studentIDs = getStudentIDs(); for(int i=0;i< studentIDs.length;i++){ pre_stmt.setFloat(1,scores[i]); pre_stmt.setString(2, studentIDs[i]); pre_stmt.execute(); } Lập trình mạng – Chương 20
  • 21. 6.2 Lập trình web với Servlet • Dùng cơ chế Connection Pooling – Tạo một dãy các Connection sẵn sàng. – Dùng cơ chế thread và đồng bộ để chia xẻ các Connection. public synchronized Connection getConnection() throws SQLException{ if(!availableConnections.isEmpty()){ Connection con = availableConnections.lastElement(); availableConnections.removeElementAt( availableConnections.size()-1); busyConnections.addElement(con); return con; }else{ //… } } Lập trình mạng – Chương 21
  • 22. 6.3 Lập trình web với JSP • JSP (Java Server Pages) là một trang HTML xen các đoạn mã Java. • Trang JSP sẽ được web server biên dịch theo thành bytecode, cơ chế hoạt động tương tự như Servlet. • Được tạo sẵn các đối tượng của các class HttpServletRequest và HttpServletResponse để xử lý giao tiếp với web client. Lập trình mạng – Chương 22
  • 23. 6.3 Lập trình web với JSP • Các đoạn mã Java trong trang JSP được đặt trong tag: <% %> – Giá trị biểu thức: <%= biểu thức %> – Khai báo các biến <%! [type variable;]+ %> – Java code <% Java code %> – Chú thích <%-- comments --%> • Các khai báo chỉ thị (derective): – <%@ page import=“[package][,package]*” %> – <%@ page isThreadSafe=“{true|false}” %> – <%@ page session=“{true|false}” %> – <%@ include file=“filename” %> Lập trình mạng – Chương 23
  • 24. 6.3 Lập trình web với JSP Ví dụ trang JSP <html> <body bgcolor="white"> <h1> Request Information </h1> <font size="4"> JSP Request Method: <jsp:expr> request.getMethod() </jsp:expr> <br> Request URI: <jsp:expr> request.getRequestURI() </jsp:expr> <br> Request Protocol: <jsp:expr> request.getProtocol() </jsp:expr> <br> Servlet path: <jsp:expr> request.getServletPath() </jsp:expr> <br> Path info: <jsp:expr> request.getPathInfo() </jsp:expr> <br> Path translated: <%= request.getPathTranslated() %> … Lập trình mạng – Chương 24
  • 25. 6.3 Lập trình web với JSP • Các đối tượng được xây dựng sẵn trong một trang JSP: – request: đối tượng class HttpServletRequest – response: đối tượng class HttpServletResponse – out: đối tượng class PrintWriter – session: đối tượng class HttpSession tạo ra từ method getSession() của đối tượng request – application: đối tượng class ServletContext – config: đối tượng class ServletConfig Lập trình mạng – Chương 25
  • 26. 6.4 Giới thiệu ASP • ASP là một trang HTML có chứa các mã script (VBScript hay JavaScript). Các script này có thể: – Lấy thông tin từ user. – Sinh nội dung động. – Thao tác với database. –… • Trang ASP được chạy trên web-server hỗ trợ (server-side) Lập trình mạng – Chương 26
  • 27. 6.4 Giới thiệu ASP • Các công cụ: – Soạn thảo : • Có thể dùng trình soạn thảo văn bản text bất kỳ. • Các công cụ trực quan : Ms. Visual InterDev, Ms. FrontPage, Macromedia Dreamweaver… – Web server: • Win9x : Personal Web Server • Win NT/2000 : Internet Information Services. • Chili!Soft : http://www.ChiliSoft.com (UNIX support) • HalcyonSoft : http://www.halcyonsoft.com Lập trình mạng – Chương 27
  • 28. 6.4 Giới thiệu ASP • Thêm script xử lý vào trang ASP: – Đặt mã trong cặp dấu : <%...%> • Ví dụ : <HTML><BODY> <% REM Hello World ! ASP %> </BODY></HTML> – Dùng tag SCRIPT : • <SCRIPT RUNAT=“SERVER”>….</SCRIPT> • Ví dụ : <HTML><BODY> <SCRIPT RUNAT=“SERVER”> REM Hello World </SCRIPT> </BODY></HTML> Lập trình mạng – Chương 28
  • 29. 6.5 Lập trình web với ASP • Đối tượng xử lý request sẵn có của ASP: Request. – Lấy thông tin người dùng nhập từ Form: • Request.Form(“field_name”) • Request.Form(index) – Một số field đặc biệt : checkbox, ratio, các field cùng tên… Lập trình mạng – Chương 29
  • 30. 6.5 Lập trình web với ASP • Đối tượng xử lý response sẵn có của ASP: Response – Các phương thức chính: • Reponse.Write(“String”) • Reponse.Redirect(“URL”) Lập trình mạng – Chương 30
  • 31. 6.5 Lập trình web với ASP • Đối tượng Application: – Quản lý thông tin về ứng dụng. Có thể dùng để lưu trữ dữ liệu, đối tượng. • Đối tượng Session: – Quản lý thông tin về phiên làm việc(session), có thể lưu dữ liệu, đối tượng của một session • Đố tượng Server: – Đặt các thuộc tính, tạo đối tượng mới… Lập trình mạng – Chương 31
  • 32. 6.5 Lập trình web với ASP • Thao tác database: có thể dùng ADO để thao tác. • Ví dụ về đọc dữ liệu từ database Dim objRecordset Set objRecordset = Server.CreateObject(“ADODB.Recordset”) objRecordset.Open “table-name”, “DSN=dsn” Do While NOT objRecordset.EOF Response.Write objRecordset(“field-name”) objRecordset.MoveNext Loop Lập trình mạng – Chương 32
  • 33. 6.5 Lập trình web với ASP • Đọc dữ liệu bằng câu lệnh SQL: strSQL = “Select * FROM table WHERE ….” objRecordset.Open strSQL, “DSN=dsn” • Dùng in dữ liệu theo dạng bảng, danh sách, listbox… • Có thể dùng cách này để hiện thực việc tìm kiếm. Lập trình mạng – Chương 33
  • 34. 6.5 Lập trình web với ASP • Thêm mới record: Set obj-Recordset-name = Server.CreateObject(“ADODB.Recordset”) objRecordset-name.Open “table-name”, “DSN=dsn”, _ adOpenDynamic, adLockOptimistic obj-Recordset-name.AddNew obj-Recordset-name.Fields(“field-name”) = … obj-Recordset-name.Update ‘…. obj-Recordset-name.Close Lập trình mạng – Chương 34
  • 35. 6.5 Lập trình web với ASP • Cập nhật thông tin trong record: strSQLUpdate = “UPDATE table SET field1=…, field2=… WHERE …” objRecordset. Excute strSQLUpdate Lập trình mạng – Chương 35
  • 36. LẬP TRÌNH WEB VỚI PHP • Giới thiệu về PHP • Truy cập biến form • Quản lý session, cookie • Truy xuất cơ sở dữ liệu • Một số chức năng khác (tham khảo) Lập trình mạng – Chương 36
  • 37. Giới thiệu về PHP • Là một ngôn ngữ lập trình ứng dụng web • Mã lệnh PHP được nhúng vào trang HTML tương tự JSP hay ASP • Hoạt động theo cơ chế thông dịch với PHP engine tích hợp vào web server. PHP engine hiện tại được hỗ trợ trên nhiều loại web server (trên các hệ điều hành khác nhau) => PHP có tính portable cao • Các web server phổ biến có thể cài đặt PHP engine: IIS, Apache. Apache và PHP thường có sẵn trong Linux Lập trình mạng – Chương 37
  • 38. Giới thiệu về PHP • Cài đặt PHP trên Windows – Cài đặt PHP lên máy, có thể download từ: http://www.php.net/, … – Cấu hình một số thông số cần thiết trong file $Windows/php.ini: • error_log = {filename} • post_max_size = 8M • file_uploads = {On|Off} • upload_tmp_dir = {directory} • session.save_path = {directory} • session.auto_start = {0|1} Lập trình mạng – Chương 38
  • 39. Giới thiệu về PHP • Cấu hình PHP trên IIS – Chọn Properties của web site – Cấu hình tương tự hình bên Lập trình mạng – Chương 39
  • 40. Giới thiệu về PHP • Ví dụ một trang PHP đơn giản <html> <head> <title> PHP Hello World! </title></head> <body> <? echo "Welcome to PHP"; ?> </boby> </html> Lập trình mạng – Chương 40
  • 41. Giới thiệu về PHP • Cú pháp PHP tương tự C và Java • Được viết chèn vào mã HTML theo các dạng: – <? //commands ?> – <?php # commands ?> – <script language='php‘> /* commands */ </script> – <% # commands %> • Tên biến trong PHP được đặt sau dấu $ Lập trình mạng – Chương 41
  • 42. Truy xuất biến Form • Dùng chính tên biến đã đặt cho FORM, ví dụ file doLogin.php: From login.html <br> <?php echo " Today is: ". date(); echo " Server:".$Server. " <br> "; echo " Username:$Username". "<br>"; ?> Lập trình mạng – Chương 42
  • 43. Xây dựng hàm và sử dụng lại mã • Chèn một trang khác vào PHP: – require(filename); • Sử dụng lại mã: – include(filename); • Có thể viết hàm trong trang PHP như khái niệm của lập trình cấu trúc function check($user, $pass, &$result) { #các lệnh thực thi hoặc gọi các hàm khác } check($username,$password,$result); if($result==1){ /*…..*/ } Lập trình mạng – Chương 43
  • 44. Xây dựng hàm và sử dụng lại mã • Có thể viết mã PHP theo lập trình hướng đối tượng class classname{ //[var $atrr]*; function fucn_name([parameter]){ //… } } $object = new classname(); &object->attr; &object->fucn_name([parameter]); Lập trình mạng – Chương 44
  • 45. Quản lý session và cookie • Gán giá các giá trị cookie: – setcookie(“cookie_name”, value); – Bằng sesion: session_set_cookie_params($var); • Lấy giá trị cookie: – $cookie_value= $HTTP_COOKIE_VARS[“cookie_name”] – Bằng session: $var = session_get_cookie_params(); Lập trình mạng – Chương 45
  • 46. Quản lý session và cookie • Lưu trữ biến vào sesion: session_start(); //ref php.ini $var = value; session_register($var); • Sử dụng biến trong session: – biến sau khi đã lưu trữ vào session thì có thể sử dụng như một biến dữ liệu bình thường trong web site Lập trình mạng – Chương 46
  • 47. Quản lý session và cookie • Kiểm tra một session đã đăng ký chưa: session_is_registered(“var”); – Ex: if (session_is_registered(“Login”)) { } else{ } • Xoá một biến đã được lưu trong session: session_unregister(“var”); Lập trình mạng – Chương 47
  • 48. Truy xuất cơ sở dữ liệu • PHP cung cấp các hàm truy xuất database khác nhau cho mỗi hệ quản trị cơ sở dữ liệu khác nhau • Thao tác với hệ DBMS MySQL: – Tạo kết nối: $db = mysql_connect(“server”,”user”,”pass”); if(!$db) { //error } – Chọn database: mysql_select_db(“database”); mysql_select_db(“database”,$conn_var); Lập trình mạng – Chương 48
  • 49. Thao tác với hệ DBMS MySQL • Thực thi câu truy vấn: int mysql_query(string sql,[db_connect]); int mysql_query(string database, string sql, [db_connect]); $result = mysql_query($sql); if(mysql_num_rows($result)!=0){ while($row=mysql_fetch_array($result)) { $fieldname = $row[“fieldname”]; } } • Đóng kết nối: mysql_close($conn_var); Lập trình mạng – Chương 49