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