过滤器,JSP
1. 过滤器
1.1 什么是过滤器
interface FilenameFilter 文件名过滤器
public boolean accept(File dir, String name);
过滤出你想要的东西
JavaWEB开发中,过滤器作用,限制用户的一些操作。
JavaWEB三大组件 Servlet Filter Listener
1.2 第一个过滤器
1.2.1 web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<filter>
<filter-name>AFilter</filter-name>
<filter-class>com.qfedu.a_filter.AFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
1.2.2 @WebFilter注解配置
package com.qfedu.a_filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/*")
public class AFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("AFilter Working...");
chain.doFilter(request, response);
System.out.println("AFilter Ending...");
}
@Override
public void destroy() {
}
}
1.2.3 过滤器链
1.2.4 Request和Response编码集过滤器
package com.qfedu.workersystem.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebFilter("*.action")
public class AEncodingFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
System.out.println("Encoding Filter Working...");
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
chain.doFilter(request, response);
System.out.println("Encoding Filter Ending...");
}
@Override
public void init(FilterConfig config) throws ServletException {
}
}
2. JSP
2.1 JSP是什么
JSP Java Server Pages
支持:
HTML CSS JS Bootstrap JQuery Java代码
重点:
EL表达式
JSTL表达式
域对象:
Application
Request
Session
Page
JSP ==> Servlet程序 是一个动态资源
2.2 第一个JSP页面
<%--
Created by IntelliJ IDEA.
User: Anonymous
Date: 2020/1/10
Time: 9:22
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%-- HTML支持 --%>
<h1>Hello JSP</h1>
<%-- 支持Java代码 --%>
<%
int num = 10;
System.out.println(10);
out.print(10);
out.print("<a href='http://www.baidu.com'>百度一下你就知道</a>");
%>
</body>
</html>
2.3 内置对象【重点】
2.3.1 九个内置对象
对象名 | 类型 | 说明 |
---|
request | javax.servlet.http.HttpServletRequest | 用户请求 域对象 |
response | javax.servlet.http.HttpServletResponse | 对应用户的响应 |
session | javax.servlet.http.HttpSession | 由session=“true”开关【JSP页面缺省属性】 |
application | javax.servlet.ServletContext | JavaWEB域对象 |
exception | java.lang.Throwable | 由isErrorPage=“false”开关【JSP默认非开启模式】 |
page | java.lang.Object当前对象this | 当前servlet实例 |
config | javax.servlet.ServletConfig | Servlet配置对象, 对应注解配置或者web.xml配置 |
pageContext | javax.servlet.jsp.PageContext | 当前页面,域对象 |
out | javax.servlet.jsp.JspWriter | resp.getWriter(); |
2.3.2 演示
<%@ page import="static javax.servlet.jsp.PageContext.REQUEST_SCOPE" %>
<%@ page import="static javax.servlet.jsp.PageContext.SESSION_SCOPE" %>
<%@ page import="static javax.servlet.jsp.PageContext.*" %><%--
Created by IntelliJ IDEA.
User: Anonymous
Date: 2020/1/10
Time: 11:41
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>01-内置对象</title>
</head>
<body>
<%-- 设置四个域对象键值对数据,保存数据 --%>
<%
// request.setAttribute("name", "saolei");
// session.setAttribute("password", "123456");
// pageContext.setAttribute("age", "16");
// application.setAttribute("gender", "1");
// 通过PageContext对象操作其他域对象
// pageContext.setAttribute("name", "致命魔术", REQUEST_SCOPE);
// pageContext.setAttribute("name", "爱在黎明破晓前", SESSION_SCOPE);
// pageContext.setAttribute("name", "爱在日落黄昏时", PAGE_SCOPE);
pageContext.setAttribute("name", "奇迹", APPLICATION_SCOPE);
%>
<hr>
<%--<%=request.getAttribute("name")%>--%>
<%--<%=session.getAttribute("password")%>--%>
<%--<%=pageContext.getAttribute("age")%>--%>
<%--<%=application.getAttribute("gender")%>--%>
<%--
EL表达式,重点
域对象
page > request > session > application
--%>
<h1>${ name}</h1>
</body>
</html>
2.4 JSP指令
contentType="text/html;charset=UTF-8"
设置当前页面文本样式和编码集,等价于resp.setContentType("text/html;charset=UTF-8");
isErrorPage="true"
当前页面是否为错误处理页面,如果为true,可以使用内置对象exception,如果为false,无法使用
language="java"
解析当前JSP页面使用语句
session="true"
当前页面是否可以使用Session,默认开启状态,如果为false,当前页面中不使用session
errorPage="500.jsp"
指当前页面发送错误之后,错误处理是哪一个页面完成
isELIgnored="true"
JSP页面是否支持EL表达式,默认为true,如果为false,不支持EL表达式
pageEncoding="UTF-8"
页面当前编码集
buffer="8kb"
页面out对象输出缓冲
2.5 JSP动作
<jsp:include> 导入其他页面
<jsp:forward> 转发当前请求到其他JSP页面,可以带走request对象
3. EL表达式【重点】
3.1 基本格式
${propertyName}
数据都是从域对象中获取使用的,并且从域对象中取出数据的顺序
域对象
page > request > session > application
4. JSTL表达式【重点】
4.1 导入JSTL表达式
在JSP页面中声明连接JSTL表达式规范和对应的Jar包
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Jar
javax.servlet.jsp.jstl.jar
jstl-impl.jar
分支结构
if分支结构
switch - case选择结构
for循环