• JSP知识


    jsp: java server page 运行在服务器端的网页

    jsp运行流程

    • 翻译
      如果是第一次访问JSP时, 服务器会帮我们把jsp翻译为Servlet.

    • 编译
      把翻译后的Servlet编译为字节码文件, 装载到JVM虚拟机中运行

    • 初始化
      调用翻译后Servlet的_jspInit初始化方法

    • 运行
      之后每一次访问jsp时只调用 _jspService 方法

    五个脚本

    <%--注释标签--%>
    
    <%!
       声明标签,声明脚本,声明属性和方法
    %>
    
    <%@ 指令标签,引包 %>
    
    <%
        脚本标签,计算
    %>
    
    <%=  表达式标签,赋值 %>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 注释标签
    <%--注释标签--%>
    
    • 1
    • 声明标签
    <%--声明属性--%>
    <%!
        private final static String SUCCESS = "success";
    %>
    <%--声明方法--%>
    <%!
        public int plus(int a, int b) {
            return a + b;
        }
    %>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 指令标签
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ page import="java.util.Date" %>
    
    • 1
    • 2
    • 脚本标签
    <%
        int i = 10;
        i++;
    %>
    
    • 1
    • 2
    • 3
    • 4
    • 表达式标签
    <%= ++i%>
    
    • 1

    翻译位置

    • 注释标签
      不翻译,在jsp翻译为servlet时把所有的注释标签全部删除

    • 声明标签
      翻译到类的内部

    • 指令标签
      分为响应类型和引包两种,根据指令的类型翻译到指定位置

    • 脚本标签
      翻译到_jspService方法中

    • 表达式标签
      翻译到_jspService方法中

    <%--指令标签--%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Titletitle>
    head>
    <body>
    <%--翻译到_jspService方法中--%>
    <%
        int x = 10;
    %>
    <%--类的内部,全局变量--%>
    <%!
        int x = 20;
    %>
    <%!
        public int plus(int x, int y) {
            return x + y;
        }
    
    %>
    <%--this.x:20 x:10--%>
    <%=plus(this.x, x)%>
    body>
    html>
    
    • 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

    前后端结合

    package com.javakc.web1.user;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    @WebServlet(
            name = "UserServlet",
            urlPatterns = "/user.do",
            loadOnStartup = 0
    )
    //分发器重定向
    public class UserServlet9 extends HttpServlet {
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //模拟数据库查询数据
            List<Map<String, Object>> list = new ArrayList<>();
            for (int i = 1; i <= 10; i++) {
                Map<String, Object> data = new HashMap<>();
                data.put("id", i);
                data.put("name", "admin" + i);
                list.add(data);
            }
            request.setAttribute("list", list);
    
            request.getRequestDispatcher("/jsp/success2.jsp").forward(request, response);
        }
    }
    
    • 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
    <%--指令标签--%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ page import="java.util.Map" %>
    <%@ page import="java.util.List" %>
    <html>
    <head>
        <title>Titletitle>
    head>
    <body>
    <table>
        <thead>
        <tr>
            <th>序号th>
            <th>IDth>
            <th>NAMEth>
        tr>
        thead>
        <tbody>
        <%
            List<String, Object>> list = (List<String, Object>>) request.getAttribute("list");
            for (int i = 0; i < list.size(); i++) {
                Map<String, Object> map = list.get(i);
        %>
        
        <tr>
            <td><%=i + 1%>
            td>
            <td><%=map.get("id")%>
            td>
            <td><%=map.get("name")%>
            td>
        tr>
    
        <%
            }
        %>
        tbody>
    table>
    body>
    html>
    
    • 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

    九个内置对象

    内置对象 = 隐式对象,无需开发人员定义, 可以直接使用到的对象

    requestHttpServletRequest 请求
    responseHttpServletResponse 响应
    sessionHttpSession
    applicationServletContext
    pageContextPageContext 获取与jsp页面相关的信息
    configServletConfig
    outWriter
    pagethis
    exception异常类(仅限于错误页面使用)
  • 相关阅读:
    echarts如何画地图
    第十三届蓝桥杯 C++ C 组省赛 J 题——重复的数 (AC)
    从DevOps实践落地的角度谈谈“流程”和“规范"的反模式
    Blender批量修改名称
    linux 新增定时任务
    VMware Workstation 17 新特性介绍
    小学时代的一些回忆
    three3D的vite+vue版本基础代码
    PMI认证考试成绩查询步骤指南,建议收藏!
    困难的实训项目(关键词-解决方案)(相关搜索:虚拟机|操作系统)(相关搜索:虚拟机|操作系统)
  • 原文地址:https://blog.csdn.net/qq_45939736/article/details/126959275