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請求中的中文還需要特殊處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章