javaWeb知识点总结—— 关乎JSP、JSTL、Filter、Listener的知识(含详细思维导图)

javaWeb知识点

JSP

概念

JSP全称Java Server Page(Java服务端页面),通俗上来讲就是可以编写Java代码的HTML页面。在最早期是没有JSP的,那么后端开发人员想要展示一个网页,就是在Servlet中 拼接html. 于是就有了JSP, 但是JSP不是一门新的技术,他的本质上还是Servlet, 意思是服务器还是会将 JSP 转成Java代码,在Java代码中,还是去拼接的页面。

编译指令

  • 页指令
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" %>

contentType:内容类型;
language: 页面的语言
import: java.lang.❄ 、javax.servlet.❄、javax.servlet.jsp.❄、javax.servlet.http.*四个包不需要显式的导入。

  • 包含指令
  <%@ include file=”” %>

用法是在file中书写另外一个jsp页面,该指令是一个编译期的行为。

  • 标签库指令
  <%@ taglib %>

标签库指令是讲到jstl的时候会用到。

  • JSP声明

脚本语法

  • 注释

    html注释

  <!-- -->

隐藏注释

  <%-- --%>
  • 脚本段
  <%-- --%>
  • jsp声明与表达式

    声明:<%! int a = 3 %>
    表达式:<%=a%>

动作指令或者标准动作

- jsp:include
  <jsp:include page=""></jsp:include>
include的动作指令与编译指令,最大的区别在于动作指令是一个运行期的行为,就在在代码的运行阶段才会将页面拼接到一起,而include的编译指令是一个编译期的行为,即页面是在编译阶段就已经合并到一起了。
  • jsp:forward与jsp:param
  <jsp:forward page="forwarded.jsp">
     <jsp:param name="username" value="zhangsan"/>
  </jsp:forward>
jsp:forward指令的意思是直接跳转到page对应的页面,可以通过 jsp:param携带参数。而到被跳转的
页面可以直接通过 request(jsp内置对象) 来获取参数的值,获取的方式如下:
  <%
    String name = request.getParameter("username");
  %>
  <%=name %>
- jsp:useBean、jsp:setProperty、jsp:getProperty
  <%-- 相当于实例化了一个对象:User user = new User() --%>
  <jsp:useBean id="user" class="com.qf.domain.User"/>
  <%-- 相当于 user.setUsername("张三") --%>
  <jsp:setProperty name="user" property="username" value="张三"></jsp:setProperty>
  <%-- 相当于 user.getUsername() --%>
  <jsp:getProperty name="user" property="username"/>

jsp九大内置对象

request 、response、pageContext、session、application、out、congif、
page、exception

最常用的有四个:request,response,session,application

EL

  • 概念

    • El(Expression Language),全称表达式语言,目的是尽量的消除JSP页面中的java代码
  • 使用样例

  ${param.username}       # 相当于request.getParameter(“”)
  ${sessionScope.name}      # session.getAttribute(“name”)
  ${applicationScope.name}    # application.getAttribute(“name”);
  ${requestScope.name}      # request.getAttribute(“name”)
  ${3 + 4}  
  ${7 * 8}  
  ${8 / 7}
  ${sessionScope.user.name}   # 获取session中user的name属性
  ${user.name}         # 会按照request -> session -> application的顺序查找
  {empty requestScope.gender}  #判断一个数据是否为null, 或者一个字符串为空或""
  ${empty requestScope.gender ? "默认值" : requestScope.gender}

JSTL

  • 概念

    • JSTL(jsp standard tag library)全称为"标准标签库",使用一套标准的标签库,来极大的简化代码的编写,必须要配置EL来使用
  • 使用样例

  1) 引入javax.servlet.jsp.jstl.jar和jstl-impl.jar两个jar包
          2) 在jsp页面的头顶加上标准标签库指令:
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  

if语法

  <c:if test="${requestScope.age gt 18}">

多个条件

  <c:if test="${empty requestScope.gender && requestScope.age gt 18}">
  性别为空,并且是成年人.
  </c:if>
- **多个条件**

Filter 、Listener

Filter(过滤器)

分析请求,将请求发送给指定的资源或自己创建一个响应返回。
在请求到达服务器前处理请求,设置头请求信息,将请求封装成符合规则的对象。
在响应到达客户端处理响应,将响应封装成符合规则的对象。
过滤器的用途:
认证过滤
令牌过滤
登录和审核过滤
图像装换过滤
数据压缩过滤
编码步骤:
编码,实现Filter接口
部署,在web.xml配置
运行测试

  • 过滤器是一个用于拦截在数据源和数据目的地之间消息的一个对象。

    • Filter接口中的方法

    • init();

    • doFailter();

    • destroy();

Listener(监听器)

  • 当服务器发生了某个事件(Event)时,调用事件处理程序。

  • servletContext
    - 实现的接口:servletContextListener

    • ServletRequest

      • 实现的接口:ServletRequestListener
    • HttpSession

      • 实现的接口:HttpSessionListener
  • 常用用途

    统计在线人数:HttpSessionListener
    加载初始化信息:servletContextListener
    统计在线人数
    实现访问监控

Cookie 、Session

Cookie

使用步骤:
1. 创建Cookie对象,绑定数据

* new Cookie(String name, String value) 
	2. 发送Cookie对象
* response.addCookie(Cookie cookie) 
	3. 获取Cookie,拿到数据
  • Cookie[] request.getCookies()
  • 概念:客户端会话技术,将数据保存到客户端

    • 特点

      1. cookie存储数据在客户端浏览器
      2. 浏览器对于单个cookie 的大小有限制(4kb) 以及 对同一个域名下的总cookie数量也有限制(20个)
    • 作用

      作用:
      1. cookie一般用于存出少量的不太敏感的数据
      2. 在不登录的情况下,完成服务器对客户端的身份识别

Session

  • 概念::服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。HttpSession

  • 原理: Session的实现是依赖于Cookie的。

  • 特点:

    1. session用于存储一次会话的多次请求的数据,存在服务器端
      1. session可以存储任意类型,任意大小的数据

Session与cookie的区别

  1. session存储数据在服务器端,Cookie在客户端
    2. session没有数据大小限制,Cookie有
    3. session数据安全,Cookie相对于不安全

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43501566/article/details/105692822