JSP一些知识点_<%=get int()%>-程序员宅基地

技术标签: 笔记  tomcat  jsp  

<%%> 与 <%!%> 和 <%=%>的区别

名称 作用
<%%> 脚本片段 其内容会翻译在Servlet的Service方法中;可以定义局部变量或者调用方法,但不能定义方法
<%!%> 声明 其内容会直接翻译在Servlet类中,可以定义方法、属性、全局变量
<%=%> JSP表达式 将已经声明的变量或者表达式输出到页面

参考资料:https://www.cnblogs.com/mark5/p/11596435.html

JSP页面执行过程

  1. 客户端发送Request请求
  2. JSP Container将JSP转译成Servlet源代码
  3. 将产生的Servlet源代码经过编译后,加载到内存执行
  4. 把结果Response(响应)到客户端

jsp执行过程分两时期:转义时期和请求时期
转义时期
系统把.jsp文件转译为servlet源代码.java文件,
将java文件编译为.class字节码文件,
再将字节码文件交给JVM执行得到数据处理结果
请求时期
把服务端处理的结果返回给html文件中,响应给客户端浏览器,由浏览器对html文件进行解释并且展示其静态内容

简述Tomcat部署war包的过程

若是自动部署
则把war包复制到webapps目录

若未开启自动部署
则把war包拖入webapps目录后
到tomcat的bin目录下,先shutdown再startup

4. 某信息系统中涉及到汽车实体,汽车主要有品牌、型号、价格和座位数等属性,请编写该实体的Java Bean



package Entity;

public class Car {
    
    private String brand;
    private String model;
    private double price;
    private int seats;

    public String getBrand() {
    
        return brand;
    }

    public void setBrand(String brand) {
    
        this.brand = brand;
    }

    public String getModel() {
    
        return model;
    }

    public void setModel(String model) {
    
        this.model = model;
    }

    public double getPrice() {
    
        return price;
    }

    public void setPrice(double price) {
    
        this.price = price;
    }

    public int getSeats() {
    
        return seats;
    }

    public void setSeats(int seats) {
    
        this.seats = seats;
    }
}

5. 续上题编写表单可以填入汽车信息,提交到一个JSP,该JSP能显示出该汽车的信息。请使用userBean,setProperty和getProperty等动作。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<% request.setCharacterEncoding("UTF-8");%>
<form method="post" action="demo5.jsp">
    品牌:<input type="text" name="brand"><br>
    型号:<input type="text" name="model"><br>
    价格:<input type="text" name="price"><br>
    座位数:<input type="text" name="seats"><br>
    <input type="submit" value="确定">
</form>
</body>
</html>


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="car" class="Entity.Car"></jsp:useBean>
<html>
<head>
    <title>Title</title>
</head>
<body>
<% request.setCharacterEncoding("UTF-8");%>
<jsp:setProperty name="car" property="*"></jsp:setProperty>

<jsp:setProperty name="car" property="brand" value="fd" />
<jsp:setProperty name="car" property="model" value="fd" />
<jsp:setProperty name="car" property="price" value="789" />
<jsp:setProperty name="car" property="seats" value="6" />
<!--以上为自己写入,以下为从request获取-->
<p>您输入的车辆信息如下:</p>
<p>品牌:<jsp:getProperty name="car" property="brand"/></p>
<p>型号:<jsp:getProperty name="car" property="model"/></p>
<p>价钱:<jsp:getProperty name="car" property="price"/></p>
<p>座位数:<jsp:getProperty name="car" property="seats"/></p>
</body>
</html>

请使用JSP脚本,在浏览器上显示一个九九乘法表

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<table border="1">
    <tr>
        <td>乘法表</td>
        <%
            for(int i=1;i<10;i++){
        %>
            <td><%=i%></td>
        <%
            }
        %>
    </tr>
    <%
        for(int i=1;i<10;i++){
    %>
        <tr>
            <td><%=i%></td>
    <%
            for(int j=1;j<i+1;j++){
     

     %>
            <td><%=i%>×<%=j%>=<%=i*j%></td>
    <%

            }
    %>
        </tr>
    <%
        }
    %>
</table>

</body>
</html>

已知学生成绩数据存储在ArrayList<Map<String,Object>>对象中,数据包括学号、姓名、平时成绩、实验成绩和期末成绩。 期末成绩如果大于等于50分,总评成绩有公式 平时成绩10%+实验成绩20*+期末成绩*70%计算,如果期末成绩小于50分,则总评成绩为期末成绩,低于60分成绩显示红色。编写JSP成绩打印如下表格。(提示:ArrayList中的数据硬编码写入,写入数据要求大于5条,禁止使用println/print方法进行输出, 能使用标签的地方要使用标签)

在这里插入图片描述

<%@ page import="java.util.Map" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.List" %>
  
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    List<Map<String,Object>> list = new ArrayList<Map<String, Object>>();
    HashMap map = new HashMap();
    map.put("no", "1001");
    map.put("name", "Tom");
    map.put("ps",93);  //平时成绩
    map.put("sy",85);  //实验成绩
    map.put("qm",88);   //期末成绩
    list.add(map);

    map = new HashMap();
    map.put("no", "1002");
    map.put("name", "Jack");
    map.put("ps", 76);
    map.put("sy",75);  //实验成绩
    map.put("qm",52);   //期末成绩
    list.add(map);

    map = new HashMap();
    map.put("no", "1003");
    map.put("name", "Mary");
    map.put("ps", 67);
    map.put("sy",65);  //实验成绩
    map.put("qm",48);   //期末成绩
    list.add(map);

    request.setAttribute("data", list);

    list =(List<Map<String,Object>>) request.getAttribute("data");
%>
    <table border="1">
        <tr>
            <th>学号</th>
            <th>姓名</th>
            <th>平时成绩</th>
            <th>实验成绩</th>
            <th>期末成绩</th>
            <th>总评</th>
        </tr>
        <%
            for(Map<String,Object> stu:list){
                String no = (String) stu.get("no");
                String name = (String) stu.get("name");
                int ps = (int) stu.get("ps");
                int sy = (int) stu.get("sy");
                int qm = (int) stu.get("qm");
                int zp = 0;
                if(qm<50){
                    zp = qm;
                }else {
                    zp = (int) (ps*0.1+sy*0.2+qm*0.7);
                }
                String color = "";
                if (zp<60){
                    color = "style=\"color:red\"";
                }
        %>
            <tr align="left">
                <td><%=no%></td>
                <td><%=name%></td>
                <td><%=ps%></td>
                <td><%=sy%></td>
                <td><%=qm%></td>
                <td <%=color%>><%=zp%></td>
            </tr>

        <%
            }
        %>
    </table>
</body>

</html>

编写满足下面要求的程序:1. JSP页面,随机生成一个100内的加法题,用户输入答案,2.点击提交按钮,数据提交给一个servlet进行处理,该servlet判断用户答题是否正确 ,然后跳转掉一个结果JSP页面。3.结果JSP页面显示加法题并给出错误还是正确的信息。(MVC模式)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    int a = (int) (Math.random()*100);
    int b = (int) (Math.random()*100);
    session.setAttribute("a",a);
    session.setAttribute("b",b);
%>
<form method="post" action="/demo8">
    <%=a%>+<%=b%>=<input type="text" name="answer"><input type="submit">
</form>
</body>
</html>

<servlet>
    <servlet-name>demo8</servlet-name>
    <servlet-class>Servlet.demo8</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>demo8</servlet-name>
    <url-pattern>/demo8</url-pattern>
</servlet-mapping>

package Servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

public class demo8 extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session = req.getSession();
        int a = (int) session.getAttribute("a");
        int b = (int) session.getAttribute("b");
        String ans = req.getParameter("answer");
        if(a + b == Integer.parseInt(ans)){
            session.setAttribute("result","True");
        }else {
            session.setAttribute("result","False");
        }
        session.setAttribute("a",a);
        session.setAttribute("b",b);
        resp.sendRedirect("/demo8_res.jsp");
    }
}


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    int a = (int) session.getAttribute("a");
    int b = (int) session.getAttribute("b");
    String result = (String) session.getAttribute("result");
%>
<p><%=a%>+<%=b%>=<%=a+b%></p>
<%
    if(result.equals("True")){
%>
    <h1>你答对了</h1>
<%
    }else {
%>
    <h1>你答错了</h1>
<%
    }
%>

</body>
</html>

编写满足下面要求的程序:第一个JSP页面输入一个数组,点击提交按钮提交到一个servlet。 在Servlet中查找这个数组的最大值,跳转到第二个JSP。在第二个JSP中显示这个最大值(MVC)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form method="post" action="/demo9">
    数字1:<input type="text" name="nums"><br>
    数字2:<input type="text" name="nums"><br>
    数字3:<input type="text" name="nums"><br>
    <input type="submit">
</form>
</body>
</html>



    <servlet>
        <servlet-name>demo9</servlet-name>
        <servlet-class>Servlet.demo9</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo9</servlet-name>
        <url-pattern>/demo9</url-pattern>
    </servlet-mapping>

package Servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

public class demo9 extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String[] nums = req.getParameterValues("nums");
        int max = 0;
        for(String s:nums){
            int newNum = Integer.parseInt(s);
            max = max>newNum ? max:newNum;
        }
        HttpSession session = req.getSession();
        session.setAttribute("max",max);
        resp.sendRedirect("/demo9_res.jsp");
    }
}



<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    int max = (int) session.getAttribute("max");
%>
<h1>输入的数字中最大值是:<%=max%></h1>
</body>
</html>

浏览器上要显示一个学生信息列表,学生主要有学号、姓名、性别、年龄、手机号码等信息,这些信息存储在数据库表student中。请给出一个实现该功能并且符合MVC模式及DAO模式的详细设计,列举出你将创建哪些源文件并说明每个源文件的作用

Student.jsp:显示学生信息JSP、
Student.jsp:学生实体类 JavaBean、
StudentDao:针对数据层操作的接口 Dao、
StudnetDaoImpl:实现dao层定义的接口,具体进行增删改查 DaoImplement、
StudentService:服务接口,具体业务逻辑 Service、
ServiceDaoImpl:实现dao层定义的接口,具体进行业务操作 ServiceImplement、
多个Servlet分别处理前端发来的业务请求

11. 设计一个过滤器,过滤掉以T开头的用户名登陆,使其登录到错误页面,其他则登录到成功界面。写出主要代码,并叙述设计思想及步骤

public class MyFilter implements Filter {
    
    
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain)
            throws IOException, ServletException {
           
            HttpServletRequest req = (HttpServletRequest)request;
            HttpServletResponse resp = (HttpServletResponse) response;
             String username = (String)req.getSession().getAttribute("username");
            if(username.startsWith("T")){
    
                resp.sendRedirect("error.jsp");
            }
            chain.doFilter(request, response);
            
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    
       
    }

    @Override
    public void destroy() {
    
        
    }
    
}


<filter>
        <filter-name>MyFilter</filter-name>
        <filter-class>edu.just.filter.MyFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>MyFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

设计实现一个监听器,当Web应用启动时,建立一个数据库连接,以备给整个应用使用,当应用销毁时,关闭连接。编写主要代码及叙述设计思想及实现步骤

监听器类

public class GetConnListener implements ServletContextListener
{
    
    // 应该启动时,该方法被调用。
    public void contextInitialized(ServletContextEvent sce)
    {
    
        try
        {
    
            // 取得该应用的ServletContext实例
            ServletContext application = sce.getServletContext();
            // 从配置参数中获取驱动
            String driver = application.getInitParameter("driver");
            // 从配置参数中获取数据库url
            String url = application.getInitParameter("url");
            // 从配置参数中获取用户名
            String user = application.getInitParameter("user");
            // 从配置参数中获取密码
            String pass = application.getInitParameter("pass");
            // 注册驱动
            Class.forName(driver);
            // 获取数据库连接
            Connection conn = DriverManager.getConnection(url
                , user , pass);
            // 将数据库连接设置成application范围内的属性
            application.setAttribute("conn" , conn);
        }
        catch (Exception ex)
        {
    
            System.out.println("Listener中获取数据库连接出现异常"
                + ex.getMessage());
        }
    }
    // 应该关闭时,该方法被调用。
    public void contextDestroyed(ServletContextEvent sce)
    {
    
        // 取得该应用的ServletContext实例
        ServletContext application = sce.getServletContext();
        Connection conn = (Connection)application.getAttribute("conn");
        // 关闭数据库连接
        if (conn != null)
        {
    
            try
            {
    
                conn.close();
            }
            catch (SQLException ex)
            {
    
                ex.printStackTrace();
            }
        }
    }
}

测试页面

<body>
下面是直接从application中取出数据库连接,<br/>
并执行查询后的结果<br/>
<%
Connection conn = (Connection)application.getAttribute("conn");
// 创建Statement对象
Statement stmt = conn.createStatement();
// 执行查询
ResultSet rs = stmt.executeQuery("select * from news_inf");
%>
<table bgcolor="#9999dd" border="1" width="300">
<%
// 遍历结果集
while(rs.next())
{
%>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
</tr>
<%
}
%>
<table>
</body>

MySQL数据库bank中有张数据库表account(ID:int,name:varchar(20), balance:decimal(20,4)),该表表示用户银行账户的余额,balance字段表示余额数。请编写一个方法将ID=1的用户账上的1000元转账到ID=2的用户账上,并提供事务支持

public static void main(String[] args){
    
        Connection conn = null;
        PreparedStatement updateSalary = null;
        String updateStatement = "update student set score=score+? where id=?";

        try {
    
            conn=DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
            conn.setAutoCommit(false);   //关闭事务自动提交
            updateSalary = conn.prepareStatement(updateStatement);
            updateSalary.setDouble(1, 10);
            updateSalary.setInt(2, 1002);
            updateSalary.executeUpdate();
            //if(1==1)throw new SQLException(); //抛出一个异常
            updateSalary.setDouble(1, -10);
            updateSalary.setInt(2, 1004);
            updateSalary.executeUpdate();
            conn.commit();     //提交事务
        } catch (SQLException e) {
    
            e.printStackTrace();
            if (conn != null) {
    
                try {
    
                    System.err.print("Transaction is being rolled back");
                    conn.rollback();     //有异常,回滚
                } catch (SQLException excep) {
    
                    excep.printStackTrace();
                }
            }
        } finally {
    
            if (updateSalary != null) {
    
                try {
    
                    updateSalary.close();
                } catch (SQLException ex) {
    
                    Logger.getLogger(TransactionDemo.class.getName()).log(Level.SEVERE, null, ex);
                }
            }            
            try {
    
                conn.setAutoCommit(true);
            } catch (SQLException ex) {
    
                Logger.getLogger(TransactionDemo.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

MySQL数据库Study中有张数据库表student(ID:int,name:varchar(20), age:int,score:double,birthday:date),请编写一个方法将该表中的所有记录存储到一个List<Map<String,Object>>对象中

public List<Map<String,Object>> findAll() throws Exception {
    
          Connection conn = null;
        Class.forName(DBDRIVER);// JDBC4.0后可自动加载
        conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
        List<Map<String,Object>> allStudents = new ArrayList();
        PreparedStatement pstmt = null;
        String sql = "SELECT * FROM student ";
        try {
    
            pstmt = this.conn.prepareStatement(sql); 
            ResultSet rs = pstmt.executeQuery();
            Map s = null;
            while (rs.next()) {
    
                s = new HashMap<String,Object>();
                s.put("id",rs.getInt("ID"));
                s.put("name",rs.getString("name"));
                s.put("age",rs.getInt("age"));
                s.put("score",rs.getFloat("score"));
                s.put("birthday",rs.getDate("birthday"));
                allStudents.add(s);
            }
            rs.close();
        } catch (Exception e) {
    
            throw e;
        } finally {
    
            try {
    
                conn.close
                pstmt.close();
            } catch (Exception e) {
    
            }
        }
        return allStudents;
    }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/makerjack001/article/details/121873387

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签