java过滤器 配置路径_JavaWeb开发基础-路径、包含、过滤器

本文介绍了JavaWeb开发中的路径类型,包括相对路径和绝对路径的使用,强调了绝对路径在开发中的优势。此外,详细讲解了静态和动态包含的区别,并提醒在包含文件时可以直接使用绝对路径。最后,探讨了过滤器的概念,详细阐述了Filter的创建、设置和配置,特别是如何利用过滤器解决字符编码问题以及根据正则表达式过滤访问地址的方法。
摘要由CSDN通过智能技术生成

【声明:】本文是作者(蘑菇v5)原创,版权归作者 蘑菇v5所有,侵权必究。本文首发在简书。如若转发,请注明作者和来源地址!未经授权,严禁私自转载!

一、路径问题:

两个路径:相对路径和绝对路径

相对路径:

相对于当前文件夹来设置路径,其中..表示上一级目录

Link To 02

以上代码表示访问当前文件夹的上一级文件夹的上一级文件夹中的02文件夹中的2.jsp

建议不要使用相对路径

绝对路径:

根据整个网站的根目录来确定绝对路径,使用/来指明根目录

特别注意,在java中,/表示的不带有上下文路径,所以需要使用request.getContextPath()来获取上下文路径。

Link To 01

在开发过程一般都是使用绝对路径

二、包含问题:

有两种包含方式:静态和动态, 实践中建议使用动态包含

静态包含:

,静态包含,直接把整个文件包含进来,在包含前不做任何处理

26c68bb156c8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图1

动态包含:

,在包含之前会先对这个动态文件进行编译,之后把编译的结果以静态文件的形式包含进来

26c68bb156c8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图2

注意:在包含文件时可以直接使用绝对路径,系统会自动加上上下文路径

三、过滤器问题:

过滤器介绍:

Filter(过滤器)和Servlet很类似,均需要进行相应的配置

1、Filter的创建

定义一个类让其实现Filter接口

2、Filter的设置

在doFilter()方法中加入相应的拦截代码,加入了相应的拦截代码之后需要使用chain.doFilter(req,resp)让请求继续走

3、Filter的配置

在web.xml中进行配置

TestFilter

org.itat.filter.MyFilter

TestFilter

/*

url-pattern表示要拦截哪些请求:

/*:表示拦截所有请求

/01/1.jsp : 表示仅仅只对01/1.jsp文件进行拦截

/01/* : 表示拦截01/这个文件夹中的所有信息

特别注意:/01/*.jsp这种方式是不允许的,只允许以上三种方式

使用过滤器解决字符编码的问题:

步骤:定义一个CharacterEncodingFilter,在doFilter中使用request.setCharacterEncoding(xxx);来解决

注意:当有多个Filter被定义的时候会每一个filter都执行,执行顺序按照web.xml中配置先后执行,为了让一些常量在配置文件中定义,可以使用

CharacterFilter

org.itat.filter.CharacterEncodingFilter

Char

UTF-8

init-param就是用来定义相应的初始化参数,需要在Filter的init中通过config来获取

@Override

public void init(FilterConfig config) throws ServletException {

charEncoding = config.getInitParameter("Char");//获取初始化参数

if(charEncoding==null||"".equals(charEncoding)) {

charEncoding = "UTF-8";

}

}

charEncoding需要在doFilter中使用,所以将charEncoding定义成成员变量。

chain.doFilter(request,response);

使用过滤器根据正则表达式过滤访问地址:

1、在初始化参数中传递一个正则表达式

pattern

.*\.jsp|.*Servlet

.*\.jsp|.*Servlet表示匹配.jsp结尾和Servlet结尾的所有字符串

2、获取浏览器的访问地址

HttpServletRequest req = (HttpServletRequest)request;

String url = req.getRequestURI();//获取浏览器的访问地址

参数中是ServletRequest,ServletRequest中没有getRequestURI方法,getRequetURL方法是在HttpServletRequest中,所以需要进行强制类型转换(HttpServletRequest req = (HttpServletRequest)request;)

3、判断是否匹配

if(url.matches(pattern)) {

System.out.println(url);

System.out.println(url.matches(pattern));

request.setCharacterEncoding(charEncoding);//修改字符编码

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值