servlet中doget和dopost的区别_Servlet学习

一.HTTP协议

浏览器 ----------------------------------------->服务器

请求 http协议(包含:1.请求行2.请求头3.空行4.请求实体)

url

浏览器<-------------------------------------------服务器

响应html+css+js+data数据

特点:

1.无连接:每次只处理一个请求, 服务器处理完客户的请求后把结果响应给客户端,收到客户端的应答后就断开连接。
2.无状态:对于事务处理没有记忆能力,如果后面的处理需要前面的信息就需要重新传。

1.交互流程

步骤1.

客户端与服务器建立通道

步骤2.

浏览器发起请求遵循http协议

步骤3.

服务器收到请求后进行处理,然后遵循http协议响应浏览器

步骤4.

关闭客户端和服务端的连接(http1.1后不会立即关闭(可持续连接))

2.http请求格式

结构

a4af8a77e64703c931b8ae8d4da5420a.png

1).请求行

2).请求头

3).空行

4).请求实体

3.http请求方式

1).Get:方式请求:没有请求实体请求数据拼接以?号的形式拼接在地址栏ur后面,不适合大量数据的传输,不安全,相对在效率上比较快。

2).Post:适用于数据量大,安全要求比较高,效率比较慢

4.http响应

  1. 状态行
  2. 消息报头
  3. 空行
  4. 响应正文

43e677a629e99e36342297aab687879e.png

二.服务器介绍与安装

1.介绍

  1. 代码:是业务处理的规则,先声明后执行
  2. 服务器:可以根据浏览器的请求自动调用并执行对应的业务逻辑处理代码的应用程序(狭义),广 义来说,只转载了服务器应用程序的主机电脑也可以称之为服务器主机。
  3. 服务器特点:其实就代码编写的应用程序

可以解析浏览器发起的请求信息

可以根据请求信息调用并执行对应的代码处理请求

三.servlet概念与使用流程

1.概念:

本质是一个Java的类

狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者。Servlet 运行于支持 Java 的应用服务器中。从原理上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器

2.servlet使用流程

  1. 创建包(com.bjsxt.servlet)

a902e98117feef3ec7e8d3273b8c7a1d.png
  1. 在包中创建一个实现了HttpServlet的java类

HttpServletRequest---------->请求

HttpServletResponse-------->响应

7091fcce6063757348de15c4af7f4d11.png
  1. 覆写servlet方法,在方法中声明请求处理规则

246caff8da857a237831f09ffe4a1805.png
  1. 在web.xml文件中配置servlet

186efd6eeab46cfa37e6b16c910dbb3e.png
  1. 将web项目中webroot下的所有内容复制到服务器的webapps

目录中的新建的文件夹中(每一个项目都需要创建新的文件夹)

85390c49e2f0fd762aa3704d12e1942e.png

6.启动服务器

7.浏览器输入localhost:8080/project/s

3.localhost:8080/project/s

localhost 服务器ip

8080 端口号

localhost:8080 根据ip和端口号可以找到对应服务器同时服务器

会去webapps下查找处理此次请求的代码

project/s: url数据,服务器根据url找到对应的servlet执行;去项目

中的web.xml文件中去匹配

四.配置servlet

配置方式一:

<url-pattern>/别名</url-pattern>

注意:"/"是必须声明的,别名不能是中文

此配置方式可以配置多个

配置方式二:模糊查询

<url-pattern>*.后缀名</url-pattern>

注意:

*表示任意个数的任意字符

所有以指定的后缀名结尾的请求都会调用该servlet进行处理

作用:

进行模块化开发的划分

配置方式三:拦截所有请求

<url-pattern>/*</url-pattern>

注意:

会拦截所有类型请求,包括静态资源的所有请求(css.js.图片等)和jsp请求

配置方式四:

<url-pattern>/one/*</url-pattern>

注意:

会拦截处理所有Servlet的别名以one开头的路径的请求

注意:

1.一个Servlet可以配置多个url-pattern

不同的Servlet不允许配置相同的url-pattern。如果配置了在服务器启动的时候就会报错。

2.服务器启动的时候就会将部署的项目中的web.xml文件加载进内存。

为什么Servlet只会创建一个

因为servlet是单例的,在并发访问的情况下会开启子线程调用其service方法,资源是共享的,如果创建多个servlet会占用大量的内存。

五.servlet生命周期

⦁ Servlet的生命周期

⦁ 请求说出Servlet的生命周期

从第一次调用到服务器结束

⦁ init方法,service方法,destory方法的调用时机

1. init方法:servlet被初始化创建的时候调用

2. service方法:处理请求的时候

3. destory方法:servlet被销毁的时候

当服务器关闭的时候销毁servlet,触发destory方法的执行

⦁ doGet和doPost和Service方法的区别

六.请简述doGet、doPost和service方法的区别

1. doGet (HttpServletRequest req, HttpServletResponse resp)

特点:处理get方式的请求

2. doPost (HttpServletRequest req, HttpServletResponse resp)

特点:处理post方式的请求

3. service(HttpServletRequest req, HttpServletResponse resp)

特点:无论是什么类型的请求方式,服务器都会优先执行service方法。

⦁ 什么情况下会出现405异常

servlet中没有声明service方法,会根据请求方式调用对应的方法进行请 求处理,如果在servlet中没有声明对应的请求处理方法,则会报405错误

七.doGet和doPost和service方法调用的本质

tomcat服务器其实只认识service方法,如果我们自己声明的servlet中没有覆写service方法,则会执行HttpServlet中的service方法,而HttpServlet中的service方法会根据请求方法调用对应的doXX( )方法执行请求处理。

八.Servlet常见异常总结

⦁ 请说明404的原因。

1. 资源未找到

2. 原因一:在请求地址中的servlet的别名书写错误

3. 原因二:虚拟项目名称拼写错误

⦁ 请说明500错误的原因

1. 错误一:Java.lang.ClassNotFoundException:

com. bjsxt. servlet . ServletMothod

解决:在web. xml中校验servlet类的全限定路径是否拼写错误。

2. 错误二:因为service方法体的代码执行错误导致

解决:根据错误提示对service方法体中的代码进行错误更改。

⦁ 请求说明405的原因

⦁ 请求方式不支持

原因:请求方式和servlet中的方法不匹配所造成的。

解决:

尽量使用service 方法迸行清求迯理,并且不要再service 方法中凋用父类中的service

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

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

相关文章

java xml 节点路径,SelectSingleNode使用XPath为已知良好的xml节点路径返回null

回答(9)2 years ago我强烈怀疑问题与名称空间有关 . 尝试摆脱名称空间&#xff0c;你会没事的 - 但显然这对你的实际情况没有帮助&#xff0c;我认为这个文件是固定的 .我不记得如何在XPath表达式中指定命名空间&#xff0c;但我确信这是问题所在 .编辑&#xff1a;好的&#x…

hdfs 多租户_【技术干货】常见的HDFS面试问答精选

最常见的HDFS面试问答1. 什么是HDFS&#xff1f;答&#xff1a;HDFS代表Hadoop分布式文件系统&#xff0c;该系统将大型数据集存储在Hadoop中。它可以在商用硬件上运行&#xff0c;并且具有很高的容错能力。HDFS遵循主/从体系结构&#xff0c;其中许多计算机在集群上运行。群集…

python 根据类名 查找module_关于 Python 命令中的 m 参数

在命令行中使用 Python 时&#xff0c;它可以接收大约 20 个选项(option)&#xff0c;语法格式如下&#xff1a;python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]本文想要聊聊比较特殊的“-m”选项&#xff1a;关于它的典型用法、原理解析与发…

matlab安装程序无法启动jvm_JVM 执行 Java 程序时的内存区域划分

在学习 Java 虚拟机(后面简称&#xff1a; JVM )中的垃圾回收机制(GC)之前&#xff0c;先需要了解 在 JVM 中的 Java 程序(class 文件)加载到内存之后到底是怎么存的。在阅读了 JVM规范 和周志明的 《深入理解Java虚拟机(第2版)》 之后&#xff0c;总结一下JVM中的内存划分以及…

map循环遍历取值_Collection集合框架集和map

Collection集合框架集Java培训之Collection集合框架集MapMap概述Map与Collection并列存在。用于保存具有映射关系的数据:Key-ValueMap 中的 key 和 value 都可以是任何引用类型的数据Map 中的 key 不允许重复key 和 value 之间存在单向一对一关系&#xff0c;即通过指定的 key …

rserve php,使用Rserve远程执行R脚本

Rserve介绍Rserve是一个基于TCP/IP协议的&#xff0c;允许R语言与其他语言通信的C/S结构的程序&#xff0c;支持C/C,Java,PHP,Python,Ruby,Nodejs等。 Rserve提供远程连接&#xff0c;认证&#xff0c;文件传输等功能。我们可以设计R做为后台服务&#xff0c;处理统计建模&…

搜索引擎提交软件_搜索引擎优化的发展史及SEO前景展望

SEO 是随着搜索引擎的普及而出现&#xff0c;并伴随搜索引擎的发展而发展的。关于搜索引擎和搜索引擎优化SEO 最初是怎么诞生的有很多种说法。有一个非常有趣的事实是&#xff0c;最早的一批SEO 甚至可以追溯到Yahoo 出现之前&#xff0c;我们可以把Yahoo 的传世人David Filo 和…

mongodb模糊查询_MongoDB的CRUD基本操作

原创&#xff1a;牛津小马哥Python后端工程师小李哥。在上周的推文中&#xff0c;我们介绍了MongoDB的数据库和集合的操作&#xff0c;现在&#xff0c;让我们来继续学习mongodb的另一个操作&#xff1a;CRUDCRUD操作&#xff1a;创建、读取、更新、删除文档。创建操作&#xf…

设计一个程序实现两个任意长的整数的求和运算_自然数集,整数集,有理数集等都有字母表示,为什么无理数集没有...

在网上翻到一个非常有意思的问题&#xff1a;这个问题乍看起来无厘头&#xff0c;但实际上是个非常深刻的问题&#xff0c;涉及到抽象代数(abstract algebra)的一些基本概念&#xff0c;因此我打算写篇文章来详细阐述一下。人类的数学从数数开始&#xff0c;最早诞生的概念是自…

php strpo函数,php strpos函数有什么用

php strpos函数有什么用&#xff1f;定义和用法strpos() f函数查找字符串在另一字符串中第一次出现的位置(区分大小写)。注释&#xff1a;strpos() 函数是区分大小写的。注释&#xff1a;该函数是二进制安全的。相关函数&#xff1a;strrpos() - 查找字符串在另一字符串中最后一…

oracle 客户端_【数据库 常见术语1】 客户端,服务端

这个系列会介绍并回顾在学习和工作中常碰到的一些名词&#xff0c;以及它们的意思。客户端&#xff0c;服务端&#xff08;以Oracle数据库为例&#xff09;**************************************************************************************【我的理解】 打个比喻&…

多个线程访问统一对象的不同方法_分析| 你未必真的了解线程安全,别骗自己,来看下怎么实现线程安全...

世界那么大&#xff0c;谢谢你来看我&#xff01;&#xff01;关注我你就是个网络、电脑、手机小达人什么是进程&#xff1f;电脑中时会有很多单独运行的程序&#xff0c;每个程序有一个独立的进程&#xff0c;而进程之间是相互独立存在的。比如下图中的QQ、酷狗播放器、电脑管…

php设置mysql查询编码,php连接mysql时怎么设置编码方式

php连接mysql时怎么设置编码方式php连接mysql数据库时&#xff0c;也就是在mysql_connect()语句之后添加“mysql_query("set names utf8");”语句来设置编码方式。注意&#xff1a;是utf8&#xff0c;不是utf-8&#xff1b;网页字符集也最好选用utf-8。在PHP连接数据…

pandas to_csv参数详解_【Python基础】Pandas数据可视化原来也这么厉害

一、可视化概述在Python中&#xff0c;常见的数据可视化库有3个&#xff1a;matplotlib&#xff1a;最常用的库&#xff0c;可以算作可视化的必备技能库&#xff0c;比较底层&#xff0c;api多,学起来不太容易。seaborn&#xff1a;是建构于matplotlib基础上&#xff0c;能满足…

oracle数据库重建em,oracle 11g em重建报唯一约束错误解决方法

oracle 11g em重建报唯一约束错误解决方法更新时间&#xff1a;2012年11月27日 15:07:33 作者&#xff1a;今天在手工配置Oracle11g的EM时总是报如下错误,也没有找到解决办法&#xff0c;以下是我的解决过程,希望可以帮助你们今天在手工配置Oracle11g的EM时总是报如下错误&am…

爬虫 404 try_Python爬虫MOOC笔记

写在前面的小于碎碎念最近在学习Python爬虫内容&#xff0c;其实很多知识在网上搜索一下都能查到&#xff0c;但是作为自己的一种学习记录&#xff0c;也是回顾与复习呀。这种东西真的变化超级快&#xff0c;以前可以直接爬取的内容&#xff0c;现在很多网站都增加了反爬机制&a…

python调用c++_python高性能编程之Cython篇 第一章

第一节 cython的潜能•Cython是一种编程语言&#xff0c;它将Python与C和C 的静态类型系统相结合。•Cython是一个将Cython源代码转换为高效的C或C 源代码的编译器。然后可以将此源代码编译为Python扩展模块或独立可执行文件。Cython的强大功能来自它结合了Python和C的方式&…

oracle获取序列并赋值,Oracle中序列的使用

数据库设计的三大范式第一条就是独立的表结构中必须有唯一主键来标识表中数据.在以往微软的SQL Server(duo版本)平台上.手动编码实现表中主键.并设定为自增列是极其简单.编码如下:typeidintnotnullprimarykeyidentity(1,1),在Oracle 10G中关于序列(Sequence)的使用.(A)Sequence…

oracle序时账是什么,序时账和明细账区别是什么

序时账和明细账区别&#xff1a;一、定义不同:1、明细账也称明细分类账&#xff0c;是根据总账科目所属的明细科目设置的&#xff0c;,用于分类登记某一类经济业务事项&#xff0c;提供有关明细核算资料。2、而序时账了&#xff0c;也称日记账&#xff0c;是指按照经济业务发生…

ui li 菜单 点击添加下级_【Qt开发】实现系统托盘,托盘菜单,托盘消息

概述系统托盘就是在系统桌面底部特定的区域显示运行的程序。windows在任务栏状态区域&#xff0c;linux在布告栏区域。应用程序系统托盘功能&#xff0c;是比较普遍的功能&#xff0c;本篇将详细的介绍如何实现该功能。演示Demo实现功能&#xff1a;1.应用启动后&#xff0c;任…