Welcome to Yumao′s Blog.
Hello JSP Day04
, 2012年05月03日 , Java Language , 评论 在〈Hello JSP Day04〉中留言功能已關閉 ,

1、上傳文件(擴展)
step1 在form表單當中,添加
input type=”file”,並且,設置表單
的提交方式為”post”, 設置
enctype=”multipart/form-data”
enctype屬性會生成一個消息頭
content-type,發送給服務器。其作用
是,告訴瀏覽器,對錶單中的數據如何
編碼,另外,也通知服務器,它編碼的方式。
enctype的缺省值是
“application/x-www-form-urlencoded”,要求
瀏覽器對錶單中的數據按照url編碼方式
(即打開該頁面的編碼是什麼,就採用該編碼
對錶單中的數據進行編碼)對錶單中的數據進行編碼。
enctype的值如果設置成”multipart/form-data”,要求
瀏覽器對錶單中的數據不再進行編碼,直接以二進制
字節數組的方式發送給服務器,此時,
直接使用request.getParameter方法不能獲取任何
數據。服務器端需要先獲取原始的二進制流,
分析這個二進制流(字節數組)。
step2、在服務器端,一般使用一些工具來分析
原始的二進制流,比如 commons-fileupload.jar

2、servlet的線程安全問題
(1)產生線程安全問題的原因:
默認情況下,某個Servlet在容器當中,只有一個
實例(不管有多少個請求)。
如果有多個請求到達容器,容器會啟動多個線程
來處理請求,此時,就有可能多個線程會同時訪問
某個servlet實例,如果這些線程訪問了線程不安全的
資源(比如修改了servlet的某個屬性值),就會產
生線程安全問題。
(2)如何解決?
a, 使用synchronized加鎖,不要對整個
service方法加鎖,而是對訪問臨界資源的
代碼加鎖。
b, 讓servlet實現SingleThreadModel接口。
容器會為實現了這個接口的servlet創建多個實例。
不建議使用。
c, 盡量避免對servlet屬性值進行修改。

servlet知識點小結
一、servlet基礎
1、什麼是servlet?
2、如何開發一個servlet?
3、什麼是servlet容器?
4、了解http協議
二、servlet核心
1、servlet核心類與接口
a,Servlet接口
b,GenericServlet抽象類
c,ServletConfig接口
String getInitParameter(String paraName);
ServletContext getServletContext();
d,HttpServlet抽象類
e,HttpServletRequest接口(ServletRequest)
String getParameter(String paraName);
String[] getParameterValues(String paraName);
setCharacterEncoding(String code);
String getRequestURI();
setAttribute(String name,Object obj);
Object getAttribute(String name);
removeAttribute(String name);
RequestDispatcher getRequestDispatcher(String url);
Cookie[] getCookies();
String getContextPath();
getRemoteAddr();
f,HttpServletResponse接口(ServletResponse)
setContentType(String type);
PrintWriter getWriter();
sendRedirect(String url);
addCookie(Cookie cookie);
encodeURL(String url);
encodeRedirectURL(String url);
g, ServletContext接口
setAttribute(String name,Object obj);
Object getAttribute(String name);
removeAttribute(String name);
String getRealPath(String url);
String getInitParameter(String paraName);
2、servlet的生命周期
1)servlet的生命周期分成哪幾個階段?
2)如何override init方法。
3)load-on-starup參數
4)如何配置初始化參數(init-param)
3、表單處理
1)如何獲得表單的參數?
2)如何獲取表單的中文參數值?
4、get方式與post方式
1)哪一些請求是get請求方式
2)哪一些請求是post請求方式
3)二者的區別
5、轉發與重定向
1)什麼是轉發?
2)如何轉發?以及要注意的問題?
3)轉發的特點?
4)什麼是重定向?
5)如何重定向?以及要注意的問題?
6)重定向的特點?
7)二者的區別?
三、狀態管理
1) 什麼是狀態管理?
2) cookie技術
a,什麼是cookie?
b,cookie如何創建?
Cookie c = new Cookie(“username”,”abc”);
response.addCookie(c);
c,cookie的編碼問題?
String URLEncoder.encode(String name,String code);
String URLDecoder.decode(String name,String code);
d,cookie的查詢
Cookie[] request.getCookies();
String cookie.getName();
String cookie.getValue();
f,cookie的生存時間
cookie.setMaxAge(int seconds)
g,cookie的路徑問題
cookie.setPath(String path)
h,cookie的限制
3) session技術
a, 什麼是session?
b, 如何獲得session?
HttpSession request.getSession();
HttpSession request.getSession(boolean flag);
c,session的常用方法
setAttribute(String name,Object obj);
Object getAttribute(String name);
removeAttribute(String name);
String getId();
d, session的超時
setMaxInactiveInterval(int seconds)
e,刪除
invalidate();
g,用戶禁止cookie以後,如何繼續使用session?
使用url重寫
四、數據庫訪問
1、使用jdbc訪問數據庫
2、dao
a,什麼是dao?
b,如何寫一個dao?
五、過濾器與監聽器
1、什麼是過濾器?
2、如何寫一個過濾器?
3、過濾器初始化參數?
4、優先級
5、什麼是監聽器?
6、如何寫一個監聽器?
六、案例
1、session驗證
2、驗證碼
3、購物車
4、員工的增刪改查

練習:
“交友平台”
功能:
1、註冊
a,將用戶註冊信息插入數據庫
b,驗證碼
c,用戶名要求唯一
2、登錄
a,驗證用戶名和密碼
3、用戶列表
a,顯示所有已註冊用戶的信息(除了真實姓名與
電話)
b,點擊“詳細”鏈接, 會跳轉到“用戶詳細信息列表”
4、用戶詳細信息列表
a,列出用戶的真實姓名和電話
b, 如果是當前用戶(比如,sdd登錄了該系統,
並且,點擊的也是sdd用戶的“詳細”鏈接),
則可以上傳照片。
c, 查看照片(會顯示該用戶的所有照片)。
d, 如果用戶沒有登錄,則看不到照片,也
不能上傳照片。

JSP_Day04.tar.gz
教例參考上一天

关键字:, , , ,

评论已关闭