首页 > 编程语言 >Javaweb(十一)

Javaweb(十一)

时间:2023-10-19 23:01:32浏览次数:42  
标签:十一 Javaweb req request Filter user 过滤器 import

1、实现登录操作时提示的错误信息可封装在request域中,如下所示:

image.png

然后再JSP中访问域中的数据:

<div id="errorMsg">${login_msg} ${register_msg}</div>

获取cookie中的值:

image.png

2、Filter

概念:Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。

过滤器一般完成一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等等

image.png

2.1、Filter快速入门

image.png

2.2、filter拦截路径的设置:

image.png

2.3、过滤器链:一个web应用,可以配置多个过滤器,这多个过滤器称为过滤器链。

image.png

==注解配置的Fiter,优先级按照过滤器类名(字符串)的自然排序。==

2.4、登录验证

Java代码如下所示:

import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;

/**
 * 拦截所有路径
 */
@WebFilter("/*")
public class LoginFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        //类型转换
        HttpServletRequest req = (HttpServletRequest) request;
        //直接放行的路径(当访问注册或者登录的页面时,可以直接放行)
        String[] urls = {"/login.jsp", "/imgs/", "/css/", "/loginServlet", "/registerServlet", "/checkCodeServlet"};
        //获取当前访问的资源路径
        String url = req.getRequestURL().toString();
        //循环遍历数组并且判断
        for (String s : urls) {
            //找到了
            if (url.contains(s)) {
                //直接放行
                chain.doFilter(request, response);
                //结束方法
                return;
            }
        }

        //判断session中是否有user
        HttpSession session = req.getSession();
        Object user = session.getAttribute("user");
        //判断user是否为空
        if (user != null) {
            //登录了,直接放行
            chain.doFilter(request, response);
        } else {
            //没有登录,返回一个错误信息
            req.setAttribute("login_msg", "您尚未登录!");
            //返回登录页面
            req.getRequestDispatcher("/login.jsp").forward(req, response);
        }
    }

    public void init(FilterConfig config) throws ServletException {
    }

    public void destroy() {
    }

}
3、Listener

image.png

标签:十一,Javaweb,req,request,Filter,user,过滤器,import
From: https://blog.51cto.com/u_15433911/7943277

相关文章

  • Javaweb前端-cnblog
    HTML+CSS+JS+Vue+Element目录HTML+CSS+JS+Vue+Element一、基本概念二、Web服务器三、HTMLCSS3.1官方文档四、JavaScript五、Vue六、Ajax七、前端工程化八、Element一、基本概念静态web:html,css缺点:无法动态更新;无法和数据库交互伪动态:轮播图、点击特效(JavaScript)......
  • Javaweb后端-cnblog
    Javaweb后端目录Javaweb后端MavenHTTP请求响应请求(补充)xml文件分层解耦三层架构IOC/DI入门IoC控制反转DI依赖注入MySQL事务索引分页查询MyBatis快速入门数据库连接池Lombok增删改查删除新增查询条件查询xml映射文件动态sql案例部门管理分页查询文件上传阿里云OSS配置文件参数......
  • 【短道速滑十一】标准的Gabor滤波器及Log_Gabor滤波器的实现、解析、速度优化及其和Ha
    最近有朋友在研究Halcon中gen_gabor的函数,和我探讨,因为我之前也没有怎么去关注这个函数,因此,前前后后大概也折腾了有一个星期去模拟实现这个东西,虽然最终没有实现这个函数,但是也是有所收获,这里做一点总结,也算是最这个函数有个完美的收尾吧。1、Gabor滤波器首先总是度......
  • javaweb第10章源码
    javaweb第10章源码下载链接:https://wwpv.lanzoue.com/iDhBE1c5hcxg文件结构CHAPTER10│.classpath│.project│chapter10.iml│├─.idea│encodings.xml│misc.xml│modules.xml│workspace.xml│├─.settings│.jsdtscope......
  • Shell(十一):I/O重定向
    I/O重定向最常用的方法:管道,结合sed和awk等命令的用法;面向文件的I/O重定向,涉及文件标识符、I/O重定向符号及其用法、exec命令和代码块重定向。1、管道1.1、管道简介管道技术是Linux的一种基本的进程间通信技术,利用先进先出(FirstInFirstOut,FIFO)排队模型来指挥......
  • javaWeb-MVC 和三层架构(非详解)
    1.MVC模式MVC结构:MVC是一种分层开发的模式其中1.M:Model,业务模型,处理业务2.V:View,视图,界面展示3.C:Controller,控制器,处理请求,调用模型和视图 下面是一张展示流程控制图MVC的好处:1.职责单一,互不影响2.有利于分工协作3.利于维护,利于组件重用2.三层架构1表现层2.业务逻辑......
  • javaweb-jsp脚本总结笔记
    1什么是JSPjsp又叫JavaserveltPage这门技术最大的特点就是,写jsp就像是再写html但是不仅可以写静态页面,而且可以内置Java代码写出动态页面,也就是说可以为用户提供动态数据。总的来说jsp=java+HTML2.JSP快速入门2.1提供对应的驱动包2.1创建对应jsp文件2.2写对应代码......
  • 火山引擎 ByteHouse:双十一即将到来,直播商家如何用数据“点播成金”?
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群“双十一”电商大促脚步渐近,各大平台的战火又将燃起。直播电商以低成本、高转化率等优势备受商家青睐。据智研咨询数据显示,2022年我国直播电商市场规模为34879亿元,较2017年的196.4亿元增长......
  • 火山引擎 ByteHouse:双十一即将到来,直播商家如何用数据“点播成金”?
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群“双十一”电商大促脚步渐近,各大平台的战火又将燃起。直播电商以低成本、高转化率等优势备受商家青睐。据智研咨询数据显示,2022年我国直播电商市场规模为34879亿元,较2017年的196.4亿元......
  • 第二十一篇 - vue中实现页面刷新以及局部刷新的方法
    参考链接:https://blog.csdn.net/qq_41117240/article/details/127275478第一步:在需要局部刷新的标签添加 第二步:在data里面初始化isRefresh的值为true 第三步:在method里面添加刷新函数 第四步:在需要局部刷新的地方调用刷新函数this.updateRefresh()......