过滤器是驻留在Web服务器上的Web组件,它可以过滤从客户端传递到服务器端的请求和响应。
可以部署多个过滤器,这些过滤器组成一个过滤器链。
过滤器API包括Filter、FilterConfig、FilterChain三个接口。
过滤器生命周期包括初始化、过滤、销毁三个阶段。
部署描述文件中使用<filter>和<filter-mapping>元素进行配置。
过滤器链中容器会先调用匹配请求URI的过滤器,然后才是匹配servlet名的过滤器。
过滤器的包装器类可以更改请求和响应的内容。
Servlet的缺陷
Servlet的编码、部署和调试任务繁琐。
生成动态网页繁琐,不利于项目分工。
采用JSP技术编写动态页面
由HTML语句和嵌套在其中的Java代码组成的一个普通文本文件。
JSP页面的扩展名必须为.jsp。
JSP运行机制
1、页面编译
Web容器负责将Servlet代码编译为字节码。与源文件放在同一个目录下。
在JSP生命周期中,整个翻译和编译步骤只发生一次。
2、类装载
Web容器装载新生成的servlet类
3、实例化
Web容器创建servlet实例
4、页面初始化
Web容器调用Servlet示例的jspInit()方法,JSP页面装载资源
5、页面服务
容器创建一个新线程来处理这个客户的请求。
servlet对象的_jspService()方法运行。
6、页面销毁
容器调用生成的servlet对象的jspDestroy()方法,销毁装载的资源
JSP生命周期
1、由JSP引擎将JSP页面翻译成JAVA代码。
2、将JAVA代码编译成class字节码文件。
3、加载到容器。
4、由容器实例化成对象。
5、初始化阶段相关的方法是jspInit() 。
6、请求到达,调用服务阶段相关的方法是_jspService()。
7、销毁阶段相关的方法是jspDestroy()
JSP通常用于简化创建产生文本的Servlet,而Servlet更适合于发送原生字节到客户端或需要用Java源代码完全控制源代码的场合。二者可以很好的分开。
JSP脚本元素
声明:<%! 声明 %>
Scriplet:<% 代码 %>
脚本表达式:<%= 脚本表达式 %>
JSP注释
JSP页面中可以插入三种不同类型的注释:
1、JSP注释,其语法结构为: <%--注释内容--%>
2、HTML注释 :<!--注释内容-->
3、Java代码注释
JSP指令
提供整个JSP页面的相关信息。
用于JSP页面与容器之间的通信。
在JSP中,有三种类型的指令:
1、page指令为当前页面提供处理指令
2、include指令用于把另一个文件包含在JSP中
3、taglib指令指定如何包含和访问自定义标签库