javaWeb项目之Servlet学习笔记----小细节

IDEA2023(IntelliJ IDEA)配置JavaWeb项目并运行Servlet 选中的部分就是到时候"发布"到Tomcat文件夹下的Webapps文件夹的东西, 这个文件中的项目都必须拥有一个"WEB-INF"文件夹, 并且该文件夹下必须有“lilb"文件夹: 用于存放jar包(如JDBC用的mysqljar包, 到时候就放这”"classes"文件夹: 这个放.class文件, 我们在src下创建的.java文件, 到时候IDE会自己帮我们编译成.class放到这里"web.xml"文件夹: 用于映射类名等相关配置文件; 阅读详情

细节一:

在web.xml中可以对同一个Servlet配置多个对外访问路径,并如果在web.xml中配置的信息服务器会自动加载部署,而如果是在Servlet中进行程序代码的修改,则每次都要重新部署。

  首先,在使用MyEclipse创建Servlet后,会根据所创建的Servlet进行到web.xml文件的映射,如下图所示:

  

经过这个映射之后,在web.xml文件中就自动生成了这个Servlet的配置信息:

  

  当然,我们可以在web.xml文件中把这个Servlet继续添加一条对外访问路径,使得这个Servlet可以从不同路径进行访问,现在我们在服务器开启的情况下,为这个Servlet添加一个新的对外访问路径好了:

  

红框部分是新添加的,这时候服务器在Console窗口会自动提示已经重新部署,是的,只要在web.xml中修改的都无需关闭服务器就可以被服务器重新更新加载部署:

  

那么我们试试新的访问地址:

  

可以访问!!

 

  细节二:

在web.xml中为Servlet配置对外访问路径的<url-pattern>可以使用“*”作为通配符,但是这种只能有两种格式:

  一种格式是整个内容只能有“*.扩展名”,如<url-pattern>*.html<url-pattern>,而如果写成这样<url-pattern>abc/*.html<url-pattern>就是错误的。尤其是<url-pattern>/*.html<url-pattern>也是错误的,不能有“/”,一定要注意。例:

  

在浏览器可以在通配符位置随便输入:

  

这样造成了一种伪静态的现象,我们以为是访问一个静态的页面,其实却是一个动态web资源。

  另一种格式是以正斜线“/”开头,加自定义路径,以“/*”结尾,如<url-pattern>/abc/*<url-pattern>。这时候连扩展名都任意了。例:

  

在浏览器的地址栏内可以在通配符位置随便输入,扩展名都不需要:

  

  

 

  细节三:

由细节二导出的多个Servlet资源的映射路径如果使用了通配符,就可能发生冲突,那么这时候服务器将会以哪个Servlet资源作为响应呢?我们看一下下面的问题,就能明白了:

  

 

  细节四:

在Servlet的整个生命周期内,Servlet的init()方法只会被调用一次。而对于Servlet的每次访问请求,Servlet都会调用service()方法一次。并对于每次的请求访问,Servlet都会创建一个新的HttpServletRequest请求对象和新的HttpServletResponse响应对象。当然在每次请求访问完成之后,这些请求对象和响应对象会立马被销毁,等待下次请求再重新创建,这样就能给服务器减小压力(非并发情况下)。

 

  细节五:

之前谈到的Servlet在服务器部署后,都是只在第一次对该Servlet访问时才由服务器创建Servlet的实例对象,而如果在web.xml中在某个<servlet>标签下配置<load-on-startup>标签,则该Servlet会在服务器启动后就创建实例对象,并执行Servlet的初始化init()方法。<load-on-startup>的内容为一个正整数值。该值越小,代表在服务器启动后优先创建Servlet对象并执行初始化方法。

 

  细节六:

如果某个Servlet的映射路径仅仅为一个正斜线“/”,那么这个Servlet就称为当前web应用的默认Servlet。凡是在web.xml文件中找不到匹配的<servlet-mapping>标签的URL,它们的访问请求都是交个默认Servlet来处理,也就是说默认Servlet用于处理所有其他Servlet都不处理的访问请求。

  例如我现在创建两个Servlet,其中一个有自定义的对外映射路径,而另一个设置成了默认Servlet:

  

要想访问SecondServlet就必须按照其对应的路径在浏览器地址栏中键入:

  

而对于默认Servlet,则是在web应用名后随便输:

  

(如果不输则会显示的是已有的首页index.jsp,为什么呢,请看下面细节六)

 

  细节六(重要):如果我们在自己开发的Servlet中没有配置默认Servlet,而是直接访问我们web工程下的一个静态web资源的话(如果有),那么我们将能从浏览器中看到这个web资源,记住:请求任何web资源都是以某个Servlet来响应回传数据的,那么既然我们没有配置默认Servlet的话,为什么能访问到这个资源呢?换句话说,是哪个Servlet将我们需要的资源响应给我们看的?答案就是Tomcat服务器的默认Servlet!!!Tomcat服务器的默认Servlet在Tomcat的【conf】目录下的web.xml文件中设置了映射路径:

  

  从Tomcat的web.xml文件中可以看出,其默认Servlet在服务器启动就创建实例对象,并且是最早创建的,对外路径已经设置了默认格式。而这个默认Servlet会管理每个自定义创建的Servlet工程,如果我们没有在自己的web工程中创建默认Servlet,那么要访问自己web工程中的某个资源时,Tomcat的默认Servlet会帮我们将该资源封装成响应对象传回客户端。

  例如,我在我的web工程下创建一个1.html页面:

  

而我去浏览器访问这个页面:

   

  对于这个URL,Tomcat服务器首先去配对我的Servlet是否有对应的映射路径,如果没有,并且如果我没有在自己的web工程中设置默认Servlet,那么Tomcat的默认Servlet就在我的web应用下搜寻HTTP请求的资源,找到并封装成响应对象返回给客户端。如果Tomcat的默认Servlet找不着所需的资源,那它依然会响应客户端,只是客户端看到的是一些提示找不着该资源,如404提示。另外,根据这个过程,我们在开发自己的Servlet时,建议不要将自己的某个Servlet映射成默认Servlet为好。

  接下来,讨论一个首页的问题。除了我们访问web应用中某个特定资源(在浏览器地址上最后键入一个文件名),还会是在键入web应用名之后就发送HTTP请求了,这时候我们看到的也是一个页面,通常称为“首页”,而这个首页,也是由默认Servlet来响应的。

  例如我使用MyEclipse创建一个web应用时就会默认帮我创建一个“index.jsp”文件:

  

而我在该web应用中没有创建任何Servlet,或者即使创建Servlet也映射到某个特定的对外URL上,那么我在浏览器输入主机地址+web应用名依然能看到这个index.jsp:

  

由前面所说,这个页面肯定是由Tomcat服务器的默认Servlet传回给客户端的,那么Tomcat服务器为什么是传回这个资源呢,而不是别的资源呢?答案还是在web.xml文件中,还记得之前《Tomcat详细用法学习(三)》中定义的首页设置吗,对,就是这个方法,这个方法由默认Servlet来管理,我们再来回顾下在Tomcat的web.xml文件中的<welcome-file-list>标签:

  

  如果浏览器的输入地址只输入了web应用名,那么Tomcat的默认Servlet传送这个web应用下的index.html文件,否则传送index.htm文件,再否则传送index.jsp,如果三个都没有那么只能返回404了。

  如果我把这段代码注释掉或删掉,再想直接访问web应用名就跟我把index.jsp文件删除一样,Tomcat的默认Servlet找不到资源,返回404提示(在MyEclipse中需要重启服务器):

  

  

所以如果我们想为自己的web应用弄出个漂亮首页,只需要在index.jsp中开发就行了,或者另外创建一个index.html文件开发,这个文件会比index.jsp更优先被访问。

 

  细节七:因为我们的开发Servlet都要继承Servlet接口的某个实现类,那么我们在编写doGet方法或者doPost方法的时候很可能调用了某些会抛出异常的方法,那么我们对这些异常只能捕获处理,而不能抛出,这是因为子类在覆盖父类的方法时,不能抛出比父类更多的异常。

JavaWeb——新建项目与新建servlet 一、引言 配置好eclipse环境,接下来开始搞项目了,搞起== 二、新建项目           1.点击File——new,选择动态网页         2.填写项目名称,后面的只要前边配置好都会自动填充;         3.下一步,下一步,这个地方要勾选,注意下,生成配置文件;         4.这是新建后的项目结构,其中3 阅读详情

相关推荐

基于JSP+servlet+MYSQL的Javaweb项目

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、项目介绍二、样品实例1.市场活动界面2.线索界面三、代码1.pom文件2.web.xml文件3.市场活动1.Controller2.Service实现类3.dao.xml4.线索1.Controller2.Service3.dao5.Tran1.jsp文件6.listener总结 前言 CRM项目是寒假在家跟着视频做的一个项目,这个项目可以巩固之前Java基础以及javaweb的一些知识.途中也遇到了各种各样的问题,可以提

qq_53202786的博客 6306

Servlet的学习(四)

  在本篇的Servlet的学习中,主要来学习由使用MyEclipse来开发Servlet的一些小细节。   细节一:在web.xml中可以对同一个Servlet配置多个对外访问路径,并如果在web.xml中配置的信息服务器会自动加载部署,而如果是在Servlet中进行程序代码的修改,则每次都要重新部署。   首先,在使用MyEclipse创建Servlet后,会根据所创建的Servlet进行...

weixin_30780221的博客 155

IDEA项目实践——JavaWeb简介以及Servlet编程实战

本文主要讲解Java Web的相关内容以及servlet编程1xx 表示临时响应并需要请求者继续执行操作2xx 成功,操作被成功接收并处理3xx 表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向4xx 客户端错误,请求包含语法错误或无法完成请求5xx 这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错(1)XML概述(2)XML语法(3)DTD约束。

张小鱼的博客 2444

第3章Servlet基础

第3章Servlet基础 习题 一、填空题 1.Servlet容器启动时,会为每个Web应用创建一个唯一的【 ServletContext 】对象代表当前Web应用。 2.在配置整个Web应用的初始化参数时,可在web.xml中配置【 】元素来实现。 3.当Tomcat初始化一个Servlet时,会将该Servlet的配置信息封装到【 ServletConfig 】对象中。 4.在web.xml文件中,一个元素用于映射一个Servlet的对外访问路径,该路径也称为【 虚拟路径 】。

桃桃的桃子的博客 5242

JavaWeb——Servlet项目(一)

服务端与客户端之间进行表单提交 1.什么是Servlet?        Servlet 是用Java编写的服务器端程序,工作在服务端的一个API接口,通过该接口可以接收用户发送的HTTP请求,并进行处理,然后响应给客户端。 2.使用eclipse创建一个Servlet (1) 创建一个动态Web项目,命名为Servlet_test1,创建方法见笔记Java...

lucky_shi的博客 1060

FLoRA: 基于异构低秩适应的联邦微调大语言模型

大语言模型(LLMs)的快速发展推动了人工智能的进步,预训练的LLMs可以通过微调适应各种下游任务。联邦学习(FL)通过利用客户端的本地数据进行原位计算,进一步增强了隐私保护的微调,消除了数据移动的需求。然而,考虑到LLMs的巨大参数量,微调LLMs对于资源受限且异构的FL客户端来说是一个挑战。之前的方法采用了低秩适应(LoRA)进行高效的联邦微调,但在LoRA适配器上使用了传统的FL聚合策略。这些方法导致了数学上不准确的聚合噪声,降低了微调效果,并且未能解决异构LoRA的问题。

tiger00O的博客 2065

小笔记2(Servlet)

默认Servlet 如果某个Servlet的映射路径仅仅是一个正斜线(/),那么这个Servlet就是当前Web应用的默认Servlet,Servlet服务器在接收到访问请求时,如果在web.xml文件中找不到匹配的<servlet-mapping>元素的URL,就会将访问请求交给默认Servlet处理,也就是说,默认Servlet用于处理其他Servlet都不处理的访问请求。 转载...

weixin_30699741的博客 216

Logisim实战:手把手教你设计硬布线版MIPS CPU(多周期/8指令/附电路图)

本文是一份详细的Logisim实战指南,手把手教你设计一个采用硬布线控制的多周期MIPS CPU。文章深入剖析了硬布线控制与微程序控制的核心理念差异,并逐步讲解了从定义执行状态、构建状态跳转逻辑到生成控制信号、集成测试的完整流程,最终实现一个支持8条指令、可运行简单程序的处理器模型。

g9h0i1的博客 592

关于servlet映射路径配置问题

<servlet> <servlet-name>Reg</servlet-name> <servlet-class>com.RegServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Reg</servl...

落尘的博客 1249

Android流畅度优化实战:从掉帧定位到布局与渲染调优

在移动应用开发中,性能优化是决定用户体验与留存率的关键环节,其中Android流畅度优化更是核心命题。用户感知的“卡顿”往往并非持续低帧率,而是由于掉帧率波动引发的偶发不流畅。本文从性能优化理论出发,系统讲解如何使用Systrace、CPU Profiler等工具定位掉帧瓶颈,深入分析布局层级过深、过度绘制、对象分配与GC压力等常见诱因。同时结合冷启动耗时、列表滚动掉帧、Bitmap加载等真实工程案例,阐述从应用层到系统层的分级优化策略,并给出低端机适配、异步化改造及线上监控体系搭建的实践方案。内容覆盖布局

weixin_29185493的博客 200

华南理工大学电子与信息学院23年预推免复试面试经验贴

华南理工大学电子与信息学院23年预推免复试面试经验贴

Scut_Ty的博客 3297

在一个web工程中加载多个servlet

当在web工程加载两个及多个servlet时,配置servlet时,不需要写多个web.xml文件,就在这一个web.xml中写出所有的加载的信息,如: <servlet> <servlet-name>HelloWorldServlet</servlet-name> <servlet-class>com.jsp...

weixin_33774883的博客 861

华为OD机试双机位C卷-开心消消乐(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【开心消消乐】,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为od机试 - 开心消消乐。

qq_45776114的博客 1512

JavaWeb-JSP+Servlet+Mysql实现JavaWeb基础项目

本篇博文是一个比较基础的JavaWeb项目,使用Servlet和JSP技术实现用户的登录,对单表的增删改查功能,适合初学者理解Web知识,掌握项目执行流程。

weixin_44606952的博客 4826

SAP SEGW 事物码里的 Function Import

开放数据协议(OData)包括标准的 CRUD (创建、检索、更新和删除)操作,这些操作映射到 HTTP 方法的 POST、GET、PUT/MERGE 和 Delete 几类。此外,OData还支持进一步的服务操作:,这些操作可以由HTTP方法GET或POST调用,用于处理不能映射到标准 CRUD 操作的任何内容。通过在数据模型中创建 ,可以在 service Builder 中实现此类额外的服务操作。例如,您可以为以下自定义操作创建函数导入:Work Item confirmation检查航班的可用性虽然

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 995

Qt之QMqtt 发送图片数据

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议;MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛;在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT);其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用;

Ilson_的博客 1437

Day29_10 JavaWeb之Servlet及Servlet细节

解析:1、Servlet是JavaWeb的三大组件之一,它属于动态资源。2、Servlet的,服务器会把接收到的请求交给Servlet来处理;:例如客户端发出的登录请求、注册请求、查询请求等,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现Javax.servlet.Servlet接口。:JavaWeb中的三个剑客(组件):Servlet:接收用户请求,处理请求,响应结果Filter:(过滤器)拦截请求。

weixin_43717536的博客 798

L型探测器几何畸变矫正

定位像素空间位置 -> 计算水平面投影点 -> 统一物理分辨率 -> 重采样生成新图。

如果想成为中心,那么就到中心去吧。 241

IDEA的javaweb项目中的servlet的配置大全

IDEA的javaweb项目中的servlet的配置大全 写在前面你需要准备好的东西: ①IDEA版本不限,我用的2020. ②JDK 1.8(小科普JDK1.8其实就是JDK8) ③tomcat8.5.78(不要用最新的tomcat10.及以上版本,10以上的版本对于本文的技术不适配) ④maven 3.6.3(别问我为什么这个版本,问就是好用) 当你准备好以上的所有东西,我们开始! 创建maven项目,可以选择用骨架,但是我没有用 直接next,这里没有用骨架,然后命名,坐标就用默认 项目创建好之

qq_40480598的博客 2461

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

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JavaWeb——怎样编写一个Servlet程序

文章目录JavaWeb——编写一个Servlet程序1.Servlet简介2.HelloServlrt1.建一个普通的Maven项目2.建一个子项目3.Maven环境优化4.编写一个Servlrt程序编写Servlet映射配置Tomcat启动Tomcat服务器测试 JavaWeb——编写一个Servlet程序 1.Servlet简介 Servlet是Sun公司开发的用于交互式地浏览和生成数据,生成动态Web的技术。 狭义的Servlet是指Java语言实现的一个接口 但一般情况下,我们把实现了S

万里顾一程的博客 4746

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

02、javaweb--使用IDEA+Maven创建Servlet项目

使用servletContext共享数据:当前应用的所有servlet可以拿到保存着servletcontext中的数据;由于远程仓库获取文件较多,网速较慢,可以添加一个参数,只获取原型中的内部核心文件,提升加载速度;2.选择maven,勾选“Create from archetype",表明选择从远程仓库中的获取原型模板进行创建;添加新的项目子模块:右击项目的“new -> module",选择添加模板webapp并进行配置;重置工程目录:删除src文件夹,因为会将需求的新建项目作为工程主模块;

weixin_50811484的博客 2715

visio安装包

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

【JavaWeb开发项目入门】基于servlet的在线音乐服务器

此项目是最基础的JavaWeb开发项目,基于servlet+maven+css+JavaScript+html+Mysql实现,对于刚接触JavaWeb开发的小白来说比较友好,如果你对于Mysql和servlet非常熟悉,那么对于你来说应该是算比较容易。后续我会在此专栏更新基于spring的JavaWeb项目,希望读者可以关注我一起学习Web开发。

耀的博客 3917

【JavaWeb】JavaWeb三大组件之Servlet

因为现在我们的请求都是基于HTTP协议的,所以我们应该专门为HTTP请求写一个Servlet做为通用父类由上图我们可以看出,以后再写Servlet可以直接继承HttpServletServlet是一个标准GenericServlet是Servlet接口的子类HttpServlet是GenericServlet的子类,一个专门处理HTTP请求的ServletServletContext是一个全局的储存信息的空间。服务器开始,其就存在,服务器关闭,其才释放。一个用户可有多个request;

2302_78914800的博客 1333

javaWeb关于Servlet的学习笔记

servlet是JavaWeb的三大组件,是写在JavaWeb服务端的代码,它的作用是处理客户端发送过来的请求、并将请求优servlet的来处理,就例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口。

m0_74096456的博客 858

尚硅谷全新JavaWeb教程,企业主流javaweb技术栈【学习笔记】二

1.创建SAXReader对象2.解析XML获取Document对象:需要传入要解析的XML文件的字节输入流3.获取文档的根标签4.获取标签的子标签//获取所有子标签//获取指定标签名的子标签ListsonElementList = rootElement.elements("标签名");

qq_43668996的博客 3528

详细地讲解使用MyEclipse创建一个简单的html与servlet交互的JavaWeb项目

手把手教学MyEclipse创建第一个JavaWeb项目

m0_63252914的博客 3857
上一篇: javaWeb项目之Servlet学习笔记----初识Servlet
下一篇: javaWeb项目之Servlet学习笔记----ServletContext类
iamlinuxasd
博客等级 码龄10年 4粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值