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>