1. 程式人生 > >servlet 介紹和簡單使用

servlet 介紹和簡單使用

1,servle介紹:

html+css+js

Servlet:用來開發動態web的技術

屬於javaee規範

【1】,javaEE Servers建立專案 

    a,new Dynamic Web Project 

    2,配置檔案直接點下一步:

3,填寫網站的名稱,內容確定進行建立成功

4,關聯自己的伺服器

 

完成

 

 

2,servle 的使用  

【1】手動匯入

servlet使用步驟

[1]寫一個類繼承httpServlet

[2]重寫doGet和doPost方法

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println("doget");

PrintWriter writer = resp.getWriter();

writer.println("<html>");

writer.println("<body>");

 

writer.println("Hello Servlet");

 

writer.println("</body>");

writer.println("</html>");

 

}

[3]配置servlet

web.xml中的配置

<!-- 配置Servlet -->

<servlet>

<servlet-name>Hello</servlet-name>

<servlet-class>類的全類名</servlet-class>

</servlet>

 

<!-- 配置servlet訪問路徑 -->

<servlet-mapping>

<servlet-name>要與配置的servlet匹配</servlet-name>

<url-pattern>瀏覽器要訪問的路徑</url-pattern>

</servlet-mapping>

 

【2】自動匯入

    new  Servle   會自動導包 清單檔案會自動生成

    

    

    配置訪問檔案

2,取消繼承的方法fhish,檢視清單目錄自動配置

2,servle的執行流程:

servlet執行機制

[1]傳送一個請求 http://localhost:8080/02_range/hello

[2]tomcat解析是哪個應用程式

[3]找到這個應用程式 並且解析 web.xml

[4]解析web.xml裡面的url-pattern 比對成功的話 解析 servlet-name

[5]通過這個servlet-name 找到這個Servlet這個類

 

 

利用eclipse提供的Servlet建立Servlet

*處理bug網頁打不開,出現404錯誤

解決方法 重寫類中實現的方法  init doget  一定要去除 doget 和dopost  裡面的super()方法

3,servle的生命週期

[1]構造方法

[2]init方法初始化 只會建立的時候執行一次

[3]處理客戶端對service的呼叫 多次請求 多次呼叫

[4]service

[5]銷燬servlet

doget 和 doPost   構造方法中直接使用。父類執行

 

servlet有倆種方式 會啟動

1.正常的請求 會啟動servlet

2.讓tomcat啟動的時候就去載入servlet 需要在web.xml裡面配置 很少用因為生命週期太長了

配置以後啟動tomcat 直接呼叫service 方法 service 會按請求方式呼叫doget 或者 dopost方法

<servlet>

<servlet-name>LifeServlet</servlet-name>

<servlet-class>com.heima.life.LifeServlet</servlet-class>

<load-on-startup>1</load-on-startup> 他的級別只有1-9

</servlet>

 

4,url - pattern 的三種寫法

web.xml 下url路徑更改寫法,依然可以訪問資源

[1]完全路徑匹配 /hello

[2]目錄匹配 /*

[3]副檔名匹配 *.do *.action

注意字串的拼接,不要有兩個//

優先順序:完全路徑匹配>目錄匹配>副檔名匹配

位元組流和字元流不能同時使用

 

絕對路徑是從伺服器埠號後面開始匹配

相對路徑是從伺服器應用程式後面開始匹配

相對路徑: 相對於當前訪問的路徑 路徑前面 不會加 /

絕對路徑: 一個絕對的路徑 路徑前面 一定要加 /

專案開發常用的是絕對路徑

 

99乘法表案例:

【1】建立DyNamic Web Project 專案

【2】建立Servlet服務

package com.xiaoshuai;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class CfbServlet extends HttpServlet {

      @Override

      protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

            // [1]獲取請求傳遞過來的引數

            String str_number = req.getParameter("number");

            // [2]將請求過來的引數轉成了int型別

            int number = Integer.parseInt(str_number);

            // [3]獲取了一個字元流

            PrintWriter writer = resp.getWriter(); // 字元流

            // resp.getOutputStream();// 位元組流    (字元流和位元組流不能同時出現)

            // [4]乘法表

            for (int i = 1; i <= number; i++) {

                  for (int j = 1; j <= i; j++) {

                        writer.print(i + " * " + j + " = " + i * j + "  ");

                  }

                  writer.println();

            }     

      }

      @Override

      protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

            doGet(req, resp);

      }

}

【3】WebCOntent下建立HTML網頁  

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

      <form action="cfb" method="get">

            請輸入一個數:<input type="text" name="number" /> <input type="submit"

                  value="提交">

      </form>

</body>

</html>

 

問題:

1,web.xml 裡面的<url-pattern>和 命名.html 中 acction  不同無法關聯 

2,輸入網址,servlet  中 url 是一個網址  建立的 命名.html  也是一個網址。命名.html關聯url路徑