• 【JavaWeb】JSP学习笔记


    1 JSP

    1.1 什么是JSP

    • JSP:Java Server Pages,Java服务端页面

    • JSP是一种动态的网页技术,其中既可以定义HTML、CSS、JS等静态内容,还可以定义Java代码的动态内容

    • JSP = HTML + Java,用于简化开发的

    • JSP 本质上就是一个Servlet

    • JSP在被访问的时候,又JSP容器(Tomcat)将其转换为Java文件(Servlet,.java文件),再由JSP容器将其编译(.class文件),最终对外提供服务的其实就是这个字节码文件。

    • JSP已经逐渐退出历史舞台,取而代之的是Html+AJAX,或者Vue

    image-20220913210031359

    1.1.1 JSP的发展历程

    image-20220913214156054

    1.2 JSP的快速入门

    1.2.1 引入依赖

    还是要使用provided,和 Servlet一样

        <dependency>
          <groupId>javax.servlet.jspgroupId>
          <artifactId>jsp-apiartifactId>
          <version>2.2version>
          <scope>providedscope>
        dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1.2.2 创建jsp文件

    放在Webapp下

    image-20220913212043296

    1.2.3 编写JSP代码

    效果是java控制台输出 你好啊,页面上展示 好什么好都穷的快要饭了

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        Title
    
    
        <%
            System.out.println("你好啊!");
        %>
        

    好什么好,都快穷的要饭了

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    image-20220913212238242

    image-20220913212249287

    1.3 JSP脚本(很少用)

    1.3.1 JSP脚本的作用

    在Jsp页面定义Java代码,其实JSP本身就是一个Servlet,其中的HTML代码都是通过write展示出来的

    1.3.2 JSP脚本的分类

    因为写起来太麻烦了,就不写了

    样式作用
    <% 代码 %>定义的java代码,在service方法中,service方法中可以定义什么,该脚本就可定义什么。
    <%! 代码 %>定义的java代码,在jsp转换后的java类的成员位置。
    <%=代码 %>定义的java代码,会输出到页面上,输出语句中可以定义什么,该脚本就可定义什么。

    1.3.3 JSP脚本的截断

    写一段代码就明白了,作用就是在一些java代码中嵌入html代码,其实和原理就是通过write把html代码渲染到页面上。

    <%
    	for(int i=0;i
     		//在这里写html代码
    		
    			<%=brand.getId()%>
                <%=brand.getBrandName()%>
    		
    <%
        }
    %>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    1.4 JSP的缺点

    image-20220913213800184

    基于上,所以JSP已经逐渐退出历史舞台,只有部分老公司还在用。

    2 EL和JSTL

    2.1 EL

    2.1.1 什么是EL

    • El:Expression Language,表达式语言,用于简化JSP页面内的Java代码。

    • 主要功能:获取数据

    • 语法:${expression} : 获取域中存储的key为expression的数据

    2.1.2 Java Web 四大域对象

    1. page : 当前页有效
    2. request:当前请求有效
    3. session:当前会话有效
    4. application:当前应用有效

    el表达式获取数据,会依次用这四个域中寻找,直到找到为止,找到之后就不再寻找了,常用的是requestsession

    image-20220913214648967

    2.2 JSTL

    2.2.1 什么是JSTL

    JSP标准标签库(JSP Standarded Tag Library),使用标签取代JSP页面上的代码。

    2.2.2 JSTL的常用标签

    https://www.runoob.com/jsp/jsp-jstl.html

    image-20220913215048129

    2.2.3 JSTL的使用

    2.2.3.1 引入JSTL的依赖 JSTL和Standard
     <dependcies>
    	<dependency>
          <groupId>jstlgroupId>
          <artifactId>jstlartifactId>
          <version>1.2version>
        dependency>
        
        <dependency>
          <groupId>taglibsgroupId>
          <artifactId>standardartifactId>
          <version>1.1.2version>
        dependency>
      dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    2.2.3.2 在jsp中引入jstl标签库

    即在第二行加入改代码,其中prefix代表前缀,一般为c

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    • 1
    2.2.3.3 例子
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    
        Title
    
    
        <%--if的使用--%>
        
            启动
        
        
            禁止
        
        <%--forEach的使用:和for一样--%>
        
            
                <%--此处的id和brandName 应该指的是get方法 后缀
                    会把id 变成 Id然后加上 get去找到这个方法
                    也就是其实是调用的get方法,这也符合封装的特性
                --%>
                ${brand.id}
                ${brand.brandName}
            
        
        <%--forEach的第二种方式--%>
        <%--
            类似于
            for(int i=1;i<5;i++)
            {
    
            }
            begin:开始
            end:结束
            step:步长
        --%>
        
            ${i}
        
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
  • 相关阅读:
    日常开发中比较使用的命令行
    LeetCode 164. 最大间距
    【C语言】字符函数和内存操作函数
    glib g_signal_new 参数用法
    Android 对于状态栏和导航栏的操作
    Jackson的使用
    在项目中如何利用JS去修改CSS的属性值(二) --- :root+var()方法
    平衡二叉树的 AVL 实现
    今天运气不错
    七牛云+PicGo搭建个人图床
  • 原文地址:https://blog.csdn.net/m0_59792745/article/details/126842743