JavaWeb - 应用篇

一、Web实现登录注册功能

1、效果图
JavaWeb - 应用篇_第1张图片
JavaWeb - 应用篇_第2张图片

2、结构图
JavaWeb - 应用篇_第3张图片


3、关键词

  - Cookie
  - UploadFile(字节流操作)
  - InitServlet(自启动)(
  - multipart/form-data + post 获取步骤
  - UUID


4、下载地址

点击进入下载页面


二、Web实现唯一登录功能(过滤器 + 监听器 + 单例模式)

1、项目分析图
JavaWeb - 应用篇_第4张图片
JavaWeb - 应用篇_第5张图片
JavaWeb - 应用篇_第6张图片
JavaWeb - 应用篇_第7张图片
JavaWeb - 应用篇_第8张图片
JavaWeb - 应用篇_第9张图片
JavaWeb - 应用篇_第10张图片
JavaWeb - 应用篇_第11张图片
JavaWeb - 应用篇_第12张图片
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 loginUserSession = new HashMap();// key值:登录用户登录名,value值:登录用户sessionId
	private Map loginSession = new HashMap();//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 - 应用篇_第13张图片
JavaWeb - 应用篇_第14张图片
JavaWeb - 应用篇_第15张图片
JavaWeb - 应用篇_第16张图片
JavaWeb - 应用篇_第17张图片
JavaWeb - 应用篇_第18张图片

2、结构图
JavaWeb - 应用篇_第19张图片

3、技术介绍
JavaWeb - 应用篇_第20张图片

4、模块说明

  1、购物车
        - 课程列表显示
        - 加入购物车、加入收藏
        - 购物车列表显示及删除、计算
        - 收藏列表显示及删除
  2、进入应用第一页
        - welcome-file-list
        - index.jsp
        - 跳转到课程列表页
  3、课程列表页
        - jsp课程列表展现
        - Servlet、LocalCache实现
  4、购物车操作
        - 加入购物车
        - 购物车列表展现
        - 删除购物车记录
        - 购物车模拟结算
  5、收藏及操作
        - 加入收藏
        - 收藏列表展现
        - 删除收藏记录
  6、浏览记录及操作
        - 课程详情
        - 加入浏览记录
        - 查看浏览记录
        - 删除浏览记录
  7、其他功能
        - 课程分页
        - 模糊查询

5、下载地址

点击进入下载页面


 

你可能感兴趣的:(JavaWeb,应用,项目,#,前端,#,JavaWeb)