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