JavaWeb学习笔记10——利用Filter避免未经登录进入主页

==============

在上一节中我们已经完成了两个页面,即登录页面和博客主页,但我们发现,在浏览器中直接用博客主页的url也能直接进入登陆后的页面,这并不是我们想要的结果。因此本节重点解决这一问题。

解决方法也很简单,利用Filter就可解决这一问题,在LoginServlet中如果我们验证通过了用户的登录,那我们可以在session中添加一个user数据作为标记。在Filter中我们再从session中获取user,如果获取到了,则代表我们是登陆进来的,正常执行后面的动作(即打开主页),否则跳转到登录页。最重要的一点是我们要在web.xml中配置Filter,将需要进行过滤的url添加进去(即将博客主页添加进去)

二、关键代码

======

LoginServlet.java

if(isLoing) {

//这个字符串将会在js中被接收

//1代表登录成功

//2代表用户名或密码为空

//3代表用户名或密码错误

//若登陆成功,则将用户名存入session,后面在Fileter中进行检测,如果session中有相应数据,则证明用户是登陆进入的主页,而不是直接通过url进入。

request.getSession().setAttribute(“user”,Account);

out.write(“1”);

}else if(Account==“”||Password==“”){

out.write(“2”);

}else {

out.write(“3”);

}

out.close();

LoginFilter.java

package com.blog.dong;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.annotation.WebFilter;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import org.apache.catalina.User;

/**

  • Servlet Filter implementation class LoginFilter

*/

@WebFilter(“/LoginFilter”)

public class LoginFilter implements Filter {

/**

  • Default constructor.

*/

public LoginFilter() {

// TODO Auto-generated constructor stub

}

/**

  • @see Filter#destroy()

*/

public void destroy() {

// TODO Auto-generated method stub

}

/**

  • @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)

*/

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

// TODO Auto-generated method stub

// place your code here

// pass the request along the filter chain

HttpServletRequest httpServletRequest = (HttpServletRequest)request;

HttpServletResponse httpServletResponse = (HttpServletResponse) response;

HttpSession session = httpServletRequest.getSession();

String user = (String)session.getAttribute(“user”);

if(user!=null) {

//如果session中存在user这个数据,则继续下一步

chain.doFilter(httpServletRequest, httpServletResponse);

return;

}else {

//如果session中不存在user这个数据,则转到登录页面

httpServletResponse.sendRedirect(“/BlogDong/Login.html”);

return;

}

}

最后总结

ActiveMQ+Kafka+RabbitMQ学习笔记PDF

image.png

  • RabbitMQ实战指南

image.png

  • 手写RocketMQ笔记

image.png

  • 手写“Kafka笔记”

image

关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦
…(img-TmIm6MyW-1721137356573)]

关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值