JSP
# JSP
# 语法
- 注释
<%-- 内容 --%> - java 代码块
<% java代码 %> - jsp 表达式
<%= 表达式 %>相对应 out.println () - jsp 声明
<%! 声明变量或者方法 %><%! String str ="abc"; %>如果加!则声明是成员变量 不加则是局部变量 方法必须加!
# 指令
- page 指令 配置 <%@ page 属性名 = 属性值 属性名 = 属性值 %>
- include 指令 包含其他页面
<%@ include file=包含的页面 %> - taglib 指令 可以引入外部标签库
<%@ taglib uri=标签库的地址 prefix=前缀名称 %>
# 细节
九大隐式对象 不需要创建,jsp 已经帮我们创建了
PageContext 对象 是 JSP 独有,在 Servlet 中没有 是四大域对象中的页面域对象,还可以操作其他三个域对象中的属性 还可以获取其八个隐式对象 生命周期随着 JSP 每一个 JSP 都有一个 PageContext 对象
四大域对象
# MVC 模型

# EL 表达式
在 JSP 页面中获取数据 让我们的 JSP 脱离 java 代码块和 JSP 表达式
${表达式内容} 等效于 <% out.println(request.getAttribute("user"))%> 和 <%=request.getAttribute("user") %>
只要是四大域的内容都可以获取出来
先用 setAttribute () 共享数据
# 获取数据
- 基本数据
- ${name}
- 自定义对象数据
- ${对象名}
- ${对象名。属性名} 调用相对应的 get 方法
- 数组类型数据
- ${arr}
- ${arr[0]}
- List 集合数据
- ${list}
- ${list[0]}
- Map 集合数据
- ${map}
- ${map.key}
# 注意事项
- 没有空指针异常
- 没有索引越界异常
- 没有字符串的拼接
- 获取四大域对象是从小到大查找
# 运算符



# EL 表达式隐式对象

# JSTL
JSP 标准标签库 可以利用这些标签取代 JSP 页面上的 JAVA 代码 从而提高的可读性

# 核心标签库

导入 jstl.jar 包并添加到项目中
在 jsp 中添加
<%@ taglib uri="http://java.sun.com/jsp/jst1/core" prefix="自定义标签"%>1使用 jstl 标签
# Filter
过滤器,Filter 是用来过滤请求资源和资源响应的对象,并且按需求来处理不同的请求

# FilterChain

继承 javax.servlet.Filter
重写 doFilter () 方法
处理逻辑
使用 FilterChain 的 dodoFilter 放行
使用注解 @WebFilter ("拦截的路径") 拦截需要拦截请求的路径
使用配置文件方式 在 web.xml 与之前 servlet 类似
<filter> <filter-name>demo</filter-name> <filter-class>com.example.demo.demo</filter-class> </filter> <filter-mapping> <filter-name>demo</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>1
2
3
4
5
6
7
8
多个过滤器,取决于过滤器映射的顺序
# 生命周期
- 创建 当应用价值实例化对象并执行 init 方法
- 过程 执行 doFilter 方法
- 销毁 当应用卸载或者服务器停止 执行 destroy 方法
# FilterConfig
FilterConfig 是一个接口 代表过滤器的配置对象 可以加载一些初始化参数 不需要创建 由服务器通过 init 方法传递提供
getFilterName () 获取过滤器名称
getInitParameter (String key) 根据 key 获取 value
<filter> <filter-name>demo</filter-name> <filter-class>com.example.demo.demo</filter-class> <!-- 需要添加init-param标签--> <init-param> <param-name>key</param-name> <param-value>value</param-value> </init-param> </filter>1
2
3
4
5
6
7
8
9
getInitParameterNames () 获取所有参数的 key
getrServletContext () 获取应用上下文对象
# 过滤器五种拦截行为
Filter 过滤器默认拦截的是请求,如需要拦截请求转发 请求包含 需要在配置文件配置

<!-- 全局错误页面 -->
<error-page>
<!-- 错误类型-->
<exception-type>java.lang.Exception</exception-type>
<!-- 发生错误后跳转页面 虚拟路径 -->
<location>/err.jsp</location>
</error-page>
<error-page>
<!-- 错误代码 -->
<error-code>404</error-code>
<location>/err.jsp</location>
</error-page>
2
3
4
5
6
7
8
9
10
11
12


