servlet基础03(Filter/jsp语法)
Filter(过滤器)
数据源和目标程序之间的一个类,比目标程序先一步拿到请求,过滤一些不合理的请求,响应时也会经过过滤器。也就是说一次请求成功,会经过2次过滤器
一个类实现implements Filter就是一个过滤器
public class Filter_01 implements Filter {
配置过滤器
通过xml文件和注释,两个不是替代关系,可以互补
<filter>
<filter-name>Filter_01</filter-name> <!--过滤器名称-->
<filter-class>cn.powernode.Servlet_core.Filter_01</filter-class> <!--过滤器地址-->
</filter>
<filter-mapping>
<filter-name>Filter_01</filter-name>
<url-pattern>/context</url-pattern> <!--目标程序-->
</filter-mapping>
doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)方法中的FilterChain filterChain参数的doFilter()方法是判定标准
filterChain.doFilter(servletRequest,servletResponse);//写法
过滤器执行顺序
单个过滤器的执行顺序
请求时执行filterChain.doFilter()方法之前的代码,响应执行的是这个方法后面的方法。
简单来说就是,得到请求后会按顺序执行,当执行到filterChain.doFilter()方法就会跳转到目标程序,目标程序执行完又跳转回来执行filterChain.doFilter()方法之后的代码
多个过滤器的执行顺序
xml从上到下顺序执行,注解方式是按照类名的字典顺序
xml和注解方式都有,就先执行xml文件的过滤器,再执行注解
特殊情况:一个过滤器既有xml配置,又有注解配置,过滤器会正常执行,并且执行2次,一次执行xml,一次执行注解。这种情况很少
过滤范围
一个过滤器的范围
单个请求过滤: <url-pattern>/context</url-pattern> context是请求名称,指这个过滤器过滤指向这段代码的请求
全部请求过滤:<url-pattern>/*</url-pattern> 只要向这个服务器发送请求,就会被这个过滤器过滤
部分过滤请求:<url-pattern>/包名或者文件夹名/*</url-pattern> 过滤向这些包名下的代码的请求
过滤器的应用
字符编码过滤器:如果在过滤器中设置字符编码,就不需要在servlet类中调整字符编码了,如果这个过滤器过滤的是所有请求,那么全部servlet就不需要调整字符编码
登陆过滤器。。。
jsp动态页面
jsp页面的本质上就是另外一种形式的servlet类
在程序执行时是没有jsp页面的,jsp页面在执行时会被翻译成servlet来运行
servlet中可以写java代码也可以编写前端代码
jsp中可以编写前端页面代码,也可以写java代码
换句话说两者是可以互换的,但是还是各司其职比较好不要混写
jsp语法构成
1.指令元素
语法:<%@ 指令 %> 指令有:page、include、taglib
page:页面会自动生成,功能是设置jsp页面基本结构
<%
include:包含其他页面一块显示
<%
taglib:目前忽略
2.脚本元素
在jsp页面中编写java代码
<%! 声明标签 %> 可以写类的属性和方法,相当于在里面写一个类的信息
<% 脚本标签 %> 逻辑代码,相当于main方法,循环、判断等
<%= 输出标签 %> 输出一些数据
*面试题:jsp和html有什么区别
jsp注释:<%-- --%> 不会出现在浏览器端,html注释:<!-- - -> 会出现在浏览器端的源代码中,html注释会造成信息泄露
jsp注释可以注释掉jsp语法,html不能注释掉jsp语法,但能注释掉jsp语法的结果
*面试题:jsp中9个内置对象
内置对象:不需要创建,直接能用的
request 请求对象,和servlet的完全一致
response 响应对象,和servlet的一致
session 会话对象,和servlet的完全一致
application 等于ServletContext对象,全局对象
config 等于ServletConfig对象一致
page 值是this关键字,类型为Object,在类中表示当前对象,在页面中表示当前页面
out JspWriter打印输出流
exception jsp中的异常对象,存储程序中的异常信息
pageContext jsp独有的功能强大的对象,该对象有获取另外8个对象的方法,还可以操作jsp中的四个作用域。该对象是作为系统的默认对象来使用的,由系统来操作,程序员基本上是不使用这个对象
*面试题:jsp中的四个作用域
page:一个页面,作用范围是一个页面,page对象中没有操作作用域的方法,对象的委托给pageContext对象使用(没有什么作用,但是是存在的)
request:一次请求,和servlet完全一致
session:一次会话,和servlet完全一致
application 服务器运行,全局
jsp异常处理
当在jsp中使用java代码,出现了异常,这个页面就无法使用
可以在这个页面中使用errorPage属性跳转到别的页面
<%

浙公网安备 33010602011771号