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

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



6.4. EL 表达式隐式对象

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

7.1. 核心标签库

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

8.1. 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>
多个过滤器,取决于过滤器映射的顺序
8.2. 生命周期
- 创建 当应用价值实例化对象并执行init方法
- 过程 执行doFilter方法
- 销毁 当应用卸载或者服务器停止 执行 destroy 方法
8.3. 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>
getInitParameterNames() 获取所有参数的key
getrServletContext() 获取应用上下文对象
8.4. 过滤器五种拦截行为
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>



