java旅行--第五站--servlet与JSP--java过滤器与session的小例子

首先看看不加拦截器时候的效果,如下,可以访问到action=dianming



然后定义一个过滤器,拦截action != login的action,如下

		HttpServletRequest httpRequest = (HttpServletRequest)request;
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		
		String action = httpRequest.getParameter("action");
		if(!("login".equals(action))) {
			
			String isLogin = (String)httpRequest.getSession().getAttribute("isLogin");
			
			if(isLogin == null || isLogin.isEmpty()) {
				httpRequest.getRequestDispatcher("/index.jsp").forward(request, response);
			}
		}
		
		
		// pass the request along the filter chain
		chain.doFilter(request, response);
再看看效果

接着进行登录,发现可以登录成功

然后因为我设置了session的有效期为一分钟,代码如下

	//判断用户是否登陆成功
	private boolean loginSuccess(HttpServletRequest request,
			HttpServletResponse response) {
		// TODO Auto-generated method stub

		if(username != null && password != null) {

//			System.out.println(username + "::::" + password);
			for(User user : userList) {
				if(username.equals(user.getUsername()) && password.equals(user.getPassword())) {
					request.getSession().setAttribute("isLogin", username);
					HttpSession session = request.getSession();
					session.setMaxInactiveInterval(60);
					return true;
				}
			}
		}
		
		return false;
	}

一分钟后刷新页面,发现,返回到登录页面了


下面是对注册登录后,往数据库增加用户和查询用户的操作

	//查询用户
	public ArrayList<User> getUserList() {
		
		if(conn == null) {
			conn = MysqlPool.getConn();
		}
		
		try {
			pstmt = conn.prepareStatement("select * from user");
			rs = pstmt.executeQuery();
			while(rs.next()) {
				user = new User();
				user.setUsername(rs.getString("username"));
				user.setPassword(rs.getString("password"));
				userList.add(user);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				if(rs != null) {
					rs.close();
					rs = null;
				}
				if(pstmt != null) {
					pstmt.close();
					pstmt = null;
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		return userList;
	}
	
	//添加用户
	public void addUser(String name, String password) {
		
		if(conn == null) {
			conn = MysqlPool.getConn();
		}
		
		try {
			
			pstmt = conn.prepareStatement("insert into user(username, password) values(?,?)");
			pstmt.setString(1, name);
			pstmt.setString(2, password);
			pstmt.executeUpdate();
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				if(rs != null) {
					rs.close();
					rs = null;
				}
				if(pstmt != null) {
					pstmt.close();
					pstmt = null;
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

在servlet类中判断是注册还是登录操作

		if(action != null) {
			if("login".equals(action)) {
				if(loginSuccess(request,response)) {
					request.getRequestDispatcher("/main.jsp").forward(request, response);
				} else {
					request.getRequestDispatcher("/index.jsp").forward(request, response);
				}
			} else if("register".equals(action)) {
				if(registerSuccess(request,response)) {
					request.getRequestDispatcher("/success.jsp").forward(request, response);
				} else {
					request.getRequestDispatcher("/index.jsp").forward(request, response);
				}
			} else if("dianming".equals(action)) {
				if(dianmingSuccess(request,response)) {
					request.getRequestDispatcher("/main.jsp").forward(request, response);
				} else {
					request.getRequestDispatcher("/main.jsp").forward(request, response);
				}
			} else {
				request.getRequestDispatcher("/index.jsp").forward(request, response);
			}
		} else {
			request.getRequestDispatcher("/index.jsp").forward(request, response);
		}

调用注册登录方法

	//判断是否注册成功
	private boolean registerSuccess(HttpServletRequest request,
			HttpServletResponse response) {
		// TODO Auto-generated method stub

		if(username != null && password != null && !("".equals(username)) && !("".equals(password))) {

//				System.out.println("username:"+user.getUsername());
			for(User user : userList) {
				if(username.equals(user.getUsername())) {
					return false;
				}
			}
			return true;
			
		}
		
		return false;
		
	}

	//判断用户是否登陆成功
	private boolean loginSuccess(HttpServletRequest request,
			HttpServletResponse response) {
		// TODO Auto-generated method stub

		if(username != null && password != null) {

//			System.out.println(username + "::::" + password);
			for(User user : userList) {
				if(username.equals(user.getUsername()) && password.equals(user.getPassword())) {
					request.getSession().setAttribute("isLogin", username);
					HttpSession session = request.getSession();
					session.setMaxInactiveInterval(60);
					return true;
				}
			}
		}
		
		return false;
	}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值