JSP详细

news2024/11/26 10:40:03

一.JSP简介

  • JSP(全称Java Server Pages)java服务器页面。 是一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。
  • JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求,是简化版的Servlet。

二.JSP入门

1.第一个JSP文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>第一个JSP页面</title>
</head>
<body>
    <h1>hello JSP</h1>
</body>
</html>

2.JSP的运行方式

(1)将模块发布到服务器上

  • 添加exploded
  • 将exploded发布到服务器上

(2)运行该项目中的jsp文件

在这里插入图片描述

3.JSP文件执行流程

(1)JSP文件被第一次访问时的流程

在这里插入图片描述

(2)JSP文件未被修改情况下第N次被访问时的流程

在这里插入图片描述

4.翻译的java文件及编译的字节码文件

(1)存储位置

在这里插入图片描述

(2)查看翻译后的Java文件

在这里插入图片描述

(3)查看父类源码

在这里插入图片描述

(4)结论

  • JSP实际上就是一个Servlet

三.JSP与与Servlet的区别

JSPServlet
功能主要功能是给用户看的页面控制器
内置对象JSP被Tomcat翻译成java文件时直接赋予了九大内置对象没有
限制简化版的Servlet,功能有限功能更加全面
不算一个纯粹的Java类Servlet是一个纯粹的Java类

四.JSP三大指令

1.三大指令

指令说明
page页面描述
include包含
taglib引入其他工具

2.page指令

(1)导包

在这里插入图片描述

  • language:当前页面的脚本语言
  • contentType:页面响应体的编码格式
  • import:导包

(2)页面出错跳转

在这里插入图片描述

  • ​ errorPage:如果当前页面出错,就运行指定的页面

3.include指令

  • include指令:包含

(1)编写测试页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>第一个JSP页面</title>
</head>
<body>
    <%@ include file="head.jsp"%>
    <h1>这是页面主体</h1>
    <%@ include file="foot.jsp"%>
</body>
</html>

(2)运行测试

在这里插入图片描述

4.taglib指令

  • taglib指令:引入其他工具

在这里插入图片描述

五.示例学生信息展示

1.创建学生表

CREATE TABLE student(
	sid INT PRIMARY KEY AUTO_INCREMENT,
	sname VARCHAR(20) NOT NULL,
	sgender CHAR(1),
	sage INT,
	semail VARCHAR(20)
);

2.创建实体类

package com.demo02.entity;

public class Student {
    private int sid;
    private String sname;
    private String sgender;
    private int sage;
    private String semail;

    public Student() {
    }

    public Student(int sid, String sname, String sgender, int sage, String semail) {
        this.sid = sid;
        this.sname = sname;
        this.sgender = sgender;
        this.sage = sage;
        this.semail = semail;
    }

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getSgender() {
        return sgender;
    }

    public void setSgender(String sgender) {
        this.sgender = sgender;
    }

    public int getSage() {
        return sage;
    }

    public void setSage(int sage) {
        this.sage = sage;
    }

    public String getSemail() {
        return semail;
    }

    public void setSemail(String semail) {
        this.semail = semail;
    }

    @Override
    public String toString() {
        return "Student{" +
                "sid=" + sid +
                ", sname='" + sname + '\'' +
                ", sgender='" + sgender + '\'' +
                ", sage=" + sage +
                ", semail='" + semail + '\'' +
                '}';
    }
}

3.创建StudentDao.java

package com.demo02.dao;

import com.demo02.entity.Student;

import java.util.List;

public interface StudentDao {
    List<Student> getAllStudent();
}


package com.demo02.dao.impl;

import com.demo02.dao.StudentDao;
import com.demo02.entity.Student;
import com.demo02.util.C3P0Util;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.SQLException;
import java.util.List;

public class StudentDaoImpl implements StudentDao {

    QueryRunner queryRunner = new QueryRunner(C3P0Util.getDataSource());

    @Override
    public List<Student> getAllStudent() {
        List<Student> list = null;
        String sql = "select * from student";
        try {
            list = queryRunner.query(sql, new BeanListHandler<>(Student.class));
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }
}

4.创建StudentService.java

package com.demo02.service;

import com.demo02.entity.Student;

import java.util.List;

public interface StudentService {
    List<Student> getAllStudent();
}


package com.demo02.service.impl;

import com.demo02.dao.StudentDao;
import com.demo02.dao.impl.StudentDaoImpl;
import com.demo02.entity.Student;
import com.demo02.service.StudentService;

import java.util.List;

public class StudentServiceImpl implements StudentService {

    StudentDao studentDao = new StudentDaoImpl();

    @Override
    public List<Student> getAllStudent() {
        return studentDao.getAllStudent();
    }
}

5.创建StudentServlet.java

package com.demo02.servlet;

import com.demo02.entity.Student;
import com.demo02.service.StudentService;
import com.demo02.service.impl.StudentServiceImpl;

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.io.PrintWriter;
import java.util.List;

@WebServlet("/studentServlet")
public class StudentServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        StudentService studentService = new StudentServiceImpl();
        List<Student> list = studentService.getAllStudent();
        /*PrintWriter out = resp.getWriter();
        for (Student stu:list) {
            out.print("<table>");
            out.print(stu);
        }
        out.close();*/
        //带着学生信息跳转到student.jsp
        req.setAttribute("stuList",list);
        req.getRequestDispatcher("student.jsp").forward(req,resp);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
    }
}

6.index.html中请求路径的书写

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    恭喜您,登录成功<br>
    <a href="studentServlet">展示所有学生信息</a>
</body>
</html>

7.创建student.jsp

<%@ page import="java.util.List" %>
<%@ page import="com.etime.entity.Student" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <table border="1" cellspacing="0" cellpadding="0" width="500">
        <tr>
            <td>学号</td>
            <td>姓名</td>
            <td>性别</td>
            <td>年龄</td>
            <td>邮箱</td>
        </tr>
        <%-- 脚本程序 --%>
        <%-- 纯java解析代码写到<%%>中,java获取的数据显示到页面上时需要写到<%=%>中 --%>
        <%
            List<Student> list = (List<Student>)request.getAttribute("stuList");
            for (Student student:list) {
        %>
                <tr>
                    <td><%=student.getSid()%></td>
                    <td><%=student.getSname()%></td>
                    <td><%=student.getSgender()%></td>
                    <td><%=student.getSage()%></td>
                    <td><%=student.getSemail()%></td>
                </tr>
        <%
            }
        %>
    </table>
</body>
</html>

六.动作标签

  • 与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用

  • JSP动作元素是用XML语法写成的

  • 利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码

  • 动作元素只有一种语法,它符合XML标准

    • <jsp:action_name attribute="value" />
      

1.动作标签分类

语法描述
jsp:include在页面被请求的时候引入一个文件。
jsp:useBean寻找或者实例化一个JavaBean。
jsp:setProperty设置JavaBean的属性。
jsp:getProperty输出某个JavaBean的属性。
jsp:forward把请求转到一个新的页面。
jsp:plugin根据浏览器类型为Java插件生成OBJECT或EMBED标记。
jsp:element定义动态XML元素
jsp:attribute设置动态定义的XML元素属性。
jsp:body设置动态定义的XML元素内容。
jsp:text在JSP页面和文档中使用写入文本的模板

2.动作标签常见属性

  • 所有的动作标签都有两个属性:id属性和scope属性
属性描述
idid属性是动作标签的唯一标识,可以在JSP页面中引用。动作标签创建的id值可以通过PageContext来调用
scope该属性用于识别动作标签的生命周期。 id属性和scope属性有直接关系,scope属性定义了相关联id对象的寿命。 scope属性有四个可能的值: page, request, session,application。

3.include指令(静态包含)与include标签(动态包含)的区别

1、语法不一样

2、翻译方式不一样,指令只翻译一个文件,标签翻译所有文件

3、指令的效率相对较高,标签较低

4、指令不能携带数据,标签可以

七.JSP九大内置对象

一.九大内置对象

  • Tomcat将JSP文件翻译成Java文件时给的
内置对象描述
request请求对象
response响应对象
config初始化数据对象
application服务器对象
out输出对象
page当前页面对象,类似于Java中的this
ageContext页面内容对象
session会话对象
exception异常对象

2.内置对象的创建

在这里插入图片描述

八.JSP四大作用域

1.作用域

作用域作用域作用域作用域
Servletrequest:针对请求,一次请求内有效session:针对浏览器,浏览器不关闭就有效ServletContext:针对项目,在当前项目中有效
JSPrequest:针对请求,一次请求内有效session:针对浏览器,浏览器不关闭就有效application:针对模块/项目,在当前模块/项目中有效pageContext:针对页面,在当前页面内有效。(是JSP独有的)

2.作用域对象方法

  • 用域对象其实就是容器
  • 内部存储数据
  • 存储的数据在他的作用域范围内都能使用

(1)作用域都有的方法

方法
setAttribute(String,Object)
getAttribute(String)
removeAttribute(String)
  • 示例
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        request.setAttribute("color","red");
    %>
    <%=request.getAttribute("color")%>
    <%
        request.removeAttribute("color");
    %>
    <%=request.getAttribute("color")%>
</body>
</html>

2.在test.jsp中存入四个作用域的数据,在当前页面又取出来

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        pageContext.setAttribute("pageContext","green");
        request.setAttribute("request","red");
        session.setAttribute("session","yellow");
        application.setAttribute("application","blue");
    %>

    <%=pageContext.getAttribute("pageContext")%><br>
    <%=request.getAttribute("request")%><br>
    <%=session.getAttribute("session")%><br>
    <%=application.getAttribute("application")%>

</body>
</html>
  • 当前页面中,四个作用域都有效

3.在test.jsp中存入四个作用域的数据,通过请求转发到second.jsp,再在second.jsp中取出这些数据

(1)test.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        pageContext.setAttribute("pageContext","green");
        request.setAttribute("request","red");
        session.setAttribute("session","yellow");
        application.setAttribute("application","blue");
        request.getRequestDispatcher("second.jsp").forward(request,response);
    %>
</body>
</html>

(2)second.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%=pageContext.getAttribute("pageContext")%><br>
    <%=request.getAttribute("request")%><br>
    <%=session.getAttribute("session")%><br>
    <%=application.getAttribute("application")%>
</body>
</html>
  • pageContext作用域范围只在当前页面

4.在test.jsp中存入四个作用域的数据,通过重定向到second.jsp,再在second.jsp中取出这些数据

(1)修改test.jsp代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        pageContext.setAttribute("pageContext","green");
        request.setAttribute("request","red");
        session.setAttribute("session","yellow");
        application.setAttribute("application","blue");
        response.sendRedirect("second.jsp");
    %>
</body>
</html>
  • 使用重定向,request就失效

5.关闭浏览器,再打开浏览器,直接访问second.jsp

  • 浏览器关闭,session就失效

在这里插入图片描述

6.重启服务器,直接访问second.jsp

  • 服务器关闭,application失效

在这里插入图片描述

九.EL表达式

1.EL表达式概述

  • EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。

2.EL内部进行运算

运算运算符
算数+ - * /
关系> >= < <= == !=
逻辑&& || !
条件?:
empty

3.示例

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>第一个JSP页面</title>
</head>
<body>
    ${1+1}
</body>
</html>

4.EL在项目中的运用

1、获取变量的值(变量必须放到作用域中)

2、获取对象的属性值

3、获取集合的数据

(1)示例

<%@ page import="com.etime.entity.User" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>第一个JSP页面</title>
</head>
<body>
    <%
        String color = "red";
        pageContext.setAttribute("c",color);
    %>
    ${c}<br>

    <%
        User user = new User(1,"mary");
        pageContext.setAttribute("u",user);
    %>
    ${u.id}
    ${u.name}<br>

    <%
        User user1 = new User(1,"mary");
        User user2 = new User(2,"tom");
        User user3 = new User(3,"jack");
        List<User> list = new ArrayList<>();
        list.add(user1);
        list.add(user2);
        list.add(user3);
        pageContext.setAttribute("uList",list);
    %>
    ${uList.get(1).id}
    ${uList.get(1).name}

</body>
</html>

5.EL表达式获取作用域的数据

<%@ page import="com.etime.entity.User" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>第一个JSP页面</title>
</head>
<body>
    <%
        pageContext.setAttribute("pc","green");
        request.setAttribute("req","red");
        session.setAttribute("sess","yellow");
        application.setAttribute("app","blue");
    %>
    ${pc}<br>
    ${req}<br>
    ${sess}<br>
    ${app}
</body>
</html>

6.四大作用域中存入了相同key的数据

  • 按照pageContext–>request–>session–>application的顺序寻找,找到了就结束

7.使用EL表达式,获取指定作用域的数据

(1)分类

作用域获取
pageContextpageScope
requestrequestScope
sessionsessionSc
applicationapplicationScope

(2)示例

<%@ page import="com.etime.entity.User" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>第一个JSP页面</title>
</head>
<body>
    <%
        pageContext.setAttribute("color","green");
        request.setAttribute("color","red");
        session.setAttribute("color","yellow");
        application.setAttribute("color","blue");
    %>
    ${pageScope.color}<br>
    ${requestScope.color}<br>
    ${sessionScope.color}<br>
    ${applicationScope.color}
</body>
</html>

十.JSTL标签库

1.JSTL标签库概述

  • JSTL(Java server pages standarded tag library,即JSP标准标签库)是由JCP(Java community Proces)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签库,并由Apache的Jakarta小组来维护。开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。

2.使用JSTL标签库

(1)导入jar包

在这里插入图片描述

(2)创建JSP页面,并在其中使用taglib指令来导入需要的标签库

在这里插入图片描述

(3)标签的使用

标签
<c:set>
<c:if>
<c:choose> <c:when> <c:otherwise>(<c:when> <c:otherwise>必须写在<c:choose>内部)
<c:forEach>

(4)示例

<%@ page import="com.etime.entity.User" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
    <title>第一个JSP页面</title>
</head>
<body>
    <c:set var="name" value="mary"></c:set>
    ${name}<br>

    <c:if test="${2>1}">
        这是真的
    </c:if><br>

    <c:choose>
        <c:when test="${2>1}">
            2真的大于1
        </c:when>
        <c:when test="${2==1}">
            2真的等于1
        </c:when>
        <c:otherwise>
            2真的小于1
        </c:otherwise>
    </c:choose><br>

    <%
        User user1 = new User(1,"mary");
        User user2 = new User(2,"tom");
        User user3 = new User(3,"jack");
        List<User> list = new ArrayList<>();
        list.add(user1);
        list.add(user2);
        list.add(user3);
        pageContext.setAttribute("uList",list);
    %>
    <c:forEach var="user" items="${uList}">
        ${user.id}
        ${user.name}<br>
    </c:forEach>
</body>
</html>

十一.学生信息展示功能改造

1.student.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <table border="1" cellspacing="0" cellpadding="0" width="500">
        <tr>
            <td>学号</td>
            <td>姓名</td>
            <td>性别</td>
            <td>年龄</td>
            <td>邮箱</td>
        </tr>
        <%--纯java解析代码写到<%%>中,java获取的数据显示到页面上时需要写到<%=%>中--%>
        <%--<%
            List<Student> list = (List<Student>)request.getAttribute("stuList");
            for (Student student:list) {
        %>
                <tr>
                    <td><%=student.getSid()%></td>
                    <td><%=student.getSname()%></td>
                    <td><%=student.getSgender()%></td>
                    <td><%=student.getSage()%></td>
                    <td><%=student.getSemail()%></td>
                </tr>
        <%
            }
        %>--%>
        <c:forEach var="stu" items="${stuList}">
            <tr>
                <td>${stu.sid}</td>
                <td>${stu.sname}</td>
                <td>${stu.sgender}</td>
                <td>${stu.sage}</td>
                <td>${stu.semail}</td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

ava获取的数据显示到页面上时需要写到<%=%>中–%>
<%–<%
List list = (List)request.getAttribute(“stuList”);
for (Student student:list) {
%>

<%=student.getSid()%>
<%=student.getSname()%>
<%=student.getSgender()%>
<%=student.getSage()%>
<%=student.getSemail()%>

<%
}
%>–%>
<c:forEach var=“stu” items=" s t u L i s t " > < t r > < t d > {stuList}"> <tr> <td> stuList"><tr><td>{stu.sid}
s t u . s n a m e < / t d > < t d > {stu.sname}</td> <td> stu.sname</td><td>{stu.sgender}
s t u . s a g e < / t d > < t d > {stu.sage}</td> <td> stu.sage</td><td>{stu.semail}

</c:forEach>

```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1206274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索高效智能:AI 模型的优化工具盘点 | 开源专题 No.43

openai/evals Stars: 12.3k License: NOASSERTION OpenAI Evals 是一个用于评估 LLMs (大型语言模型) 或使用 LLMs 作为组件构建的系统的框架。它还包括一个具有挑战性 evals 的开源注册表。Evals 现在支持通过 Completion Function Protocol 评估任何系统&#xff0c;包括 p…

代码随想录算法训练营第五十三天丨 动态规划part14

1143.最长公共子序列 思路 本题和动态规划&#xff1a;718. 最长重复子数组 (opens new window)区别在于这里不要求是连续的了&#xff0c;但要有相对顺序&#xff0c;即&#xff1a;"ace" 是 "abcde" 的子序列&#xff0c;但 "aec" 不是 &quo…

LeetCode(12)时间插入、删除和获取随机元素【数组/字符串】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 380. O(1) 时间插入、删除和获取随机元素 1.题目 实现RandomizedSet 类&#xff1a; RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时&#xff0c;向集合中插入该项&#xff0c;并返回…

xss学习笔记

跨站脚本攻击 掌握XSS 的原理 掌握XSS 的场景 掌握XSS 的危害 掌握XSS 漏洞验证 掌握XSS 的分类跨站脚本攻击 漏洞概述 ​ 跨站点脚本&#xff08;Cross Site Scripting&#xff0c; XSS&#xff09;是指客户端代码注入攻击&#xff0c;攻击者可以在合法网站或Web 应用程…

百度文心一言

1分钟了解一言是谁&#xff1f; 一句话介绍【文心一言】 我是百度研发的人工智能模型&#xff0c;任何人都可以通过输入【指令】和我进行互动&#xff0c;对我提出问题或要求&#xff0c;我能高效地帮助你们获取信息、知识和灵感哦 什么是指令&#xff1f;我该怎么和你互动&am…

模拟接口数据之使用Fetch方法实现

文章目录 前言一、package.json配置mock执行脚本二、封装接口&#xff0c;区分走ajax还是fetch三、创建mock目录&#xff0c;及相关接口文件四、定义接口五、使用mock数据使用模拟数据优化fetch返回数据 六、不使用模拟数据七、对比其他需要使用依赖相关配置如有启发&#xff0…

什么叫做云安全?云安全有哪些要求?

云安全(Cloud Security)是一种基于云计算的安全防护策略&#xff0c;旨在保护企业数据和应用程序的安全性和完整性。云安全利用云计算的分布式处理和存储能力&#xff0c;以更高效、更灵活的方式提供安全服务。 云安全的要求主要包括以下几个方面&#xff1a; 数据安全和隐私保…

k8s的service自动发现服务:实战版

Service服务发现的必要性: 对于kubernetes整个集群来说&#xff0c;Pod的地址也可变的&#xff0c;也就是说如果一个Pod因为某些原因退出了&#xff0c;而由于其设置了副本数replicas大于1&#xff0c;那么该Pod就会在集群的任意节点重新启动&#xff0c;这个重新启动的Pod的I…

【python自动化】Playwright基础教程(四)事件操作①高亮元素匹配器鼠标悬停

本文目录 文章目录 前言高亮显示元素定位 - highlighthighlight实战highlight定位多个元素 元素匹配器 - nthnth实战演示 元素匹配 - first&last 综合定位方式时间操作进行实战&#xff0c;巩固之前我们学习的定位方式。 这一部分内容对应官网 : https://playwright.dev/py…

⑦【MySQL】什么是约束?如何使用约束条件?主键、自增、外键、非空....

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 约束 ⑦【MySQL】约束条件1. 约束的基本使用2.…

5.运行时数据区-字符串常量池、程序计数器、直接内存

目录 概述字符串常量池字符串常量池存储数据的方式三种常量池字面量与符号引用 哈希表实战 程序计数器直接内存直接内存与堆内存比较 结束 概述 相关文章在此总结如下&#xff1a; 文章地址jvm基本知识地址jvm类加载系统地址双亲委派模型与打破双亲委派地址运行时数据区地址 …

Spring事务之AOP导致事务失效问题

情况说明 首先开启了AOP&#xff0c;并且同时开启了事务。下面这个TransactionAspect就是一个简单的AOP切面&#xff0c;有一个Around通知。 Aspect Component public class TransactionAspect {Pointcut("execution(* com.qhyu.cloud.datasource.service.TransactionSe…

数据结构-链表的简单操作代码实现2【Java版】

目录 写在前&#xff1a; 此篇讲解关于单链表的一些面试题目&#xff0c;续上节。 11.反转一个单链表 12.给定一个带有头结点的head的非空单链表&#xff0c;返回链表的中间结点&#xff0c;如果有两个中间结点&#xff0c;则返回第二个中间结点 13.输入一个链表&#xff0c…

Nginx 使用笔记大全(唯一入口)

Linux服务器因为Nginx日志access.log文件过大项目无法访问 项目处于运行状态下无法访问&#xff0c;第一步查看磁盘状态 1、查看磁盘状态 df -h 2、查找100M以上的文件 find / -size 100M |xargs ls -lh 3、删除文件 rm -rf /usr/local/nginx/logs/access.log 4、配置nginx.…

Linux 性能调优之硬件资源监控

写在前面 考试整理相关笔记博文内容涉及 Linux 硬件资源监控常见的命名介绍&#xff0c;涉及硬件基本信息查看查看硬件错误信息查看虚拟环境和云环境资源理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#x…

centos7下载python3离线安装包

下载离线安装工具 yum install yum-utils -y下载python3离线安装包 yumdownloader --destdir/root/python3 --resolve python3将python3下面的离线安装文件拷贝到其他服务器上就可以安装 离线安装 先进入到离线程序rpm文件存储路径 # 离线安装 rpm -Uvh --force --nodep…

Cnyunwei

运维管理系统&#xff1a;监控系统 Cnyunwei Centos 6 封装 Cacti、Nagios、Centreon&#xff08;中英文自己切换&#xff09;、Check_MK、Nconf英文版本全部采用与国外官方同步的最新版本&#xff0c;会发布32位和64位两个版本。 安装很简单&#xff0c;直接回车即可全自动安…

AttributeError: module ‘matplotlib‘ has no attribute ‘get_data_path‘

【报错】使用 AutoDL 下 Notebook 调用 matplotlib 时遇到 AttributeError: module matplotlib has no attribute get_data_path 报错&#xff1a; --------------------------------------------------------------------------- AttributeError …

《深入浅出进阶篇》——空间换时间优化——P2671 求和

链接&#xff1a;https://www.luogu.com.cn/problem/P2671 上题干&#xff1a; 题目描述 一条狭长的纸带被均匀划分出了n个格子&#xff0c;格子编号从11到n。每个格子上都染了一种颜色colori​用[1,m]当中的一个整数表示&#xff09;&#xff0c;并且写了一个数字numberi​。…