我的JAVA-Web基础(2)

1.JDBC

防止sql注入

 

2.JSP

JSP的基本语法

基本语法是

<% %> Java代码

<%= %> 输出变量      可以转换成${变量}的EL表达式

<%! %>定义变量

JSP的基本语法包括以下几个主要部分:

1. 表达式(Expression)

表达式用于将Java代码的输出插入到页面中。表达式的语法是 <%= %>,它会自动调用 toString() 方法并将结果输出到页面。

  • 语法

    <%= expression %>
  • 示例

    <html>
    <body>
        <p>当前时间是: <%= new java.util.Date() %></p>
    </body>
    </html>

    在这个例子中,<%= new java.util.Date() %> 会输出当前的时间。

2. 脚本片段(Scriptlet)

脚本片段允许你在JSP页面中嵌入多行Java代码。脚本片段的语法是 <% %>,它可以直接编写Java代码块。

  • 语法

    <% Java code %>
  • 示例

    <html>
    <body>
        <%
            String message = "Hello, World!";
            out.println("<p>" + message + "</p>");
        %>
    </body>
    </html>

    在这个例子中,<% ... %> 包含了一个Java代码块,定义了一个字符串变量 message 并将其输出到页面。

3. 声明(Declaration)

声明用于在JSP页面中定义Java变量或方法。声明的语法是 <%! %>,它会在JSP页面编译时被转换为类的成员变量或方法。

  • 语法

    <%! Java code %>
  • 示例

    <html>
    <body>
        <%!
            int count = 0;
    
            public String getGreeting() {
                return "Welcome to JSP!";
            }
        %>
    
        <p>访问次数: <%= ++count %></p>
        <p><%= getGreeting() %></p>
    </body>
    </html>

    在这个例子中,<%! ... %> 定义了一个整数变量 count 和一个方法 getGreeting(),它们可以在整个JSP页面中使用。

4. 指令(Directive)

指令用于控制JSP页面的行为,如引入其他文件、设置页面属性等。常见的指令有 @page@include@taglib

  • @page 指令:用于设置JSP页面的全局属性,如编码、错误页面、导入包等。

    • 语法
      <%@ page attribute="value" %>
    • 常用属性
      • contentType:指定页面的内容类型和字符编码。例如:
        <%@ page contentType="text/html; charset=UTF-8" %>
      • import:导入Java类。例如:
        <%@ page import="java.util.*, java.text.*" %>
      • errorPage:指定错误页面。例如:
        <%@ page errorPage="error.jsp" %>
  • @include 指令:用于在编译时将另一个文件的内容包含到当前JSP页面中。

    • 语法
      <%@ include file="header.jsp" %>
    • 示例
      <%@ include file="header.jsp" %>
      <p>This is the main content of the page.</p>
      <%@ include file="footer.jsp" %>
  • @taglib 指令:用于引入自定义标签库(Tag Library),如JSTL(JavaServer Pages Standard Tag Library)。

    • 语法
      <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

6.内置对象

JSP提供了多个内置对象,这些对象可以直接在JSP页面中使用,而无需显式声明。常见的内置对象包括:

  • request:表示客户端的HTTP请求对象,可以获取请求参数、头信息等。

  • response:表示服务器的HTTP响应对象,可以设置响应头、状态码等。

  • out:用于向客户端输出内容,类似于 System.out

  • session:表示用户的会话对象,可以存储用户的状态信息。

  • application:表示 ServletContext 对象,可以访问Web应用的全局配置和资源。

  • config:表示 ServletConfig 对象,可以获取Servlet的初始化参数。

  • pageContext:提供对JSP页面上下文的访问,可以获取其他内置对象、管理页面属性等。

  • 示例

    <html>
    <body>
        <p>请求的URL: <%= request.getRequestURL() %></p>
        <p>会话ID: <%= session.getId() %></p>
        <p>应用程序名称: <%= application.getServletContextName() %></p>
    </body>
    </html>

显示为:4-dddd 1-aaaa 2-bbbb 3-cccc

解释:有一个response缓冲区,out的缓冲区,最终显示给用户的是response缓冲区

当out的缓冲区空间不为0时,除了response是直接往response缓冲区写东西完,其他都是往out缓冲区写东西,最后out缓冲区拼在response缓冲区里面

当out的缓冲区空间为0时,out和response写东西按写html的顺序往response缓冲区写东西 

7. JSTL(JavaServer Pages Standard Tag Library)

JSTL 是一组标准的标签库,提供了丰富的标签来简化JSP页面的开发。JSTL 标签库包括核心标签库(c)、格式化标签库(fmt)、SQL标签库(sql)和函数标签库(fn)。

  • 引入JSTL

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  • 常用标签

    • <c:if>:条件判断。

      <c:if test="${param.username == 'admin'}">
          <p>Welcome, Admin!</p>
      </c:if>
    • <c:choose><c:when><c:otherwise>:多条件判断。

      <c:choose>
          <c:when test="${param.username == 'admin'}">
              <p>Welcome, Admin!</p>
          </c:when>
          <c:otherwise>
              <p>Welcome, Guest!</p>
          </c:otherwise>
      </c:choose>
    • <c:forEach>:循环遍历集合或数组。

      <c:forEach var="item" items="${items}">
          <p>${item}</p>
      </c:forEach>
    • <c:set>:设置变量。

      <c:set var="name" value="John Doe" />
      <p>Name: ${name}</p>
    • <c:url>:生成URL。

      <a href="<c:url value='/login' />">Login</a>

总结

JSP 提供了丰富的语法和功能,使开发者能够轻松地创建动态Web页面。通过结合表达式、脚本片段、声明、指令、内置对象和JSTL标签库,你可以灵活地处理用户输入、生成动态内容、管理会话和应用程序状态等。

  • 表达式:用于输出Java代码的结果。
  • 脚本片段:用于编写多行Java代码。
  • 声明:用于定义Java变量和方法。
  • 指令:用于控制JSP页面的行为。
  • 内置对象:提供了对请求、响应、会话等的访问。
  • JSTL:简化了JSP页面的开发,提供了丰富的标签库。

通过合理使用这些语法元素,你可以编写出高效、可维护的JSP页面。

3.jQuery 的 $.ajax() 方法详解

$.ajax() 是 jQuery 中用于发起异步HTTP请求的核心方法。它允许你通过JavaScript与服务器进行通信,而无需刷新整个页面。$.ajax() 提供了丰富的配置选项,可以处理各种类型的请求(如GET、POST等),并且支持多种数据格式(如JSON、XML、HTML等)。

1. 基本语法

$.ajax({
    url: 'URL',          // 请求的URL
    type: 'GET',         // 请求类型(GET、POST等)
    data: {},            // 发送到服务器的数据
    dataType: 'json',    // 期望从服务器接收的数据类型
    success: function(response) {
        // 请求成功时的回调函数
    },
    error: function(xhr, status, error) {
        // 请求失败时的回调函数
    }
});

2. 常用参数详解

  • url

    • 类型:字符串
    • 描述:指定请求的目标URL。
    • 示例
      url: '/api/data'
  • type

    • 类型:字符串
    • 描述:指定HTTP请求的方法(GET、POST、PUT、DELETE等)。默认值是 GET
    • 示例
      type: 'POST'
  • data

    • 类型:对象、字符串或数组
    • 描述:发送到服务器的数据。可以是键值对的对象、查询字符串或表单数据。
    • 示例
      data: { name: 'John', age: 30 }
  • dataType

    • 类型:字符串
    • 描述:期望从服务器接收到的数据类型。常见的值有:
      • json:表示JSON格式的数据。
      • xml:表示XML格式的数据。
      • html:表示HTML文档。
      • text:表示纯文本。
      • script:表示JavaScript代码。
    • 示例
      dataType: 'json'
  • success

    • 类型:函数
    • 描述:当请求成功时调用的回调函数。该函数接收从服务器返回的数据作为参数。
    • 参数
      • response:从服务器返回的数据。
      • status:请求的状态(通常是 "success")。
      • xhr:XMLHttpRequest 对象。
    • 示例
      success: function(response) {
          console.log('Data received:', response);
      }
  • error

    • 类型:函数
    • 描述:当请求失败时调用的回调函数。该函数接收三个参数:xhrstatus 和 error
    • 参数
      • xhr:XMLHttpRequest 对象。
      • status:错误状态(如 "error""timeout""abort" 等)。
      • error:具体的错误信息。
    • 示例
      error: function(xhr, status, error) {
          console.error('Error:', error);
      }

3. 常见使用场景

3.1 GET 请求

$.ajax({
    url: '/api/users',
    type: 'GET',
    success: function(users) {
        console.log('Users:', users);
    },
    error: function(xhr, status, error) {
        console.error('Error fetching users:', error);
    }
});

3.2 POST 请求

$.ajax({
    url: '/api/users',
    type: 'POST',
    data: JSON.stringify({ name: 'John', age: 30 }),
    contentType: 'application/json',
    success: function(response) {
        console.log('User created:', response);
    },
    error: function(xhr, status, error) {
        console.error('Error creating user:', error);
    }
});

3.3 发送表单数据

$('#myForm').on('submit', function(event) {
    event.preventDefault(); // 阻止表单的默认提交行为

    $.ajax({
        url: $(this).attr('action'),
        type: $(this).attr('method'),
        data: $(this).serialize(), // 将表单数据序列化为查询字符串
        success: function(response) {
            console.log('Form submitted successfully:', response);
        },
        error: function(xhr, status, error) {
            console.error('Error submitting form:', error);
        }
    });
});

3.4 处理JSON响应

$.ajax({
    url: '/api/data',
    type: 'GET',
    dataType: 'json',
    success: function(data) {
        console.log('Received JSON data:', data);
    },
    error: function(xhr, status, error) {
        console.error('Error fetching JSON data:', error);
    }
});

4.过滤器Filter

 过滤器三个接口

 

 

 

过滤器实现 

 

过滤器生命周期

 

 过滤器链

 5.监听器

 

 

监听器实现

 

6.Cookie

 

 

7.Session

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VR 动感单车身心调适系统的功能与作用

如今&#xff0c;人们面临着来自各方的压力&#xff0c;国家重视国民身心健康&#xff0c;但人们在实际生活中却缺乏有效的身心调节方式。无论是久坐的白领&#xff0c;还是学业繁重的学生&#xff0c;都存在身体亚健康和心理压力大的问题。传统健身方式枯燥、心理咨询成本高且…

数据中台到底是什么?

数据中台不是一套系统&#xff0c;也不是一套产品&#xff0c;而是一种机制。在传统IT架构中&#xff0c;不同部门&#xff0c;不同业务系统和不同的数据中心会产生大量数据。这些数据如同烟囱一样是垂直划分的&#xff0c;彼此之间无法连接&#xff0c;我们也把这种数据叫做数…

AI Agent 与 AI Workflow 的区别和深度解析:从自动化到智能化的演进

一、引言 在人工智能技术快速迭代的今天&#xff0c;我们正见证着 AI 应用模式的多元化发展。 其中&#xff0c;AI Agent 和 AI Workflow 作为两种截然不同的范式&#xff0c;正在重塑我们对 AI 应用的认知。 这两种模式就像是同一枚硬币的两面 - 一个追求灵活创新&#xff…

【MySQL】7.0 入门学习(七)——MySQL基本指令:帮助、清除输入、查询等

1.0 help &#xff1f; 帮助指令&#xff0c;查询某个指令的解释、用法、说明等。详情参考博文&#xff1a; 【数据库】6.0 MySQL入门学习&#xff08;六&#xff09;——MySQL启动与停止、官方手册、文档查询 https://www.cnblogs.com/xiaofu007/p/10301005.html 2.0 在cmd命…

Refusal in Language Models Is Mediated by a Single Direction

开源代码&#xff1a;https://github.com/andyrdt/refusal_direction Abstract 会话型大语言模型针对指令遵循和安全性进行了微调&#xff0c;从而产生服从良性请求但拒绝有害请求的模型。虽然这种拒绝行为在聊天模型中普遍存在&#xff0c;但其背后的机制仍然知之甚少。在这…

Web3.0安全开发实践:探索比特币DeFi生态中的PSBT

近年来&#xff0c;部分签名比特币交易&#xff08;PSBT&#xff09;在比特币生态系统中获得了显著关注。随着如Ordinal和基于铭文的资产等创新的兴起&#xff0c;安全的多方签名和复杂交易的需求不断增加&#xff0c;这使得PSBT成为应对比特币生态不断发展中不可或缺的工具。 …

springboot483基于springboot的校园失物招领系统(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统校园失物招领系统信息管理难度大&#xff0c;容错率低&am…

VisionPro开发使用交互反馈系统(Affordance System)

XR Interaction Toolkit 提供了一个affordance system 可供性系统&#xff0c;使用户能够创建对交互状态的视觉和听觉反馈。一般的信息流从向Affordance State Provider场景中添加一个&#xff08;通常是可交互的&#xff09;并将其指向我们要监视其交互状态的可交互对象开始。…

Stable-diffusion-WebUI 的API调用(内含文生图和图生图实例)

前情提要 在之前尝试使用Diffusers库来进行stable-diffusion的接口调用以及各种插件功能实现&#xff0c;但发现diffusers库中各复杂功能的添加较为麻烦&#xff0c;而且难以实现对采样器的添加&#xff0c;safetensors格式模型的读取。在官网上找到了webui有专门的api接口&am…

重温设计模式--备忘录模式

文章目录 备忘录模式&#xff08;Memento Pattern&#xff09;概述定义&#xff1a; 作用&#xff1a;实现状态的保存与恢复支持撤销 / 恢复操作 备忘录模式UML图备忘录模式的结构原发器&#xff08;Originator&#xff09;&#xff1a;备忘录&#xff08;Memento&#xff09;&…

WPS工具栏灰色怎么办

WPS离线不登录&#xff0c;开启工具栏等相关功能 当你在使用WPS的过程中&#xff0c;若因网络问题或其他特殊原因&#xff0c;导致无法登录使用WPS时&#xff0c;可根据以下步骤开启离线兼容模式&#xff0c;开启此模式后&#xff0c;可在未登录的状态下&#xff0c;激活并使用…

【C++基础】09、结构体

一、结构体(struct) C/C 数组允许定义可存储相同类型数据项的变量&#xff0c;但是结构体是 C 中另一种用户自定义的可用的数据类型&#xff0c;它允许存储不同类型的数据项。 结构体用于表示一条记录&#xff0c;假设现在想要跟踪图书馆中书本的动态&#xff0c;可能需要跟踪每…

安卓蓝牙扫描流程

目录 系统广播 流程图 源码跟踪 系统广播 扫描开启广播&#xff1a;BluetoothAdapter.ACTION_DISCOVERY_STARTED "android.bluetooth.adapter.action.DISCOVERY_STARTED";扫描关闭广播&#xff1a;BluetoothAdapter.ACTION_DISCOVERY_FINISHED "android.b…

Pytorch | 利用BIM/I-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用BIM/I-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集BIM介绍基本原理算法流程 BIM代码实现BIM算法实现攻击效果 代码汇总bim.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器&#xff1a; Pytorch | 从零构建AlexNet对CIFAR10进行分类 Py…

如何查看pad的console输出,以便我们更好的进行调试,查看并了解实际可能的问题。

1、以下是baidu AI回复&#xff1a; 2、说明&#xff1a; 1&#xff09;如果小伙伴们经常做android开发的话&#xff0c;这个不陌生&#xff0c;因为调试都是要开启这个开发者模式。并启用USB调试模式。 2&#xff09;需要连上USB线&#xff0c;有的时候会忘记&#xff0c;然…

外贸企业需要部署SD-WAN专线吗?

随着外贸行业对互联网和数字化技术依赖的加深&#xff0c;网络质量已成为影响企业运营效率和竞争力的重要因素。本文将深入探讨SD-WAN专线如何助力外贸企业优化业务运营。 外贸企业面临的网络挑战 1. 跨国访问速度缓慢 在访问海外服务器或目标网站时&#xff0c;外贸企业常常遭…

MySQL什么情况下会导致索引失效

MySQL什么情况下会导致索引失效 索引&#xff08;Index&#xff09;是数据库中一种用于快速查找和访问表中数据的结构&#xff0c;它类似于书的目录&#xff0c;通过索引可以快速定位到目标数据&#xff0c;而无需遍历整个表&#xff0c;索引的存在可以显著提高查询速度&#x…

两分钟解决:vscode卡在设置SSH主机,VS Code-正在本地初始化VSCode服务器

问题原因 remote-ssh还是有一些bug的&#xff0c;在跟新之后可能会一直加载初始化SSH主机解决方案 1.打开终端2.登录链接vscode的账号&#xff0c;到家目录下3.找到 .vscode-server文件,删掉这个文件4.重启 vscode 就没问题了

uniapp登录

第一步整登录 先整个appid APPID和APPSecret https://developers.weixin.qq.com/community/develop/article/doc/000ca4601b8f70e379febac985b413 一个账号只能整一个小程序 正确流程 调用uni.login https://juejin.cn/post/7126553599445827621 https://www.jb51.net/a…

I.MX6U 启动方式详解

一、启动方式选择 BOOT 的处理过程是发生在 I.MX6U 芯片上电以后,芯片会根据 BOOT_MODE[1:0]的设置 来选择 BOOT 方式。 BOOT_MODE[1:0]的值是可以改变的,有两种方式,一种是改写 eFUSE(熔 丝),一种是修改相应的 GPIO 高低电平。第一种修改 eFUSE 的方式只能修改一次,后面就…