回顧html
1三要素是什麼?java
入口(login.html) 處理(LoginServlet.java) 出口 (success.jsp)web
2如何訪問servlet瀏覽器
http://IP:port/project/urlpatterntomcat
urlpattern ---->web.xml中找安全
3 request 和 response的區別?服務器
Request請求 Broswer---->Tomcat login.html--->LoginSevlet.javaapp
Response返回 Tomcat---->Broswer webapp
4 doGet 和 doPost的區別?jsp
doGet <a href=url> 超連接用的默認方式 get 不解中文決亂麼
<form action=url method=get >
明文傳遞方式 瀏覽器中能夠看到傳遞的信息
不安全,而且數據量大的時候會缺損數據
doPost <form action=url method=post > 解決中文亂碼
密文傳遞方式 瀏覽器看不到傳遞的信息
安全,而且數據量大的時候不會缺損數據
5如何解決亂碼問題?
Request請求有亂碼
request.setCharacterEncoding("UTF-8");
Reponse返回有亂
response.setCharacterEncoding("UTF-8");
6 如何取得請求中的值 ?
String value=request.getParameter(「控件名」); 單個值
String [] values=request.getParmeterValues(「控件名」); 同名多個值
7 常見的錯誤:404 、500?
404 路徑錯誤---解決思路 跟蹤路徑
500 代碼錯誤---解決思路 jsp/servlet中代碼錯誤
獲取不到值null 在console裏面去找到錯誤的位置。
8 servlet中獲得流的方法?
字符流 response.getWriter( )----->PrintWriter
字節流 response.getOutputStream()-->OutputStream
9 如何跳轉到出口?
//跳轉而且能夠傳遞數據
request.getRequestDispatcher("success.jsp").forward(request, response);
//從新定向 跳轉不傳遞數據
//response.sendRedirect("success.html");
10如何將數據傳遞到出口?
//保存數據
request.setAttribute("name", username);
request.setAttribute("password", pwd);
//獲取數據
用戶名是:${ name} ,密碼: ${password}。
11 Servlet的生命週期
Servlet的生命週期是由tomcat服務器來控制的。
1 構造方法:
建立servlet對象的時候調用。默認狀況下,第一訪問servlet就會建立servlet對象只建立一次。說明servlet對象在tomcat中是單實例的。
2初始化 init方法
當建立完servlet對象的時候會調用init()方法,只調用一次。
3 調用服務 service 方法 其中就包含doGet doPost等方法
每次發送請求的時候調用。能夠調用n次。
4 銷燬 destory 方法
銷燬servlet對象的時候調用,中止服務器或者從新部署的web項目的時候銷燬servlet就會調用destory方法
12 Servlet時序圖
13 servlet自動加載
在web.xml中加入
<load-on-startup> 1</load-on-startup>
裏面的數字越小加載級別越高
當tomcat啓動的時候,就去運行web.xml解析裏面的內容,當發現有自動加載的數據時候,就會運行加載。
<servlet> <servlet-name>sl</servlet-name> <servlet-class>com.bw.servlet.LoginServlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet> |
14 ServletConfig 對象
主要是加載servlet的初始化參數,在web應用中能夠存在多個ServletConfig對象
<servlet> <servlet-name>sl</servlet-name> <servlet-class>com.bw.servlet.LoginServlet</servlet-class> <init-param> <param-name>username</param-name> <param-value>godyang</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>123456</param-value> </init-param> </servlet> |
15 ServletContext對象
上下文對象,表示當前的web應用(項目)環境。一個web應用只有一個ServletContext對象
上下文參數配置 它是全局的 全部的servlet均可以訪問
<context-param> <param-name>ecode</param-name> <param-value>UTF-8</param-value> </context-param> |
// 獲取上下文對象 ServletContext sc = this.getServletContext(); String contextParamValue = sc.getInitParameter("ecode"); System.out.println("contextParamValue=" + contextParamValue); |
//項目路徑 String path=sc.getContextPath(); System.out.println("path="+path); //文件發佈後(tomcat/webapps)的真實路徑 String realPath=sc.getRealPath("counter.txt"); System.out.println("realPath="+realPath ); //獲取文件流 InputStream is=sc.getResourceAsStream("C:\\Tomcat\\webapps\\webThree\\WEB-INF\\classes\\counter.txt"); |