一、Web實作登入注冊功能
1、效果圖
JavaWeb - 應用篇
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iMyUzN3gjYycDO2QTY0IGOyYzX2ADO0YTMzIzLcVDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
JavaWeb - 應用篇
2、結構圖
JavaWeb - 應用篇
3、關鍵詞
- Cookie
- UploadFile(位元組流操作)
- InitServlet(自啟動)(<load-on-startup>)
- multipart/form-data + post 擷取步驟
- UUID
4、下載下傳位址
點選進入下載下傳頁面
二、Web實作唯一登入功能(過濾器 + 監聽器 + 單例模式)
1、項目分析圖
Ps:必須使用兩個不同的浏覽器,否則session是一樣的,檢測不出效果。
2、核心代碼
package com.imooc.listener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import com.imooc.cache.LoginCache;
/**
* 使用者登入監聽器
* @author lv
*
*/
public class LoginSessionListener implements HttpSessionAttributeListener {
private static final String LOGIN_USER="loginUser";
@Override
public void attributeAdded(HttpSessionBindingEvent hsbe) {
String attrName = hsbe.getName();//監聽到session屬性值發生添加操作,擷取對應操作的屬性名
if(LOGIN_USER.equals(attrName)){//若屬性名為登入屬性名,判定為使用者登入操作
String attrVal = (String)hsbe.getValue();//擷取添加的屬性值,即使用者登入名
HttpSession session = hsbe.getSession();//該次操作的session對象
String sessionId = session.getId();//該次操作的session對象ID
String sessionId2 = LoginCache.getInstance().getSessionIdByUsername(attrVal);//從緩存對象裡面,獲得該使用者登入名對應的sessionID值
if(null == sessionId2){//未獲得結果,不需要清理前次登入使用者會話資訊
}else{
HttpSession session2 = LoginCache.getInstance().getSessionBySessionId(sessionId2);//擷取前次該使用者登入對應的session對象
session2.invalidate();//清理前次登入使用者會話存儲資訊,使得前次登入失效
}
//完成該次登入使用者登入名、sessionID,session對象的緩存對象存儲
LoginCache.getInstance().setSessionIdByUserName(attrVal, sessionId);
LoginCache.getInstance().setSessionBySessionId(sessionId, session);
}
}
@Override
public void attributeRemoved(HttpSessionBindingEvent arg0) {
}
@Override
public void attributeReplaced(HttpSessionBindingEvent arg0) {
}
}
Ps:使用sessionAttr監聽器而不是用session監聽器,因為隻是建立session監聽是毫無意義的,比如:進入到登入頁面,但可能沒有登入,但是監聽功能已經啟動了。
package com.imooc.cache;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpSession;
/**
* 登入使用者與session緩存對象
* @author lv
*
*/
public class LoginCache {
private static LoginCache instance = new LoginCache();
private Map<String,String> loginUserSession = new HashMap<String,String>();// key值:登入使用者登入名,value值:登入使用者sessionId
private Map<String,HttpSession> loginSession = new HashMap<String,HttpSession>();//key值:登入使用者sessionId,value值:登入使用者session對象
private LoginCache(){
}
public static LoginCache getInstance(){
return instance;
}
/**
* 通過登入名擷取對應登入使用者的sessionId
* @param username
* @return
*/
public String getSessionIdByUsername(String username){
return loginUserSession.get(username);
}
/**
* 通過sessionId擷取對應的session對象
* @param sessionId
* @return
*/
public HttpSession getSessionBySessionId(String sessionId){
return loginSession.get(sessionId);
}
/**
* 存儲登入名與對應的登入sessionID至緩存對象
* @param username
* @param sessionId
*/
public void setSessionIdByUserName(String username,String sessionId){
loginUserSession.put(username, sessionId);
}
/**
* 存儲sessionId與對應的session對象至緩存對象
* @param sessionId
* @param session
*/
public void setSessionBySessionId(String sessionId,HttpSession session){
loginSession.put(sessionId, session);
}
}
3、下載下傳位址
點選進入下載下傳頁面
三、購物車 + 收藏 + 浏覽記錄 + 分頁 + 模糊查詢(附:404、500、編碼過濾)
1、效果圖
JavaWeb - 應用篇
JavaWeb - 應用篇
JavaWeb - 應用篇
JavaWeb - 應用篇
JavaWeb - 應用篇
JavaWeb - 應用篇
2、結構圖
JavaWeb - 應用篇
3、技術介紹
JavaWeb - 應用篇
4、子產品說明
1、購物車
- 課程清單顯示
- 加入購物車、加入收藏
- 購物車清單顯示及删除、計算
- 收藏清單顯示及删除
2、進入應用第一頁
- welcome-file-list
- index.jsp
- 跳轉到課程清單頁
3、課程清單頁
- jsp課程清單展現
- Servlet、LocalCache實作
4、購物車操作
- 加入購物車
- 購物車清單展現
- 删除購物車記錄
- 購物車模拟結算
5、收藏及操作
- 加入收藏
- 收藏清單展現
- 删除收藏記錄
6、浏覽記錄及操作
- 課程詳情
- 加入浏覽記錄
- 檢視浏覽記錄
- 删除浏覽記錄
7、其他功能
- 課程分頁