过滤器,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;

// 约束过滤的资源是以 .action结尾的资源
@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 九个内置对象
对象名类型说明
requestjavax.servlet.http.HttpServletRequest用户请求 域对象
responsejavax.servlet.http.HttpServletResponse对应用户的响应
sessionjavax.servlet.http.HttpSession由session=“true”开关【JSP页面缺省属性】
applicationjavax.servlet.ServletContextJavaWEB域对象
exceptionjava.lang.Throwable由isErrorPage=“false”开关【JSP默认非开启模式】
pagejava.lang.Object当前对象this当前servlet实例
configjavax.servlet.ServletConfigServlet配置对象, 对应注解配置或者web.xml配置
pageContextjavax.servlet.jsp.PageContext当前页面,域对象
outjavax.servlet.jsp.JspWriterresp.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循环
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐