Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 初識Servlet生命周期及核心API

初識Servlet生命周期及核心API

編輯:關於Android編程

Servlet概述
首先得知道,Servlet=Server+Applet,Servlet主要用於處理各種業務邏輯,它比JSP更具有業務邏輯層的意義。
最初的JSP開發模式為:JSP+JavaBean,慢慢演變為:JSP+JavaBean+Servlet。
Servlet是使用Java Servlet應用程序設計接口(API)及相關類和方法的Java程序,除了Java Servlet API,它還可以用於擴展和添加API的Java類軟件包。


Servlet功能
Servlet通過創建一個框架擴展服務器的能力,以在web上提供請求和響應服務,當客戶端發送請求至服務器時,服務器可以將請求信息發送給Servlet,並讓其建立服務器返回給客戶端的響應。當啟動web服務器和客戶端第一次請求服務時,可以自動裝入Servlet,之後Servlet繼續運行直至其他客戶端發生請求。
這裡寫圖片描述

Servlet的主要功能:

創建並返回一個基於客戶請求性質的動態內容的完整HTML頁面。 創建可嵌入到現在HTML頁面中的部分HTML頁面(HTML片段)。 與其他服務器資源(包括數據庫和基於Java的應用程序)通信。 用多個客戶端處理連接,接收多個客戶端的輸入,並將結果傳遞到多個客戶端,例如:Servlet可以是多參與者的游戲服務器。 當允許在單連接方式下傳送數據的情況下,在浏覽器上打開服務器至Applet的新連接,並將該連接保持打開狀態;當允許客戶端和服務器簡單且高效的執行會話的情況下,Applet也可以啟動客戶浏覽器和服務器之間的連接,可以通過定制協議來通信。 將定制的處理提供給所有服務器的標准程序,如Servlet可以修改如何認證用戶。 -

Servlet特點<喎?/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjxiciAvPg0KU2VydmxldLy8yvXX7rTztcTTxcrGvs3Kx7/J0tS0psDtv827p7bLtKvAtLXESFRUUMfrx/OjrLKit7W72NK7uPbP7NOmoaM8L3A+DQq439Cno7rU2rf+zvHG98nPvfbT0NK7uPZKYXZh0OnE4rv61NrUy9DQo6zG5NPFysbU2tPatbG24Lj2wLTX1L/Nu6e2y7XEx+vH87fDzsrKsaOsU2VydmxldM6qw7+49sfrx/O31sXk0ru49s/fs8yjrLb4srvKx734s8yhoyC3vbHjo7pTZXJ2bGV0zOG5qcHLtPPBv7XEyrnTw7mkvt/A/bPMo6zI56O6tKbA7brcxNHN6rPJtcRIVE1Mse21pcr9vt2horbByKG6zcno1sNIVFRQzbejrNLUvLC0psDtQ29va2llus24+tfZu+G7sKGjIL/nxr3MqKO6U2VydmxldNPDSmF2YbHg0LShoyC5psTcx7+086O6U2VydmxldL/J0tTWsb3T0+t3ZWK3/s7xxve9u7ulo6y7ucTc1Nm497j2s8zQ8rzkubLP7cr9vt2jrMq5tcPK/b7dv+LBrL3Ts9jWrsDgtcS5psTcutzI3dLXyrXP1qGjIMHpu+7Q1LrNv8nAqdW50NQgubLP7cr9vt0gsLLIqw0KPGhyIC8+DQo8cD48c3Ryb25nPlNlcnZsZXS1xMn6w/zW3MbaPC9zdHJvbmc+PGJyIC8+DQpTZXJ2bGV0sr/K8NTayN3G98Dvo6zJ+sP81tzG2tPJyN3G97ncwO2hozxiciAvPg0KMaOptbHTw7unx+vH81NlcnZsZXS3/s7xyrG78sb0tq93ZWK3/s7xxvfKsaOsyN3G97u3vrO809TY0ru49kphdmEgU2VydmxldMDgoaM8YnIgLz4NCjKjqcjdxve7t76zvau4+b7d08O7p8frx/O0tL2o0ru49rvy1d+24Lj2U2VydmxldLbUz/PKtcD9o6yyor2r1eLQqcq1wP2808jrtb1TZXJ2bGV0yrXA/bPY1tChozxiciAvPg0KM6OpyN3G97u3vrO199PDU2VydmxldLXEs/XKvLuvt723qEh0dHBTZXJ2bGV0LmluaXQoU2VydmxldENvbmZpZyBjb25maWcpzeqzybP1yry7r6Os1eLKx9Do0qq0q7Xdss7K/aOsxuTW0LD8uqyz9cq8u6+yzsr9us3I3cb3u7e+s7XE0MXPoqOssqK4utTwz/JTZXJ2bGV0tKu13cr9vt2ho8jnufu0q7Xdyqew3KOs1PK74cXXs/ZTZXJ2bGV0RXhjZXB0aW9u0uyzo6OsU2VydmxldL2rsrvE3NX9s6O5pNf3oaM8YnIgLz4NCjSjqcjdxve7t76zwPvTw9K7uPZIdHRwU2VydmxldFJlcXVlc3S6zUh0dHBTZXJ2bGV0UmVzcG9uc2W21M/zt+LXsLTTV2ViyN3G973TytW1vbXESFRUUMfrx/O6zdPQU2VydmxldMn6s8m1xM/s06ahozxiciAvPg0KNaOpu7e+s8jdwb+w0Uh0dHBTZXJ2bGV0UmVxdWVzdLrNSHR0cFNlcnZsZXRSZXNwb25zZbbUz/O0q7XduPhIdHRwU2VydmxldC5zZXJ2aWNlKCm3vbeoo6xzZXJ2aWNlKCm/ybG7tuC0zrX308OjrLj3tffTw7n9s8zU2rK7zay1xM/fs8yjrLulsru4ycjFoaM8YnIgLz4NCjajqbao1sa1xEphdmEgU2VydmxldLTTSHR0cFNlcnZsZXRSZXF1ZXN0ttTP87bByKFIVFRQx+vH88r9vt2jrLfDzsrAtNfUSFRUUFNlc3Npb2678kNvb2tpZbbUz/O1xNe0zKzQxc+io6zWtNDQzNi2qNOm08O1xLSmwO2yosfS08NIdHRwU2VydmxldFJlc3BvbnNlttTP88n6s8lIVFRQz+zTpsr9vt2hozxiciAvPg0KN6OptbF3ZWK3/s7xxve6zcjdxve52LHVyrG74dfUtq+199PDSHR0cFNlcnZsZXQuZGVzdHJveSgpt723qLnYsdXL+dPQtPK/qrXE18rUtKGjPC9wPg0KPGhyIC8+DQo8cD48c3Ryb25nPlNlcnZsZXS6y9DEQVBJPC9zdHJvbmc+PC9wPg0KU2VydmxldL3Tv9oNCjxwcmUgY2xhc3M9"brush:java;"> //Servlet在處理客戶端的請求時調用此方法 public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException //當Servlet容器移除Servlet對象時調用此方法,以釋放資源 public void destroy() //用於獲取Servlet對象的配置信息,返回ServletConfig對象 public ServletConfig getServletConfig() //返回有關Servlet的信息,是純文本格式的字符串 public String getServletInfo() HttpServlet類

  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException  //處理請求類型為GET的Http請求的處理方法
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException //處理請求類型為Post的Http請求的處理方法
  protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException //處理請求類型為Put的Http請求的處理方法
HttpServletRequest接口
//常用方法
 public Cookie[] getCookies()    //返回所有Cookie對象
 public String getMethod()       //返回HTTP請求類型
 public String getContextPath()  //返回上下文路徑
 public String getQueryString()  //返回請求的查詢字符串
 public String getRequestURI()   //返回主機名到請求參數之間的部分字符串
 public HttpSession getSession() //返回與主機關聯的HttpSession對象
HttpServletResponse接口
 //常用方法
 public void addCookie(Cookie cookie)   //向客戶端發送Cookie信息
 public void sendError(int i) throws IOException  //發送一個錯誤狀態碼為i的錯誤響應到客戶端
 public void sendError(int i, String s) throws IOException  //發送一個錯誤狀態碼為i的錯誤響應到客戶端
 public void sendRedirect(String s) throws IOException   //將客戶端請求重定向到新的URL

Servlet的配置
Servlet的配置有兩種方法,一種是在web.xml文件中配置,另一種是采用注解配置

在web.xml文件中配置:

   
    
        
        helloServlet
        
        com.java.model.helloServlet
    
    
    
        
        helloServlet
        
        /hello123
    

采用注解配置:

@WebServlet("/hello123")
public class helloServlet extends HttpServlet {
........
}

Servlet處理表單數據

下面就用一個小例子來說明,主要功能為:helloServlet類處理login.jsp表單中的信息

helloServlet類:

package com.java.model;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * Created with IntelliJ IDEA.
 * Created by YEN on 2016/7/10 and 13:13.
 */

//采用注解配置
@WebServlet("/hello123")
public class helloServlet extends HttpServlet {

    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        System.out.println("................init(ServletConfig config)........");
    }

    @Override
    public void init() throws ServletException {
        super.init();
        System.out.println("................init()............................");
    }

    //Servlet在處理客戶端的請求時調用此方法
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
//        super.service(req, res);
        PrintWriter pw=res.getWriter();
        pw.print("hello service !");
        pw.close();
        System.out.println("................service............................");
        System.out.println(req.getParameter("username")+"........service");
        System.out.println(req.getParameter("password")+"........service");
    }
    //當Servlet容器移除Servlet對象時調用此方法,以釋放資源
    @Override
    public void destroy() {
        super.destroy();
        System.out.println("................destroy............................");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=utf-8");

        //獲取username password參數
        String name=req.getParameter("username");
        String pass=req.getParameter("password");
        //從response中獲取PrintWriter對象
        PrintWriter printWriter=resp.getWriter();
        printWriter.write(name+"..................."+pass);
        printWriter.flush();//刷新printWriter
        printWriter.close();

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
        System.out.println(req.getParameter("password")+"........doPost");
    }

}

login.jsp頁面

<%--
  Created by IntelliJ IDEA.
  User: YEN
  Date: 2016/7/9
  Time: 16:29
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script>
        function checkForm() {
            if(document.getElementById("username").value==null || document.getElementById("username").value==""){
                  alert("用戶名不能為空!");
                  return false;
              }
            if(document.getElementById("password").value==null || document.getElementById("password").value==""){
                alert("密碼不能為空!");
                return false;
            }
            return true;
        }
    </script>
</head>
<body>
<form name="form1" action="<%=request.getContextPath()%>/hello123" method="get" onsubmit="return checkForm()">
    username:<input type="text" name="username" id="username">   <br>
    password:<input type="password" name="password" id="password">   <br>
    <input type="submit" value="提交">
</form>
</body>
</html>

運行結果如下:

一:在login.jsp中輸入登陸信息
這裡寫圖片描述
二:點擊登陸按鈕後
這裡寫圖片描述
三:查看IntelliJ IDEA中的運行結果
這裡寫圖片描述

至此,一個Servlet的應用就完成了。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved