关于JavaWeb的总结笔记

  • JavaWeb

    • 基础

      • 描述

        • Web服务器的作用是接受客户端的请求,给客户端响应

      • 服务器的使用

        • Tomcat(最常用的)

        • JBoss

        • Weblogic

        • Websphere

      • JavaWeb的三大组件

        • Servlet

          • 主要负责接收并处理来自客户端的请求,随后生成响应结果。例如,在处理用户登录请求时,Servlet 能够验证用户输入的账号和密码是否正确,并依据验证结果返回相应提示信息给客户端。

        • JSP

          • 基于 HTML 页面嵌入 Java 代码片段或表达式,从而实现动态网页内容的生成与展示。以显示商品列表页面为例,借助 JSP 可从数据库获取商品数据,并在页面中动态呈现商品名称、价格等信息。

        • JavaBean

          • 是一种Java的对象用于封装数据例如:可创建一个 JavaBean 类封装用户的姓名、年龄、性别等属性及其相关的获取和设置方法。

      • 服务器相应码

        • 404 Not Found

          • 含义:服务器无法找到客户端请求的资源。这可能是因为资源不存在、URL 拼写错误等原因

        • 500 Internal Server Error

          • 服务器在处理客户端请求时发生了内部错误。这可能是由于代码错误、服务器配置错误、数据库故障等原因导致的。

        • 503 Service Unavailable

          • 服务器暂时无法处理客户端请求,通常是由于服务器过载、维护或者其他临时故障导致的。

    • Servlet

      • 三种实现方式

        • 实现Servlet接口

          • 需要重写的方法

          • 接口方法的详解init() Servlet在创建的过程中自动调用的方法 。 service()处理客户端请求的方法。Servlet的每调用一次,service()方法就执行一次。 getServletInfo() 放回Servlet的描述信息。 destroy()服务端任务结束,调用该方法摧毁Servlet的对象。

        • 继承GenericServlet类

          • GenericServlet类 帮我们把其他四个方法都实现类, 只留下一个抽象service() 让我们重写

        • 继承HttpServlet类(最推荐的方式)只需要重写doGet()和doPost()方式说明:两种方式都是来处理客户端发送来的请求,写在服务端,是Javaweb处理业务的逻辑的核心代码代码,由程序员来完成。可以实现登录、注册等基础业务。

      • Servlet的生命周期:

        • Servlet对象会在第一次访问的时候由tomcat自动创立,并调用init()初始化方法,而且 一个Servlet类型,服务器只创建一个实例对象 。之后每次访问都会调用Servlet()方法。在服务器结束后调用destroy()摧毁Servlet

    • 请求(request)与响应(response)

      • 一个JavaWeb响应的整个流程

      • requset

        • request概述

          • 在客户端发出每个请求时,服务器都会创建一个request对象,并把请求数据封装到request中,然后在调用Servlet.service()方法时传递给service()方法,这说明在service()方法中可以通过request对象来获取请求数据。

        • 作用

          • 封装了请求头数据; 封装了请求正文数据,如果是GET请求,那么就没有正文; request是一个域对象,可以把它当成Map来添加获取数据; request提供了请求转发和请求包含功能

        • 两种请求的区别 Get请求: 直接在浏览器地址栏输入网址 使用<a href=""/> 也是get请求 使用提交表单form, method没有写, 写get Post请求: 使用提交表单form, method =“post”get 请求,post请求区别: get请求,请求参数通过url传递, post请求: 通过请求体传递参数 get请求不安全, 有敏感字段, 一定不能使用get, post请求安全一些 get请求无法传递文件参数, 提交文件必须使用post请求 get请求参数有大小限制: 4KB, post请求没有限制

        • request域的方法

          • void setAttribute(String name, Object value):用来存储一个对象

          • servletContext.setAttribute(“xxx”, “XXX”),在request中保存了一个域属性,域属性名称为xxx,域属性的值为XXX。

          • Object getAttribute(String name):用来获取request中的数据,当前在获取之前需要先去存储才行

          • void removeAttribute(String name):用来移除request中的域属性

        • 请求转发

          • 概念:客户一个请求,都表示由多个Servlet共同来处理一个请求。例如Servlet1来处理请求,然后Servlet1又转发给Servlet2来继续处理这个请求。如果在AServlet中请求转发到BServlet,那么在AServlet中就不允许再输出响应体,即不能再使用response.getWriter()和response.getOutputStream()向客户端输出,这一工作应该由BServlet来完成

      • response

        • 概念

          • response是响应对象,向客户端输出响应正文(响应体)可以使用response的响应流

        • 字符编码

          • 在使用response.getWriter()时需要注意默认字符编码为ISO-8859-1,如果希望设置字符流的字符编码为utf-8,可以使用response.setCharaceterEncoding(“utf-8”)来设置。这样可以保证输出给客户端的字符都是使用UTF-8编码的!

        • 关于重定向

          • 当你访问http://www.sun.com时,你会发现浏览器地址栏中的URL会变成http://www.oracle.com/us/sun/index.htm,这就是重定向了。重定向是服务器通知浏览器去访问另一个地址,即再发出另一个请求。

          • 重定向是两次请求; 重定向的URL可以是其他应用,不局限于当前应用; 重定向的响应头为302,并且必须要有Location响应头; 重定向就不要再使用response.getWriter()或response.getOutputStream()输出数据,不然可能会出现异常;

      • 请求转发与重定向比较

        • - 请求转发是一个请求,而重定向是两个请求; - 请求转发后浏览器地址栏不会有变化,而重定向会有变化,因为重定向是两个请求; - 请求转发的目标只能是本应用中的资源,重定向的目标可以是其他应用; - 请求转发对AServlet和BServlet的请求方法是相同的,即要么都是GET,要么都是POST,因为请求转发是一个请求; - 重定向的第二个请求一定是GET; - 请求转发是在服务端内部执行的,而重定向是在客户端执行的.

    • Cookie

      • 概念

        • Cookie就是一个键和一个值构成的,随着服务器端的响应发送给客户端浏览器。然后客户端浏览器会把Cookie保存起来,当下一次再访问服务器时把Cookie再发送给服务器。

      • 创建方式

        • response.addCookie(cookie)

      • 注意

        • - Cookie大小上限为4KB; - 一个服务器最多在客户端浏览器上保存20个Cookie; - 一个浏览器最多保存300个Cookie;

      • 应用案例

        • 用户身份验证和会话管理:通过 Cookie 可以记录用户的登录状态。比如,用户登录成功后,服务器会设置一个包含用户 ID 或登录令牌的 Cookie。在用户访问网站的其他页面时,服务器通过检查这个 Cookie 来确定用户是否已经登录,避免用户在每个页面都需要重新输入登录信息。

    • 过滤器(Filter)

      • 概念

        • 当用户请求某个Servlet时,会先执行部署在这个请求上的Filter,如果Filter“放行”,那么会继承执行用户请求的Servlet;如果Filter不“放行”,那么就不会执行用户请求的Servlet。

      • 实现案例

        • 过滤器就是写一个类,实现Filter接口。需要在web.xml部署Filter: <filter> <filter-name>helloFilter</filter-name> <filter-class>cn.itcast.filter.HelloFilter</filter-class> </filter> <filter-mapping> <filter-name>helloFilter</filter-name> <url-pattern>/index.jsp</url-pattern> </filter-mapping>

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

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

相关文章

生成式引擎优化(GEO)核心解析:下一代搜索技术的演进与落地策略

最新统计数据声称&#xff0c;今天的 Google 搜索量是 ChatGPT 搜索的 373 倍&#xff0c;但我们大多数人都觉得情况恰恰相反。 那是因为很多人不再点击了。他们在问。 他们不是浏览搜索结果&#xff0c;而是从 ChatGPT、Claude 和 Perfasciity 等工具获得即时的对话式答案。这…

网编数据库小练习

搭建服务器客户端&#xff0c;要求 服务器使用 epoll 模型 客户端使用多线程 服务器打开数据库&#xff0c;表单格式如下 name text primary key pswd text not null 客户端做一个简单的界面&#xff1a;1&#xff1a;注册2&#xff1a;登录无论注册还是登录&#xff0c;…

理解 PS1/PROMPT 及 macOS iTerm2 + zsh 终端配置优化指南

终端提示符&#xff08;Prompt&#xff09;是我们在命令行中与 shell 交互的关键界面&#xff0c;它不仅影响工作效率&#xff0c;也影响终端显示的稳定和美观。本文将结合 macOS 上最流行的 iTerm2 终端和 zsh shell&#xff0c;讲解 PS1/PROMPT 的核心概念、常见配置技巧&…

Laravel 原子锁概念讲解

引言 什么是竞争条件 (Race Condition)&#xff1f; 在并发编程中&#xff0c;当多个进程或线程同时访问和修改同一个共享资源时&#xff0c;最终结果会因其执行时序的微小差异而变得不可预测&#xff0c;甚至产生错误。这种情况被称为“竞争条件”。 例子1&#xff1a;定时…

83、形式化方法

形式化方法&#xff08;Formal Methods&#xff09; 是基于严格数学基础&#xff0c;通过数学逻辑证明对计算机软硬件系统进行建模、规约、分析、推理和验证的技术&#xff0c;旨在保证系统的正确性、安全性和可靠性。以下从核心思想、关键技术、应用场景、优势与挑战四个维度展…

解决 Ant Design v5.26.5 与 React 19.0.0 的兼容性问题

#目前 Ant Design v5.x 官方尚未正式支持 React 19&#xff08;截至我的知识截止日期2023年10月&#xff09;&#xff0c;但你仍可以通过以下方法解决兼容性问题&#xff1a; 1. 临时解决方案&#xff08;推荐&#xff09; 方法1&#xff1a;使用 --legacy-peer-deps 安装 n…

算法与数据结构(课堂2)

排序与选择 算法排序分类 基于比较的排序算法&#xff1a; 交换排序 冒泡排序快速排序 插入排序 直接插入排序二分插入排序Shell排序 选择排序 简单选择排序堆排序 合并排序 基于数字和地址计算的排序方法 计数排序桶排序基数排序 简单排序算法 冒泡排序 void sort(Item a[],i…

跨端分栏布局:从手机到Pad的优雅切换

在 UniApp X 的世界里&#xff0c;我们常常需要解决一个现实问题&#xff1a; “手机上是全屏列表页&#xff0c;Pad上却要左右分栏”。这时候&#xff0c;很多人会想到 leftWindow 或 rightWindow。但别急——这些方案 仅限 Web 端&#xff0c;如果你的应用需要跨平台&#xf…

华为服务器管理工具(Intelligent Platform Management Interface)

一、核心功能与技术架构 硬件级监控与控制 全维度传感器管理:实时监测 CPU、内存、硬盘、风扇、电源等硬件组件的温度、电压、转速等参数,支持超过 200 种传感器类型。例如,通过 IPMI 命令ipmitool sdr elist可快速获取服务器传感器状态,并通过正则表达式提取关键指标。 远…

Node.js Express keep-alive 超时时间设置

背景介绍随着 Web 应用并发量不断攀升&#xff0c;长连接&#xff08;keep-alive&#xff09;策略已经成为提升性能和资源复用的重要手段。本文将从原理、默认值、优化实践以及潜在风险等方面&#xff0c;全面剖析如何在 Node.js&#xff08;Express&#xff09;中正确设置和应…

学习C++、QT---30(QT库中如何自定义控件(自定义按钮)讲解)

每日一言你比想象中更有韧性&#xff0c;那些看似艰难的日子&#xff0c;终将成为勋章。自定义按钮我们要知道自定义控件就需要我们创建一个新的类加上继承父类&#xff0c;但是我们还要注意一个点&#xff0c;就是如果我们是自己重头开始造控件的话&#xff0c;那么我们就直接…

【补充】Linux内核链表机制

专题文章&#xff1a;Linux内核链表与Pinctrl数据结构解析 目标&#xff1a; 深入解析Pinctrl子系统中&#xff0c;struct pinctrl如何通过内核链表&#xff0c;来组织和管理其多个struct pinctrl_state。 1. 问题背景&#xff1a;一个设备&#xff0c;多种引脚状态 一个复杂的…

本地部署Dify、Docker重装

需要先安装一个Docker&#xff0c;Docker就像是一个容器&#xff0c;将部署Dify的空间与本地环境隔离&#xff0c;避免因为本地环境的一些问题导致BUG。也确保了环境的统一&#xff0c;不会出现在自己的电脑上能跑但是移植到别人电脑上就跑不通的情况。那么现在就开始先安装Doc…

【每天一个知识点】非参聚类(Nonparametric Clustering)

ChatGPT 说&#xff1a;“非参聚类”&#xff08;Nonparametric Clustering&#xff09;是一类不预先设定聚类数目或数据分布形式的聚类方法。与传统“参数聚类”&#xff08;如高斯混合模型&#xff09;不同&#xff0c;非参聚类在建模过程中不假设数据来自于已知分布数量的某…

人形机器人CMU-ASAP算法理解

一原文在第一阶段&#xff0c;用重定位的人体运动数据在模拟中预训练运动跟踪策略。在第二阶段&#xff0c;在现实世界中部署策略并收集现实世界数据来训练一个增量&#xff08;残差&#xff09;动作模型来补偿动态不匹配。&#xff0c;ASAP 使用集成到模拟器中的增量动作模型对…

next.js刷新页面时二级菜单展开状态判断

在 Next.js 中保持二级菜单刷新后展开状态的解决方案 在 Next.js 应用中&#xff0c;当页面刷新时保持二级菜单的展开状态&#xff0c;可以通过以下几种方法实现&#xff1a; 方法1&#xff1a;使用 URL 参数保存状态&#xff08;推荐&#xff09; import { useRouter } from n…

网络基础DAY13-NAT技术

NAT技术internet接入方式&#xff1a;ADLS技术&#xff1a;能够将不同设备的不同信号通过分离器进行打包之后再internet中传输&#xff0c;到另一端的分离器之后再进行分离。传输到不同的设备中去。常见光纤接入方式internet接入认证方式&#xff1a;PPPoE&#xff1a;先认证再…

HBuilderX中设置 DevEco Studio路径,但是一直提示未安装

前言&#xff1a; HBuilderX中设置 DevEco Studio路径&#xff0c;但是一直提示未安装。 报错信息&#xff1a; 检测到鸿蒙工具链&#xff0c;请在菜单“工具->设置->运行配置”中设置鸿蒙开发者工具路径为 DevEco Studio 的安装路径&#xff0c;请参考 报错原因…

什么是GNN?——聚合、更新与循环

在传统的深度学习中&#xff0c;卷积神经网络&#xff08;CNN&#xff09;擅长处理网格结构数据&#xff08;如图像&#xff09;&#xff0c;循环神经网络&#xff08;RNN&#xff09;擅长处理序列数据&#xff08;如文本&#xff09;。但当数据以图的形式存在时&#xff08;如…

深入解析 Django REST Framework 的 APIView 核心方法

在 Python 3 中&#xff0c;Django 的 APIView 类是 Django REST Framework&#xff08;DRF&#xff09;中用于构建 API 视图的核心基类。它提供了一个灵活的框架来处理 HTTP 请求&#xff0c;并通过一系列方法支持认证、权限检查和请求限制等功能。self.perform_authenticatio…