Servlet笔记(一)

WebForms 表单 WebForms 表单是一种用于收集用户输入信息的数据结构。它由HTML元素和服务器控件组成。用户在表单中填写信息,提交后,服务器将处理这些信息,并根据需要进行相应的操作。WebForms 表单是Web应用程序中不可或缺的一部分。通过合理使用WebForms 表单,我们可以构建出功能强大、用户体验良好的Web应用程序。本文详细介绍了WebForms 表单的概念、工作原理、常用属性和方法,以及如何优化表单。希望对您有所帮助。 阅读详情

Servlet笔记 - day1


一、引言
  1. 目前程序存在的问题
  • tomcat+html展示信息不变
  1. 原因:

    • html网页中的信息是静态的(数据不变)
    • tomcat直接读取html源文件中的内容,响应给浏览器
  2. 解决思路:

    • 将 Java程序交给 tomcat管理
    • 服务器调用Java程序,获得结果响应给浏览器
      在这里插入图片描述
二、Servlet
  1. 概念:

    (1) 在 服务器上运行的,用Java语言编写的一段程序。
    (2) 用于接收 client的请求(rquest),处理完成后把对应的结果响应(response)给client

    • 通常以网页的形式:是一种制作动态网页的技术

在这里插入图片描述

  1. Servlet标准:Servlet接口,JavaEE规范

(1) 接口:javax.servlet.Servlet
(2) 接口的位置:tomcat/lib/servlet-api.jar包中

  1. 自定义Servlet程序的三种方式:
    (1) class 类名 implements Servlet{}

    • 必须实现接口中的5个方法
    • 与协议无关

    (2) class 类名 extends GenericServlet{}

    • GenericServlet位于javax.servlet包中的抽象类
    • 必须实现service方法;
    • 与协议无关

    (3) class 类名 extends HttpServlet{}

    • HttpServlet位于java.servlet.http包中,需要覆盖service方法;

    • 与协议有关

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UWA3msT5-1609819136940)(1609733790601.png)]

三、第一个Servlet程序
第一个Servlet程序:动态显示当前系统时间。
  1. 准备工作:

    • 在Java Project项目中,必须导入Servlet的jar包
    • tomcat/lib/servlet-api.jar包中
  2. 编写Servlet程序 :

在这里插入图片描述

在这里插入图片描述

  1. 将servlet程序部署到tomcat(发布):

    • 注意:将带包结构的.class文件放到tomcat/webapps/web应用/WEB-INF/classes文件夹中

在这里插入图片描述

  1. 配置Servlet的 web.xml 文件:

    • 配置的目的:把不能直接运行的Servlet类转化为用户可以直接访问运行的类
    • 注意:每一个 web应用,有且只能有一个 web.xml文件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6xb5Q68C-1609819136949)(1609741928871.png)]

  2. 启动 tomcat:

    • tomcat的根目录/bin/startup.bat
    • 注意:只要更改web.xml 中的内容,必须重启tomcat服务器
  3. 访问/请求:

    • http://ip:port/web应用名/url-pattern
    • 例如:http://localhost:8989/myweb/first
    • 注意:访问地址中间不能带有任何空格

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lYHbFl5J-1609819136951)(1609742049077.png)]

四、Servlet中乱码解决
  1. 设置响应的内容类型:
    response.setContentType(“text/html”);
  2. 设置响应的字符集:
    response.setCharacterEncoding(“gbk”);
  3. 以上两句代码合成一句:
    response.setContentTyp("text/html;charset=“gbk”);
五、常见异常及解决方案
  1. 404 :请求资源无效
    解决方案:
    • url 地址栏的地址写错,特别是web应用名和url-pattern
    • 检查控制台是否有异常信息
    • 确认带包结构的 class 文件,已经拷贝到 server 的正确路径
    • 检查 web应用的 目录结构
  2. 405:
    解决方案:
    • 检查servlet中的service方法的声明是否正确
    • service方法中 不能调用父类的方法:super.service(参数);删除
  3. 500:服务器端错误
    解决方案:
    • java源代码运行过程中出现异常
    • 检查异常堆栈信息确定到错误行
    • 确认 web.xml 中的< servlet> 包名.类名< /servlet > 是否正确
  4. 运行正常,在浏览器提示下载或是另存为…
    解决方案:
    • 检查是否设置响应类型的参数:
    • response.setContentType(“text/html”);
  5. servlet修改后,没有变化
    解决方案:
    • servlet代码修改,tomcat需要重启,才能生效
六、MyEclipse集成开发Servlet和部署
  1. MyEclipse 管理 tomcat

    (1) 配置tomcat

    • window --> preferences --> 搜 tomcat —> tomcat 7.x -->
      点击 --> 选择Enable+tomcat目录 --> apply

    (2) 管理 tomcat窗口:

    • window --> showview --> other --> servers

    (3) 启动tomcat

    • servers --> tomcat7.x --> 右键 run server

    (4) 关闭 tomcat

    • servers --> tomcat 7.x --> 右键 stop server
  2. MyEclipse 开发部署 Servlet

    (1) 新建 web project

    ​ web项目自动创建对应的web应用目录结构:

    • WEB-INF
    • classes
    • web.xml

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wv9b0eve-1609819136952)(1609742673858.png)]

    (2) 编写 Servlet程序

    (3) 编写 配置文件 web.xml
    (4) 部署 web项目

    • servers --> tomcat8.x --> 右键 --> add deployment --> 选择部署项目
    • 注意:项目部署后,默认 server 上的web应用名 是 web project 项目名。
    • 查看web应用名:
      项目右键 --> properties -->MyEclipse --> Project Facets -->Web 点击右侧展示
七、请求Servlet的三种方式
  1. 浏览器通过地址栏直接请求:
    http://ip:port/web应用名/url-pattern

  2. 通过超链接请求:
    (1) 在server上创建 html网页,并且定义 a 标签
    (2) 指定a标签的href属性:
    < a href="/web应用名/url-pattern" > … < /a>

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lurb9nSZ-1609819136953)(1609744315670.png)]

  3. 通过表单请求
    在server上创建 html页面,并定义form 表单
    指定 form标签中的 action 属性:

    < form action="/web应用名/url-pattern">

    注意:
    1. 地址栏请求方式和超链接请求方式都是get发送方式
    2. 表单请求即可以get请求方式也可以post请求方式
    
八、Servlet接收请求参数
  1. 引入 :

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FJuzZhlQ-1609819136954)(1609745086389.png)]

  2. 获取表单数据(get和post方式):
    String value = request.getParameter(“表单元素的name”);

  3. 解决post请求数据中的中文乱码:
    request.setCharacterEncoding(“utf-8”);
    注意:设置编码,需要在接收请求参数之前设置

  4. Client带参请求:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TGFiUu2g-1609819136955)(1609745351378.png)]

    (1) Server获取Client请求参数:
    String value = request.getParameter(“表单元素的name”);

    (2) 解决Client请求参数乱码:

    • post提交方式乱码:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ET12kGR-1609819136956)(1609745440859.png)]

    • get提交方式乱码:修改 tomcat的 conf/server.xml中 < connector>

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hZFw1JeF-1609819136957)(1609745461415.png)]

九、Servlet生命周期
  1. servlet的生命周期 由 server tomcat 进行管理。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dQrj3MF0-1609819136958)(1609745555860.png)]

  2. 请求处理的完整过程:

    (1) client 向 server 发出请求
    (2) server 接到请求,解析URL地址,根据 /web应用名,确定唯一的 web.xml
    (3) 根据 /url-pattern,在 web.xml 找到中对应的
    注意: 找不到 报 404
    (4) 根据中的,找到中的

    ​
    (5) 根据中的 ,找到 中的

    ​
    (6) 根据 中的 ,找到 中的

    • server 在内存中获取该类的对象:
      • 第一次请求(对象不存在),使用反射创建该类的对象:
        obj = Class.forName(“包名.类名”).newInstance();
      • 以后再请求(对象存在),直接使用该对象

    (7) 调用 service 方法,处理请求,把结果响应给 client

  3. Servlet生命周期阶段【面试 题目】

    (1) servlet的生命周期 由 server tomcat 进行管理

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f50ewE2Q-1609819136960)(1609745996539.png)]

    (2) 扩充:同一个Servlet在tomcat整个启动过程中,只启动一次,默认是在client第一次请求时,也有特殊情况

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oloDnz0K-1609819136961)(1609746042953.png)]

  4. 思考:如何统计当前显示系统时间的Servlet被访问的次数。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Cya7hX6-1609819136962)(1609746104294.png)]

  5. 线程问题:
    (1) servlet在运行时,tomcat只为该类创建1个对象(servlet为单例设计),并由这个对象负责对所有请求它的client进行处理。 当多个client同时请求该servlet时,这个对象就成为多线程环境下的临界资源对象,此时必须保证该临界资源对 象的准备性和正确性(线程安全):

    • 方法一: 对临界资源对象操作不安全的代码 使用synchronized(效率低);
    • 方法二: 尽量避免在servlet中定义(有修改可能的)成员变量。

    (2) Servlet单例设计的优缺点:

    • 缺点:多线程环境下,数据不安全
    • 优点:提高效率,减小频繁创建对象带来的消耗;同时提高jvm内存空间的利用率

这个对象负责对所有请求它的client进行处理。 当多个client同时请求该servlet时,这个对象就成为多线程环境下的临界资源对象,此时必须保证该临界资源对 象的准备性和正确性(线程安全):

  • 方法一: 对临界资源对象操作不安全的代码 使用synchronized(效率低);
  • 方法二: 尽量避免在servlet中定义(有修改可能的)成员变量。

(2) Servlet单例设计的优缺点:

  • 缺点:多线程环境下,数据不安全
  • 优点:提高效率,减小频繁创建对象带来的消耗;同时提高jvm内存空间的利用率
时序异常检测汇总 时序异常检测 阅读详情

相关推荐

Windows下用Docker部署RagFlow的5个常见错误及解决方法(附详细日志分析)

本文针对Windows系统下使用Docker部署RagFlow的常见难题,提供了详细的避坑指南。文章深度剖析了WSL2配置、端口冲突、文件权限、资源限制及网络通信这五个典型错误场景,并结合具体日志分析,给出了经过验证的解决方案,帮助开发者高效完成部署。

weixin_29233857的博客 178

jquery中的ajax的请求方式

jquery中的ajax的请求方式

qq_45076007的博客 135

FPGA 学习系列(2):Verilog 语法基础

Verilog 由门级建模数据流建模行为建模门级建模(Gate Level Modeling):使用基本逻辑门描述电路,接近硬件物理结构。数据流建模(Data Flow Modeling):使用assign语句进行组合逻辑建模,类似数学方程式。行为建模(Behavioral Modeling):使用always代码块和if-elsecase等控制语句建模,抽象程度较高。Verilog 代码一般由模块(module)组成,每个模块描述一个独立的硬件功能。

Azperk的博客 987

Servlet学习笔记

这篇学习笔记探索了Servlet的基本概念和相关技术。文章首先介绍了HTTP协议的基本原理和Tomcat服务器的作用,作为理解Servlet的基础知识。然后,文章深入讨论了如何实现一个Servlet,包括创建Servlet类、配置Servlet映射和处理HTTP请求的过程。同时,笔记详细解释了Servlet的生命周期,包括初始化、请求处理和销毁阶段。 在处理HTTP请求和响应方面,学习笔记介绍了ServletRequest和ServletResponse对象的功能和使用方法。

m0_61940795的博客 395

遥感大模型之Prithvi的关键技术解读

Prithvi系列模型开创了遥感领域基础模型新范式,通过海量多源时空数据(HLS和SAR)与Vision Transformer架构的深度融合,采用掩码自编码器进行自监督预训练,实现了强大的地球观测表征能力。该技术体系突破传统方法在全局建模、多模态融合和时空分析上的局限,仅需少量标注数据即可在土地分类、灾害监测等任务上取得优异表现。从初代3亿参数到Prithvi-EO-2.0的10亿参数升级,展现了模型可扩展性,为构建地球数字孪生智能基座奠定基础。

panshengwu的博客 865

基于 Qt C++ 的 2D 动画制作工具

你可以修改它的中心坐标 (X, Y)、宽度 (W)、高度 (H),或点击 "选择颜色" 按钮改变其填充色。* **图形视图 (`QGraphicsView` 和 `QGraphicsScene`)**: 用于显示和编辑当前帧的内容。

寒寒豆豆软件公司的博客 112

Servlet知识点学习笔记CG

Servlet是Java Web应用程序中的一种基于Java语言实现的服务器端组件,可以处理来自客户端的HTTP请求并生成响应。Servlet作为Web应用的一部分,它们通过请求-响应模型与客户端Web浏览器交互,动态生成Web内容。线程安全是指在多线程环境下,程序能够正确地处理多个线程同时访问共享资源的情况,不会导致数据的不一致或出错。在 Servlet 中,由于多个线程可能同时访问同一个 Servlet 实例,因此需要考虑线程安全的问题。

m0_62110645的博客 435

IMEI引起的无法驻网问题

问题不复杂,场景很简单,如上图,UE在进行LTE attach过程时,在送完NAS security mode complete后,就立刻收到了网络attach reject 带cause 6 Illegal ME,根据协议描述这个cause 代表ME不被网络可接受,例如ME在禁止名单或者黑名单中就会有这种cause。然而前方在报这个问题的时候,也是知道SIM卡和手机IMEI在运营商那边没能成功绑定,然后才报的问题,要查看手机是不是有问题...... 告诉前方原因后,还认为是手机问题,告知要继续查。

asd199086的博客 1425

Servlet笔记一

什么是Servlet,访问一个Servlet的过程?怎么创建一个Servlet?Servlet原理,继承关系?Servlet生命周期?Servlet里的几个重点对象?

u010451161的博客 173

如何免费快速的部署一个自用免VIP的自动追剧工具!NAS新玩法!豆瓣与迅雷结合,轻松实现自动下载电影自动追剧功能(支持Windows,群晖nas,飞牛nas,软路由,服务器等Docker快速部署)

追剧党狂喜!豆瓣追剧神器,自动添加云盘,自动下载,微信通知,一键搞定!

XiaoqiangClub的博客 4582

倍福--实现TCP/IP的配置

控制器为CX5120,需要和上位机做通信,选择TCP/IP的通讯方式,本文介绍TCP/IP通信的操作步骤。 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制软件 3 1.2. 串口调试助手 3 1.2.1. TCP调试通信助手 3 授权文件 3 2.1 Lib文件 3 2.2. CAB文件 4 PLC程序编写 4 3.1. 引入TCP/IP库文件 4 3.2. Client端程序 5 3.2.1. 建立相关变量 5 3.3.2. 编写连接功能块

weixin_41883890的博客 5730

Java学习笔记一Servlet一

建立一个包,并在包内定义class文件: 配置,这里的day13_tomcat是虚拟目录,而这里资源名为/demo,需要将这里的Java类通过配置映射到demo上。这里的servlet-class是全称cn.itcast.web.servlet.ServletDemo1,serlet-name命名为demo1。将demo1映射为URL资源路径/demo1。 ...

肥叔菌的博客 8920

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

关于Servlet的笔记一

1.URL主要有四部分组成:协议,主机,端口,资源路径 2.404错误,访问资源不存在错误(路径错误) 3.编写servlet最先使用的是使用的是实现Servlet接口,但是此接口需要实现五种方法,但我们一般只是用doGet和doPost方法,故此种方法不合理 4.配置web.xml文件,首先声明Servlet然后添加servlet-mapping,在servlet中声明我们要命名哪个路径的下的什么文件,然后在servlet-mapping中直接配置其路径名,我们在前端进行访问时就可以直接使用此路径进行访问

New__Dream的博客 152

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

servlet学习笔记(一)之servlet入门教程

一、知识准备 servlet 是在服务器上运行的小程序,一个 servlet 就是一个 Java 类,并且可以通过 “请求 - 响应” 编程模式来访问这个驻留在服务器内存里面的 servlet 程序 tomcat 容器等级以及 servlet 的位置 二、编写 servlet 继承 HTTPServlet,在创建时,直接指定父类 重写 doGet() 或者 doPos...

程序员世杰 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Servlet学习笔记《一》

关于Servlet的学习总结,一步一步学习Servlet。

dabai_cai的博客 414

Servlet学习笔记一(Servlet介绍)

目录一:Servlet概述1.什么是Servlet 一:Servlet概述 1.什么是Servlet Servlet是JavaWeb的三大组件之一,它属于动态资源。Servlet的作用是处理请求,服务器会把收到的请求交给Servlet来处理,在Servlet中通常需要: 接收骑请求数据 处理请求 完成响应 例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Se...

池鱼 590

Servlet 学习笔记一

[day10] 1.如何开发一个Servlet 步骤: 1)编写java类,继承HttpServlet类 2)重新doGet和doPost方法 3)Servlet程序交给tomcat服务器运行!! 3.1 servlet程序的class码拷贝到WEB-INF/classes目录 3.2 在web.xml文件中进行配置

czzhenmsdn的专栏 372

Servlet、ServletContext笔记一

对Servlet、ServletContext个人见解

m0_68506875的博客 183

Java学习笔记一Servlet三

Servlet是个特殊的Java类,每个Servlet可以响应客户端的请求。Servlet 提供不同的方法用于响应客户端请求。 事实上,客户端的请求通常只有GET 和POST 两种, Serviet 为了响应这两种请求,必须重写doGet和doPost两个方法。如果Servlet为了响应4 种方式的请求,则需要同时重写上面的4 个方法。大部分时候, Servlet 对于所有请求的响应都是完全一样...

肥叔菌的博客 9133

关于实验一的Jsp笔记——Servlet初认识

笔记:主要是写一些关于java web的初始认识,和通过servlet进行一个登录,服务器验证,返回跳转页面的小项目

zakahan的博客 312

Servlet笔记(一)

Servlet,用目前网上最流传的定义就是“Servlet是运行在服务器端的JAVA小程序,也是一个JAVA类”。 Servlet类是一个接口,它有着诸如init(),service(),destory(),getServletConfig(),servletRequset(),servletRequest()等方法。 Servlet的生命周期:服务器实例化该Servlet对象>初始化(i

xushuai2333333的博客 410

servlet调用js_Servlet笔记(一)

1、MyEclipse集成TomCat项目部署2、<!-- 配置servlet 配置方式一:精确配置 <url-pattern>/别名</url-pattern> 注意: "/"是必须声明的,别名不可以为中文 此种配置方式可以配置多个 配置方式二:模糊配置 <url-pattern>*.后缀名&l...

weixin_30550985的博客 636

Servlet学习笔记一

一.什么是Servlet sun公司制定的一种用来扩展web服务器功能的组件规范 (1)扩展web服务器 web服务器通常只能够处理静态资源的请求,可以使用servlet来扩展 (2) 组件规范 (1)什么是组件 符合一定规范,实现部分功能的,并且需要部署到相应的容器里 才能运行的软件模块。

weixin_34847121的博客 307
上一篇: SQL Developer 设置sql窗口字体大小
下一篇: jdbc连接oracleConnection refused 彻底解决方案
百知_zmj
博客等级 码龄8年 590粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值