1. 程式人生 > >servlet初體驗

servlet初體驗

Servlet 

是伺服器端執行的java小程式,起到一個橋樑的作用,用於瀏覽器和應用程式之間進行溝通。

常見的java伺服器

tomcat(免費的 apache)

 jetty(免費的 eclipse)

jboss (jboss)

weblogic (bea, oracle)

websphere (ibm)

java se , java ee, java me

servlet, jsp, el, 都屬於java ee範疇

tomcat 的目錄結構 (**)

 bin  可執行指令碼目錄

conf 配置檔案目錄

logs 日誌目錄

webapps  應用程式目錄

啟動和停止 (**)

前提條件: 1. 要安裝jdk, 2. 要配置JAVA_HOME 環境變數

啟動: bin/startup.bat (windows下)

停止: bin/shutdown.bat (windows下)
       
       或者
       
       在啟動的黑視窗下 CTRL+C (停止程式,不是拷貝)

可以用瀏覽器檢查它是否真正啟動: 在瀏覽器位址列輸入 http://localhost:8080      
                                                    http://127.0.0.1:8080
                                                    http://192.168.10.240:8080
                                                    當埠號為80時可以省略不寫

修改埠號

在conf/server.xml 檔案中搜索8080 找到後修改為其它埠號即可

在idea 裡配置tomcat(**)

編寫第一個servlet(***)

/**
 * 1. 繼承 HttpServlet父類
 * 2. 使用註解 @WebServlet(urlPatterns = "瀏覽器訪問路徑")
 * 3. 覆蓋父類中  service 方法
 */
@WebServlet(urlPatterns = "/hello")
public class MyServlet extends HttpServlet {

    @Override
    // Request : 代表請求
    // Response : 代表響應
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("你好,世界");
        // 用servlet可以返回一段html程式碼,給瀏覽器

        // 對於中文,需要設定響應採用utf-8字符集,否則會使用英文字符集(iso-8859-1)返回響應,會有亂碼問題
        resp.setContentType("text/html;charset=utf-8");

        // 向resp物件物件的字元輸出流中寫入的html程式碼都會返回給瀏覽器
        resp.getWriter().println("<html><body>你好,世界</body></html>

 }
}

瀏覽器傳送請求(***)

語法:

http://ip地址:埠號/servlet地址?引數名1=引數值1&引數名2=引數值2...
       
?name=張三&pass=123  // name是引數名,張三是引數值, pass是引數名, 123 是引數值

伺服器要獲取請求引數:

String 請求引數的值 = request.getParameter("請求引數名");

注意:
    
    如果某個引數沒有傳遞,使用request.getParameter()返回的是null值
    
    request.getParameter()返回的總是字串,需要自己做資料型別轉換
       

請求型別(***)

1) get 請求  直接通過瀏覽器地址傳送的請求

2) post 請求    

表單form既可以傳送get請求,也可以傳送post請求
 
 區別:

        1) get請求會把所有請求引數跟在位址列之後,不適合傳送敏感資訊
            
            而post請求不會把請求引數跟在位址列之後
        
        2) 不要以為post請求是安全的,通過一些網路監測工具仍然可以看到post中的引數資訊
          
            http 是不安全的,都是明文傳送給伺服器的
         
            https 是安全的,會把資訊傳送給伺服器的過程中進行加密
        
            https 和post結合可以保證向伺服器傳輸資料的安全性
        
        3) get請求傳輸的資料有限制, post請求沒有限制(任意大小的資料都可以傳送給伺服器)
       
        4) get 意味著獲取資訊(對應查詢操作)
         
           post 意味著增,改,刪等操作
       
對於post請求,會有中文亂碼問題,解決方法是呼叫:

// 手工進行解碼, 需要放在所有 req.getParameter方法之前呼叫

req.setCharacterEncoding("utf-8");

注意: tomcat 8 已經對get請求中的中文按utf-8進行解碼了, 所以程式設計師不需要對get請求的中文進行額外處理
        
       tomcat 7, tomcat 6 ... 對get請求中的中文還需要特殊處理