我的JAVA-Web基础(2)

news2024/12/25 12:09:07

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

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

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

相关文章

新闻网站的个性化推荐:机器学习的应用

3.1可行性分析 开发者在进行开发系统之前&#xff0c;都需要进行可行性分析&#xff0c;保证该系统能够被成功开发出来。 3.1.1技术可行性 开发该新闻网站所采用的技术是vue和MYSQL数据库。计算机专业的学生在学校期间已经比较系统的学习了很多编程方面的知识&#xff0c;同时也…

IIC驱动EEPROM

代码参考正点原子 i2c_dri:主要是三段式状态机的编写 module iic_dri#(parameter SLAVE_ADDR 7b1010000 , //EEPROM从机地址parameter CLK_FREQ 26d50_000_000, //模块输入的时钟频率parameter I2C_FREQ 18d250_000 //IIC_SCL的时钟频率)( …

【动手学轨迹预测】2.3 场景表征方法

场景表征是指在所有可用的场景信息数据中, 提取出对于预测网络有用的数据, 并将其转换为易于模型学习的数据格式. 对于预测网络来说, 最重要的数据是交通参与者的历史轨迹和地图信息, 表达它们的常见方法有:栅格化和稀疏化 2.1.1 栅格化 多通道表达 如上图所示, 将历史轨迹和…

亚信安全举办“判大势 悟思想 强实践”主题党日活动

为深入学习和贯彻党的二十届三中全会精神&#xff0c;近日&#xff0c;亚信安全举办了 “学习贯彻党的二十届三中全会精神——‘判大势 悟思想 强实践’党日活动”&#xff0c;并取得圆满成功。 本次活动特邀南京市委宣讲团成员、南京市委党校市情研究中心主任王辉龙教授出席。…

医疗大模型威胁攻击下的医院AI安全:挑战与应对策略

一、引言 1.1 研究背景与意义 随着人工智能技术的迅猛发展,医疗大模型作为一种新兴的技术手段,正逐渐渗透到医疗领域的各个环节,为医疗服务的数字化转型带来了前所未有的机遇。从辅助诊断到疾病预测,从个性化治疗方案的制定到医疗资源的优化配置,医疗大模型展现出了巨大…

如何在谷歌浏览器中使用内置翻译功能

谷歌浏览器作为全球最受欢迎的网络浏览器之一&#xff0c;提供了强大且便捷的内置翻译功能。这一功能帮助用户轻松跨越语言障碍&#xff0c;浏览不同语言的网页内容。本文将详细介绍如何在谷歌浏览器中使用其内置翻译功能。 一、启用谷歌浏览器内置翻译功能 1、打开谷歌浏览器…

【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命…

基于推理的目标检测 DetGPT

基于推理的目标检测 DetGPT flyfish detgpt.github.io 近年来&#xff0c;由于大型语言模型&#xff08;LLMs&#xff09;的发展&#xff0c;计算机视觉领域取得了重大进展。这些模型使人类与机器之间能够进行更有效、更复杂的交互&#xff0c;为模糊人类与机器智能界限的新技…

概率论 期末 笔记

第一章 随机事件及其概率 利用“四大公式”求事件概率 全概率公式与贝叶斯公式 伯努利概型求概率 习题 推导 一维随机变量及其分布 离散型随机变量&#xff08;R.V&#xff09;求分布律 利用常见离散型分布求概率 连续型R.V相关计算 利用常见连续型分布的计算 均匀分布 正态…

探索 Python编程 调试案例:计算小程序中修复偶数的bug

在 学习Python 编程的过程里&#xff0c;会遇到各种各样的bug。而修复bug调试代码就像是一场充满挑战的侦探游戏。每一个隐藏的 bug 都是谜题&#xff0c;等待开发者去揭开真相&#xff0c;让程序可以顺利运行。今天&#xff0c;让我们通过一个实际案例&#xff0c;深入探索 Py…

Redis 介绍和安装

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 Redis 入门介绍 收录于专栏[redis] 本专栏旨在分享学习Linux的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 本章将带领读者进入 Redis 的世…

springboot480基于springboot高校就业招聘系统设计和实现(论文+源码)_kaic

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自古…

【基础篇】1. JasperSoft Studio编辑器与报表属性介绍

编辑器介绍 Jaspersoft Studio有一个多选项卡编辑器&#xff0c;其中包括三个标签&#xff1a;设计&#xff0c;源代码和预览。 Design&#xff1a;报表设计页面&#xff0c;可以图形化拖拉组件设计报表&#xff0c;打开报表文件的主页面Source&#xff1a;源代码页码&#xff…

【河南新标】豫财预〔2024〕105号-《关于省级政务信息化建设项目支出预算标准的规定》-费用标准解读系列29

2024年12月3日&#xff0c;河南省财政厅发布了《关于省级政务信息化建设项目支出预算标准的规定》豫财预〔2024〕105号。《关于省级政务信息化建设项目支出预算标准的规定 &#xff08;试行&#xff09;》&#xff08;豫财预 〔2020〕81号&#xff09;同时废止。新的豫财预〔20…

导入numpy报错:PyCapsule_Import could not import module “datetime“

背景 docker部署深度学习算法时&#xff0c;安装miniconda报错&#xff0c;报线程错误。 然后在构建镜像时把miniconda装进去没有问题。 然后把环境移进去发现报numpy导入错误 在python解释器尝试导入numpy发现还是报错 尝试重新装numpy&#xff0c;发现没有解决。 网上找解决方…

TANGO与LabVIEW控制系统集成

TANGO 是一个开源的设备控制和数据采集框架&#xff0c;主要用于管理实验室设备、自动化系统和工业设备。它为不同类型的硬件提供统一的控制接口&#xff0c;并支持设备之间的通信&#xff0c;广泛应用于粒子加速器、同步辐射光源、实验室自动化和工业控制等领域。 1. TANGO的核…

利用Circuit JS1再学学电子方面的知识(硬件)

1 电阻器 1.1 电阻并联 每个电阻电压相同&#xff0c;总电流等于各支路电流之和。 并联电阻值 R 1/(1/R11/R2);R约等于90.9 电阻并联后的阻值比最小的一个电阻值都小。 1.2 电阻串联 电阻串联的阻值为各电阻阻值相加。 RR1R2&#xff0c;串联涉及电阻分压。 一般在开关处…

使用Amazon Bedrock的无服务器的智能工作流

使用Amazon Bedrock的无服务器的智能工作流 智能工作流基于用户输入处理不可预见的任务&#xff0c;比如发起API调用。无服务器架构可以高效地管理这些任务和不同的工作负载&#xff0c;而无需维护服务器&#xff0c;从而加快部署速度。 你将学习如何通过使用带有保护措施的智能…

国高材服务 | 高分子结晶动力学表征——高低温热台偏光显微镜

众所周知&#xff0c;聚合物制品的实际使用性能&#xff08;如光学透明性、硬度、模量等&#xff09;与材料内部的结晶形态、晶粒大小及完善程度有着密切的联系&#xff0c;因此&#xff0c;对聚合物结晶形态等的研究具有重要的理论和实际意义。 随着结晶条件的不用&#xff0c…

【LeetCode每日一题】——415.字符串相加

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 字符串 二【题目难度】 简单 三【题目编号】 415.字符串相加 四【题目描述】 给定两个字符…