检查用户名是否存在的servlet代码怎么写_Servlet详解!!!
1 掌握 請求轉發
2 掌握 請求重定向
3 掌握cookie
1. 請求轉發介紹
(1) 為什么需要請求轉發?
以此請求的處理需要多個Servlet的聯動操作,第一個Servlet需要用到其他Servlet
已經聲明的邏輯處理代碼
(2) 請求轉發的本質是什么?
其實就是在一個Servlet中調用其他的Servlet
2. 請求轉發的特點和request作為數據載體進行數據流轉
(1) 請簡要說明請求轉發的特點
1. 降低Servlet之間的冗余
2. 以此請求轉發內的Servlet共享此次請求的request和response對象
3. 瀏覽器地址欄信息不改變,還是一次請求
(2) 使用request對象作為請求轉發的數據的載體的方法是什么?(存儲和獲取)
Req.setAttribute() 將request作為請求轉發的數據的載體
Req.getAttribute()
3. 請求轉發之request對象總結
(1) 總結說明request作用域的特點
一次請求轉發內的servlet
作用
Request對象可作為數據流轉的載體
(2) 總結說明請求轉發的特點
4. 降低Servlet之間的冗余
5. 以此請求轉發內的Servlet共享此次請求的request和response對象
6. 瀏覽器地址欄信息不改變,還是一次請求,使用了多個servlet
7. 會導致數據重復提交(通過刷新動作再次調用a重復流程)
4. 重定向的作用和特點
(1) 總結說明重定向的特點
重定向:
作用:
保護第一次的請求,避免因為用刷新動作頻繁的觸發A的執行
特點:
兩次請求,地址欄信息改變
5. cookie的介紹和特點和作用
(1) 簡要說明為什么需要cookie
不同的請求使用相同的請求數據,但是請求只要結束,數據就被銷毀了,其他請求需要將公共數據重新書寫發送
(2) cookie的特點是什么
瀏覽器端的數據存儲技術
那些數據需要被存儲是在服務器端被聲明,以響應的方式告訴瀏覽器進行存儲
不適合大量數據的存儲
6. cookie的代碼實現
(1) 怎么獲取Cookie對象。
獲得所有的cookie對象
Cookie[] cookies=req.getCookies();
(2) 書寫代碼獲取請求中的鍵名為a的cookie信息的值
Cookie[] cookies=req.getCookies();
String b=null;
for (Cookie cookie : cookies) {
System.out.println();
if ((cookie.getName()).equals("a")) {
b=cookie.getValue();
}
}
7. cookie的有效期和有效路徑設置
(1) 聲明一段代碼,設置Cookie的有效期為三天
Cookie cookie = new Cookie(name,value);
Cookie.setMaxAge(3600*24*3)
Resp.addCookie(cookie)
(2) 創建一個Cookie信息并設置其訪問路徑為/虛擬項目名/a
Cookie cookie = new Cookie(name,value);
Cookie.setPath(‘/虛擬項目名/a’)
8. session的介紹和基本使用流程
(1) 根據視頻,說出你對session的理解及其作用
(2) 根據視頻,如何保證不同請求獲取到同一個session對象
根據cookie技術,存儲一個編號,不同的請求根據不同的編號獲取不同的session對象
9. session機制代碼實現
(1) 請簡述req.getSession()的作用
獲取session對象
(2) 獲取session對象的id的方法是什么?
Session.getId()
10. session的特點和流程總結
(1) 簡述session使用流程
流程:
* 1. 瀏覽器發送請求到ServletA ,在ServletA中使用req.getSession()獲取Session對象,如果此次請求中沒有SessionID
* 則會創建一個新的Session對象,如果有SessionID則將其對應的Session對象返回(前提是該session對象沒有到期且session對象沒有被銷毀)
* 對象到期銷毀了,就算有sessionID也會創建一個新的Session
* 2. 校檢session是否失效,存儲數據到session對象中或者獲取session中的數據或者刪除session中的數據
(2) 簡述session的特點
特點:
* session解決了同一用戶不同請求的數據共享問題
* session的作用域:瀏覽器不關閉,session不失效,則同一用戶的任意請求獲取的都是同一個session
* 一次會話(瀏覽器從啟動到關閉)
(3) 簡述session的作用域
瀏覽器開啟到關閉
cookie 和session 的區別:1、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。2、cookie不是很安全,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙考慮到安全應當使用session。3、session會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能考慮到減輕服務器性能方面,應當使用COOKIE。4、單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。cookie 和session 的聯系:session是通過cookie來工作的session和cookie之間是通過$_COOKIE['PHPSESSID']來聯系的,通過$_COOKIE['PHPSESSID']可以知道session的id,從而獲取到其他的信息。在購物網站中通常將用戶加入購物車的商品聯通session_id記錄到數據庫中,當用戶再次訪問是,通過sessionid就可以查找到用戶上次加入購物車的商品。因為sessionid是唯一的,記錄到數據庫中就可以根據這個查找了。
問題二:
sessionid和request對象都存儲在內存的緩存數據庫中,存活的周期不同
11. session的有效期設置和強制銷毀
(1) session的默認有效期?怎么設置session的有效期
(2) 程序中session都有一個默認的過期時間,其中tomcat中的默認時間為30分鐘,根據需要我們可以去手動設置session的過期時間,以下是設置session的過期時間的三個方法:1.在tomcat-->conf-->conf/web.xml中的<session-config>中設置:<session-config><session-timeout>30</session-timeout></session-config>2.在項目的web.xml中定義:<session-config> <session-timeout>20</session-timeout> </session-config>注:20則設置過期時間為20分鐘 測試通過3.在程序中定義:session.setMaxInactiveInterval(30*60);設置單位為秒,設置為-1永不過期
(3) 怎么強制銷毀session?
session.removeAttribute()適用于清空指定的屬性
session.invalidate()是清除當前session的所有相關信息
12. session之優化登錄案例
數據處理
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 設置請求編碼格式
req.setCharacterEncoding("utf-8");
// 設置響應編碼格式
resp.setContentType("text/html;charset=utf-8");
// 獲取請求數據
String uname=req.getParameter("uname");
String pwd=req.getParameter("pwd");
// 處理請求數據
if (uname.equals("唐爸爸")&&pwd.equals("123")) {
//
resp.getWriter().write("登陸成功");
}else {
// 創建session對象
HttpSession session=req.getSession();
session.setAttribute("error", "用戶名或密碼錯誤");
// 重定向
resp.sendRedirect("session");
}
// 響應處理結果
}
登陸頁面:
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 設置請求編碼格式
req.setCharacterEncoding("utf-8");
// 設置響應編碼格式
resp.setContentType("text/html;charset=utf-8");
// 獲取請求數據
// 處理請求數據
// 獲取session對象
HttpSession session=req.getSession();
// 響應處理結果
String flag=(String) ((session.getAttribute("error")==null?"":session.getAttribute("error")));
// 銷毀session(如果不銷毀,會導致session得到的值會一直存在)
session.invalidate();
resp.getWriter().write("<html>");
resp.getWriter().write("<body>");
resp.getWriter().write("<form action='session01' method='get'>");
resp.getWriter().write("<font color='red'>"+flag+"</font>");
resp.getWriter().write("用戶名:<input type='text' name='uname'/>");
resp.getWriter().write("密碼:<input type='password' name='pwd'/>");
resp.getWriter().write("<input type='submit' value='提交'/>");
resp.getWriter().write("</form>");
resp.getWriter().write("</body>");
resp.getWriter().write("</html>");
}
13. 簡述ServletContext對象的作用(application)
(1) 簡述ServletContext對象的作用
為了解決不同用戶之間的共享數據問題(session只有在同一個用戶之間有效)
(2) 獲取ServletContext對象的三種方式是?
獲取servletcontext對象(三種方式)
ServletContext context1=this.getServletContext();
ServletContext context2=this.getServletConfig().getServletContext();
ServletContext context3=req.getSession().getServletContext();
14. ServletContext對象存儲和獲取共享數據
存儲用戶共享數據
* sc.setAttribute(String name,Object value)
* 獲取用戶共享數據
* sc.getAttribute(String name);
* 刪除共享數據
* sc.removeAttribute(String name)
15. ServletContext特點&獲取web配置文件全局屬性&獲取資源流對象和絕對路徑
(1) 簡述ServletContext對象的作用和特點。
作用:
* 解決了不同用戶之間的數據共享問題
特點
* 服務器創建
* 所有用戶共享
(2) web.xml中的全局屬性數據的配置方式是;
* 獲取web.xml中的全局配置屬性,作用:將部分動作和源文件進行解耦.我們只需要在xml配置文件中進行相關配置就會改變代碼的執行效果
* sc.getInitParameter(String name) 注意:返回的是string類型的對象
* 特點
* 服務器創建
* 所有用戶共享
* 生命周期
* 服務器開啟到服務器關閉
16. ServletContext對象實現網頁訪問計數次數
(1) 完成課上的代碼
17. ServletConfig對象學習
(1) 說說ServletConfig對象的作用
主要是用于加載servlet的初始化參數。在一個web應用可以存在多個ServletConfig對象(一個Servlet對應一個ServletConfig對象)
總結
以上是生活随笔為你收集整理的检查用户名是否存在的servlet代码怎么写_Servlet详解!!!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python输出子列表_python利用
- 下一篇: python处理一亿条数据_Python