当前位置: 首页 > news >正文

JavaWeb(二)

Servlet开发技术

[外链图片转存中…(img-Cnu8X2V4-1728026684827)]

  1. 简述Servlet的创建过程?
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns="/hello")
public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//设置请求信息的字符编码(必须在使用request之前进行设置)request.setCharacterEncoding("utf-8");//使客户端浏览器并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。response.setContentType("text/html;charset=utf-8");//设置响应信息的字符编码(必须在创建响应输出流之前进行设置)response.setCharacterEncoding("utf-8");//获取客户端提交参数String name = request.getParameter("name");//创建响应输出流PrintWriter out = response.getWriter();//向客户端响应信息out.println("<html>");out.println("  <head><title>Servlet</title></head>");out.println("  <body>");out.println("你好,"+name+",欢迎来到Servlet的世界!");out.println("  </body>");out.println("</html>");//关闭响应输出流out.close();}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}
}
1. 一个类继承HttpServlet类,我们就将它称为一个Servlet。
2. 继承HttpServlet类后,必须要重写doGet和doPost方法。 当get请求时,自动由doGet方法进行处理。 当post请求时,自动由doPost方法进行处理。
3. doGet和doPost方法都有两个参数:HttpServletRequest、HttpServletResponse HttpServletRequest:封装了请求信息。 HttpServletResponse:封装了响应信息。
4. 所以,可以使用HttpServletRequest对象中的getParameter方法获取客户端提交参数。 使用HttpServletResponse创建响应输出流,向客户端响应信息。
5. @WebServlet注解中,使用urlPatterns属性来设置Servlet映射:将客户端请求映射到对应的Servlet上。
6. @WebServlet注解中,也可以简写为:@WebServlet("/hello")
  1. 简述HttpServletRequest、HttpServletResponse两个参数的作用?
    HttpServletRequest:封装了请求信息。 HttpServletResponse:封装了响应信息。
    可以使用HttpServletRequest对象中的getParameter方法获取客户端提交参数。 使用HttpServletResponse创建响应输出流,向客户端响应信息。

HttpServletRequest常用API

  1. getParameter() 获取客户端提交的单值参数,也就是返回值是一个字符串。
  2. getParameterValues() 获取客户端提交的多值参数(复选框组),也就是返回值是一个字符串数组。
  3. setCharacterEncoding() 设置请求的字符编码。

HttpServletResponse常用API

  1. getWriter() 获取一个向客户端响应的输出流。

  2. setCharacterEncoding() 设置输出流的字符编码。

  3. setContentType() 设置MIME类型,也就是通知浏览器使用何种编码解析响应数据。

  4. 简述Servlet 生命周期过程?
    Servlet实例从创建直到毁灭的整个过程,就是Servlet 生命周期。以下是 Servlet 遵循的过程:

    1. Servlet 容器创建 Servlet 的实例(下面会详述Servlet实例创建时机)
    2. Servlet 通过调用 init () 方法进行初始化(只调用一次)。
    3. Servlet 调用 service() 方法来处理客户端的请求(每一次请求都要调用一次)。
      service() 方法会根据请求的方式自动调用doGet或doPost。
    4. Servlet 通过调用 destroy() 方法终止(只调用一次)。
      在调用 destroy() 方法之后,Servlet 对象被标记为垃圾回收。
  5. 简述@WebServlet注解的作用?
    @WebServlet注解中,使用urlPatterns属性来设置Servlet映射:将客户端请求映射到对应的Servlet上.

  6. 简述如何配置Servlet的创建时机?

@WebServlet中的loadOnStartup

Servlet对象由Web服务器负责创建,创建的时机可以使用loadOnStartup属性进行配置:

  1. loadOnStartup属性的值必须是一个整数,表示servlet应该被载入的顺序
  2. 当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
  3. 当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
  4. 正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
  5. 当值相同时,容器就会自己选择顺序来加载。
  6. 取值1,2,3,4,5代表的是优先级,而非启动延迟时间。
  1. 什么是HTTP状态码?请至少说出4种HTTP状态码及其作用?

HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码。它由 RFC 2616 规范定义的。所有状态码的第一个数字代表了响应的五种状态之一。

1xx:消息。

这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。

2xx:成功。

代表请求已成功被服务器接收、理解、并接受。比如:
200:请求已成功。出现此状态码是表示正常状态。

3xx:重定向。

代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。

4xx:请求错误。

代表客户端请求发生错误。比如:

404:找不到请求的资源
405:服务器端处理请求方法不被允许。

5xx:服务器错误。

代表服务器端出现错误。 比如:
500:服务器端代码错误。
503:服务器异常(通常重启服务器即可解决)。

  1. 简述CORS的跨域设置?
    Access-Control-Allow-Origin:指示允许访问资源的源。 Access-Control-Allow-Credentials:指示是否允许发送凭据(如Cookies)

CORS是H5新增的一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。
跨域只存在于浏览器端,不存在于Node.js/python/ java等其它环境;跨域请求是能够发出去的,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。
CORS可以在服务器端响应时,向浏览器发送 “Access-Control-Allow-Origin” 配置信息,通知浏览器解除跨域限制。如果浏览器支持CORS、并且判断Origin通过的话,就会允许XMLHttpRequest发起跨域请求。
所以,CORS配置要写在服务器端。

CORS跨域设置:

response.setHeader("Access-Control-Allow-Origin", "*");

其中,“*”可以更换为需要配置的URL

  1. 编程题:
    a. 使用Servlet实现一个登录案例。
    b. 编写一个用户登录页面,包括用户名和密码表单。
    c. 编写一个LoginServlet,并在Servlet中判断是否登录成功,然后向前端返回成功或失败的json数据。
    d. 前端使用ajax请求,并通过服务器端返回的json数据来显示是否登录成功。

相关文章:

JavaWeb(二)

Servlet开发技术 [外链图片转存中…(img-Cnu8X2V4-1728026684827)] 简述Servlet的创建过程&#xff1f; package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; …...

【C++】--类和对象(2)

&#x1f44c;个人主页: 起名字真南 &#x1f446;个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 类的默认成员函数2 构造函数3 析构函数4 拷贝构造5 赋值运算符重载5.1 运算符重载5.2 赋值运算符的重载 1 类的默认成员函数 默认成员函数就是用户没有显示实现&#xff0c;…...

最新BurpSuite2024.9专业中英文开箱即用版下载

1、工具介绍 本版本更新介绍 此版本对 Burp Intruder 进行了重大改进&#xff0c;包括自定义 Bambda HTTP 匹配和替换规则以及对扫描 SOAP 端点的支持。我们还进行了其他改进和错误修复。 Burp Intruder 的精简布局我们对 Burp Intruder 进行了重大升级。现在&#xff0c;您可…...

C++ 观察者模式

观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;用于在对象之间建立一对多的依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;它的所有依赖对象都会得到通知并自动更新。 在观察者模式中&#xff0c;主题和观察者之间是松耦合…...

基于pytorch的手写数字识别-训练+使用

import pandas as pd import numpy as np import torch import matplotlib import matplotlib.pyplot as plt from torch.utils.data import TensorDataset, DataLoadermatplotlib.use(tkAgg)# 设置图形配置 config {"font.family": serif,"mathtext.fontset&q…...

SpringBoot接收前端传递参数

1&#xff09;URL 参数 参数直接 拼接在URL的后面&#xff0c;使用 ? 进行分隔&#xff0c;多个参数之间用 & 符号分隔。例如&#xff1a;http://localhost:8080/user?namezhangsan&id1后端接收&#xff08;在Controller方法的参数列表中使用 RequestParam 注解&…...

【LeetCode周赛】第 418 场

3309. 连接二进制表示可形成的最大数值 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接 数组 nums 中所有元素的 二进制表示 &#xff0c;请你返回可以由这种方法形成的 最大 数值。 注意 任何数字的二进制表示 不含 前导零 思路&#xff1a;暴力枚举 class Soluti…...

Android学习7 -- NDK2 -- 几个例子

学习 Android 的 NDK&#xff08;Native Development Kit&#xff09;可以帮助你用 C/C 来开发高性能的 Android 应用&#xff0c;特别适合对性能要求较高的任务&#xff0c;如音视频处理、游戏开发和硬件驱动等。下面是学习 NDK 的建议步骤和具体例子&#xff1a; ### 1. **准…...

问:说说JVM不同版本的变化和差异?

在Java程序的执行过程中&#xff0c;Java虚拟机&#xff08;JVM&#xff09;扮演着至关重要的角色。它不仅负责解释和执行Java字节码&#xff0c;还管理着程序运行时的内存。根据JVM规范&#xff0c;JVM将其所管理的内存划分为多个不同的数据区域&#xff0c;包括程序计数器、J…...

计算机毕业设计 基于Python的社交音乐分享平台的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…...

51单片机的水位检测系统【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块水位传感器继电器LED、按键和蜂鸣器等模块构成。适用于水位监测、水位控制、水位检测相似项目。 可实现功能: 1、LCD1602实时显示水位高度 2、水位传感器采集水位高度 3、按键可设置水位的下限 4、按键可手动加…...

Python和R及Julia妊娠相关疾病生物剖析算法

&#x1f3af;要点 算法使用了矢量投影、现代优化线性代数、空间分区技术和大数据编程利用相应向量空间中标量积和欧几里得距离的紧密关系来计算使用妊娠相关疾病&#xff08;先兆子痫&#xff09;、健康妊娠和癌症测试算法模型使用相关性投影利用相关性和欧几里得距离之间的关…...

Web安全 - 重放攻击(Replay Attack)

文章目录 OWASP 2023 TOP 10导图1. 概述2. 重放攻击的原理攻击步骤 3. 常见的重放攻击场景4. 防御重放攻击的技术措施4.1 使用时效性验证&#xff08;Time-Based Tokens&#xff09;4.2 单次令牌机制&#xff08;Nonce&#xff09;4.3 TLS/SSL 协议4.4 HMAC&#xff08;哈希消息…...

Python项目文档生成常用工具对比

写在前面&#xff1a; 通过阅读本片文章&#xff0c;你将了解&#xff1a;主流的Python项目文档生成工具&#xff08;Sphinx&#xff0c;MkDocs&#xff0c;pydoc&#xff0c;Pdoc&#xff09;简介及对比&#xff0c;本文档不涉及相关工具的使用。 概述 近期&#xff0c;由于…...

教育领域的技术突破:SpringBoot系统实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...

RabbitMQ入门3—virtual host参数详解

在 RabbitMQ 中&#xff0c;创建 Virtual Host 时会涉及到一些参数配置&#xff0c;比如 tags 和 Default Queue Type。下面是对这两个参数的详细解释&#xff1a; 1. Tags Tags 是 Virtual Host 的标记&#xff0c;用来为 Virtual Host 添加元数据&#xff0c;帮助你管理和组…...

【Nacos入门到实战十四】Nacos配置管理:集群部署与高可用策略

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…...

UE5+ChatGPT实现3D AI虚拟人综合实战

第11章 综合实战&#xff1a;UE5ChatGPT实现3D AI虚拟人 通过结合Unreal Engine 5&#xff08;UE5&#xff09;的强大渲染能力和ChatGPT的自然语言处理能力&#xff0c;我们可以实现一个高度交互性的AI虚拟人。本文将详细介绍如何在UE5中安装必要的插件&#xff0c;配置OpenAI…...

[图形学]smallpt代码详解(2)

一、简介 本文紧接在[图形学]smallpt代码详解&#xff08;1&#xff09;之后&#xff0c;继续详细讲解smallpt中的代码&#xff0c;包括自定义函数&#xff08;第41到47行&#xff09;和递归路径跟踪函数&#xff08;第48到74行&#xff09;部分。 二、smallpt代码详解 1.自…...

vmstat命令:系统性能监控

一、命令简介 ​vmstat​ 是一种在类 Unix 系统上常用的性能监控工具&#xff0c;它可以报告虚拟内存统计信息&#xff0c;包括进程、内存、分页、块 IO、陷阱&#xff08;中断&#xff09;和 CPU 活动等。 ‍ 二、命令参数 2.1 命令格式 vmstat [选项] [ 延迟 [次数] ]2…...

GURU-Ai:面向开发者的AI命令行工具集,提升代码理解与运维效率

1. 项目概述&#xff1a;一个面向开发者的AI助手工具集最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Guru322/GURU-Ai”。光看名字&#xff0c;你可能会觉得这又是一个大而全的AI模型或者聊天机器人&#xff0c;但点进去仔细研究后&#xff0c;我发现它的定位其实非常…...

基于MCP协议构建AI金融数据可视化服务器:从原理到实战部署

1. 项目概述&#xff1a;一个为AI智能体提供实时金融数据可视化的MCP服务器最近在折腾AI智能体&#xff08;Agent&#xff09;的生态&#xff0c;发现一个挺有意思的痛点&#xff1a;当你想让AI帮你分析股票、基金或者加密货币时&#xff0c;它往往只能给你干巴巴的数字和文字描…...

Lingoose:轻量级LLM编排框架的设计哲学与工程实践

1. 项目概述&#xff1a;从“Lingo”到“Goose”&#xff0c;一个轻量级LLM编排框架的诞生最近在折腾大语言模型应用开发的朋友&#xff0c;估计都绕不开一个核心问题&#xff1a;如何高效、优雅地编排和串联多个LLM调用、工具调用以及数据处理流程&#xff1f;当你从简单的单次…...

未来之窗昭和仙君(九十三)用户指引自助教学源码—东方仙盟

代码<!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <meta http-equiv"X-UA-Compatible" content"IEedge,chrome1"> <title>你的导师-未来之窗</title> <style>*…...

Tea印相失效诊断清单:从--v 6.2到--v 6.6,6个版本兼容性断点及降级回滚方案(含JSON config快照备份包)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Tea印相失效诊断清单&#xff1a;从--v 6.2到--v 6.6&#xff0c;6个版本兼容性断点及降级回滚方案&#xff08;含JSON config快照备份包&#xff09; Tea印相&#xff08;TeaYinXiang&#xff09;在 v…...

基于RP2040的客制化宏键盘:从硬件设计到KMK固件开发全攻略

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫clawdpad&#xff0c;作者是kudretyilmazz。乍一看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但如果你对机械键盘、客制化输入设备或者桌面自动化感兴趣&#xff0c;那这个项目绝对值得你花时间…...

AI智能体可观测性实战:用AgentOps实现全链路追踪与性能优化

1. 项目概述&#xff1a;当AI智能体遇上“黑匣子”&#xff0c;我们如何看清它的每一步&#xff1f;如果你最近在折腾AI智能体&#xff08;Agent&#xff09;&#xff0c;无论是用LangChain、AutoGPT还是自己手搓的框架&#xff0c;大概率会遇到一个共同的痛点&#xff1a;调试…...

顶伯 + 微软 TTS,3 分钟生成专业级解说配音

&#x1f3af; 顶伯 微软 TTS&#xff0c;3 分钟生成专业级解说配音告别繁琐录音&#xff0c;用顶伯文字转语音工具快速打造高品质配音。✨ 一、为什么选择顶伯与微软 TTS 的组合&#xff1f;在视频制作、课程讲解或产品演示中&#xff0c;配音质量直接影响观众体验。 顶伯文字…...

浏览器扩展实现AI提示词高效管理:从模板变量到工作流优化

1. 项目概述与核心价值最近在折腾AI工具链&#xff0c;发现一个痛点&#xff1a;每次和ChatGPT、Claude或者本地部署的大模型对话时&#xff0c;那些精心调试好的提示词&#xff08;Prompt&#xff09;总是散落在各个聊天窗口里&#xff0c;要么就是得手动复制粘贴&#xff0c;…...

书成紫微动,律定凤凰驯:海棠山铁哥的道,从来不是嘴上说的,是写在作品里的

文坛从不缺大道理&#xff0c;也不缺高谈阔论的传道者&#xff0c;历来最缺的&#xff0c;是知行合一、落地成真的真大道。一、乱象&#xff1a;言道者多&#xff0c;行道者少口头标榜实际行径文脉传承随波逐流初心坚守妥协功利拒绝流量收割热度敬畏真诚唯数据论 语言可以伪装人…...