- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
JavaWeb技术主要包括服务器技术(后端),如Tomcat,Servlet,JSP等待,以及客户端技术(前端)如HTML,CSS,JavaScript等等 。
Web服务器主要负责处理客户端发出的HTTP请求,并做出相应回应 。
服务器软件是部署在服务器中的程序,主要有以下几种,我们主要学习Tomcat的使用 。
Tomcat是一个免费开源的Java Servlet(Server Applet,服务程序)容器,主要用于部署和运行基于Java的Web应用程序,是由Apache基金组织成立,属于轻量级服务器. 。
Servlet
,并提供Socket
与Request
和Response
相关的转化;Container
是Tomcat
处理Servlet
的核心部件,其包括Engine(引擎),Host(主机),Context(上下文),Wrapper(包装器)
Tomcat中只有一个Server; 一个Server中可以包含多个Service; 一个Service只能包含一个Container 但可以包含多个Connector 因为一个服务可以有多个连接;示意图如下
多个Connector和一个Container就可以构成一个Sevrice,有了Service就可以对外提供,但还需一个运行环境,Server提供了一个运行环境,其关系可以在Tomcat的conf目录下的sever.xml配置文件中查看 。
由上诉内容可知,一个请求发送给Tomcat时,会经过Service,然后转交到我们的Connector 。
Connector
用于接收请求并将请求封装成Request
和Response
来具体处理,Request
和Response
封装完之后再交由Container
进行处理,Container
处理完请求之后再返回给Connector
,最后Connector
通过Socket
将处理的结果放回给客户端Java Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上数据库和应用程序的中间层,其本质上是用java语言编写的一个接口 。
下图展示了Servlet在Web应用程序中的位置
*Servlet的生命周期可以理解为从创建到被销毁的过程* 。
init()
方法service()
方法来处理客户端请求destroy()
方法现在我们开始详细讲解Servlet的生命周期方法 。
init()方法被设计成只能调用一次.它在第一次创建Servlet时被调用,在后续每次用户请求时不再调用.因此其是用于一次性初始 。
Servlet
创建于用户第一次调用对应于该Servlet
的URL时,但也可以指定Servlet
在服务器第一次启动时被加载Servlet
时,就会创建一个Servlet
实例,每一个用户请求都会产生一个新的线程.init()
方法只要用途是简单第创建或加载一些数据,这些数据被用户Servlet的整个周期init()方法的定义如下
public void init(ServletConfig servletConfig) throws ServletException {
//初始化代码
}
service()方法是执行实际任务的主要方法. 。
(GET,POST,PUT,DELETE)
并在适当时候调用doGet.doPost.doPut.doDelete
等方法下面是其方法代码 。
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
}
service()方法由容器调用,service方法在适当的时候调用doGet.doPost.doPut.doDelete ,因此你不用对service()方法进行任何操作,你只需根据用户不同请求类型来重写doGet()或doPost()方法即可 。
METHOD
的HTML
表单,它由doGet()方法进行处理public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Servlet 代码
}
METHDO
为POST
的HTML
表单,它由doPost()
方法处理public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Servlet 代码
}
destory()
方法和init()
方法一样也只能调用一次,在Servlet生命周期结束时被调用destroy()
方法之后,servlet
对象就被标记为垃圾回收destory()方法定义如下
public void destroy() {
// 终止化代码...
}
<web-app> :web.xml的根元素,用于声明XML的版本.编码格式以及Web应用的模式文件(XSD)的位置 。
<servlet>和<servlet-mapping> 。
<servlet> 用于定义一个Servlet的类信息,包括它的名称和实现类 。
<servlet-name>
:设置Servlet
实例的名字<servlet-class>
:配置类的路径,创建之前要确保有相对应的类<servlet-mapping> :用于指定一个或多个URL模式于前面定义的Servlet之间的映射 。
<servlet-name>
:用于绑定servlet
标签名字需和<servlet>
标签下的<servlet-name>
一致<url-patter>
:配置请求路径,客户端按该路径请求,可触发对应的Servlet
实例中的servlet
方法<load-on-startup> :第一次访问时创建Servlet对象,将中间的值设为负数 。
<load-on-startup> :服务器启动后创建,将中间值设为大于大于0的数 。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>servlet01</servlet-name>
<servlet-class>com.mashang.web.MyServlet01</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>servlet01</servlet-name>
<url-pattern>/a</url-pattern>
</servlet-mapping>
</web-app>
使用注解可以避免在web.xml 文件中进行显性配置,从而减少配置文件的复杂性和提高开发效率 。
value
或urlPatterns
:指定一个或多个URL模式,用于匹配HTTP请求并将其分发给Servletname
:为Servlet
配置一个名称loadOnStartup
:指定Servlet
在服务器启动时是否加载以及加载顺序asyncSupported
:指示Servlet是否支持异步处理initParams
:初始化参数列表urlPatterns
配置方法:配置多种属性时要写上其属性名 。
@WebServlet({"/demo1","/demo2",...})//配置多个请求路径对应一个Servlet
@WebServlet("/user/demo1")//配置多级路径
@WebServlet("/user/*")//匹配以user开头形式的请求
@WebServlet("/*")//匹配所有的请求
@WebServlet("/*.do")//匹配do结尾的请求
HttpServlet 是Servlet的一个实现类,是一个抽象类.其在源有的Servlet 接口上添加了一些关于Http协议的处理方法,其功能比Servlet功能强大,在实际开发中,实现接口服务通常会继承这个类,而避免直接继承Servlet类 。
GET请求是一种HTTP方法,用于从服务器请求资源.当客户端(通常是指浏览器),向服务器发起请求时,它是在请求特定的资源 。
?
号分隔URL和参数&
分隔https://example.com/resource?param1=value1¶m2=value2
和GET请求一致的是POST请求也是一个HTTP方法,用于向服务器发送数据.当客户端(浏览器)使用POST方法向服务器发送请求时,它是在提交数据交给服务器进行处理 。
POST的请求体 。
安全性 。
POST限制 。
POST一般使用场景 。
doGet()方法是HttpServlet 类中的一个方法 。
doGet()
方法是专门用于处理HTTP GET请求的方法doPost()方法是HttpServlet类中的一个方法 。
doPost()
方法是专门处理HTTP POST请求的方法@WebServlet("/login")
public class MyHttpServlet01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("执行GET请求业务逻辑");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("执行POST请求业务逻辑");
}
}
MyHttpServlet01类是HttpServlet 的继承类,重写了其中的doGet()和doPost()方法,我们在Postman软件可以分别去测试其GET请求和POST请求 。
最后此篇关于JavaWeb中的Tomcat,Servlet详解的文章就讲到这里了,如果你想了解更多关于JavaWeb中的Tomcat,Servlet详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
全称“Java Virtual Machine statistics monitoring tool”(statistics 统计;monitoring 监控;tool 工具) 用于监控虚拟机的各种运
主要是讲下Mongodb的索引的查看、创建、删除、类型说明,还有就是Explain执行计划的解释说明。 可以转载,但请注明出处。  
1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发。 2>循环服务器和并发服务器
详解 linux中的关机和重启命令 一 shutdown命令 shutdown [选项] 时间 选项: ?
首先,将json串转为一个JObject对象: ? 1
matplotlib官网 matplotlib库默认英文字体 添加黑体(‘SimHei')为绘图字体 代码: plt.rcParams['font.sans-serif']=['SimHei'
在并发编程中,synchronized关键字是常出现的角色。之前我们都称呼synchronized关键字为重量锁,但是在jdk1.6中对synchronized进行了优化,引入了偏向锁、轻量锁。本篇
一般我们的项目中会使用1到2个数据库连接配置,同程艺龙的数据库连接配置被收拢到统一的配置中心,由DBA统一配置和维护,业务方通过某个字符串配置拿到的是Connection对象。  
实例如下: ? 1
1. MemoryCahe NetCore中的缓存和System.Runtime.Caching很相似,但是在功能上做了增强,缓存的key支持object类型;提供了泛型支持;可以读缓存和单个缓存
argument是javascript中函数的一个特殊参数,例如下文,利用argument访问函数参数,判断函数是否执行 复制代码 代码如下: <script
一不小心装了一个Redis服务,开了一个全网的默认端口,一开始以为这台服务器没有公网ip,结果发现之后悔之莫及啊 某天发现cpu load高的出奇,发现一个minerd进程 占了大量cpu,googl
今天写这个是为了 提醒自己 编程过程 不仅要有逻辑 思想 还有要规范 代码 这样可读性 1、PHP 编程规范与编码习惯最主要的有以下几点: 1 文件说明 2 funct
摘要:虚拟机安装时一般都采用最小化安装,默认没有lspci工具。一台测试虚拟网卡性能的虚拟机,需要lspci工具来查看网卡的类型。本文描述了在一个虚拟机中安装lspci工具的具体步骤。 由于要测试
1、修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统
目录 算术运算符 基本四则运算符 增量赋值运算符 自增/自减运算符 关系运算符 逻
如下所示: ? 1
MapperScannerConfigurer之sqlSessionFactory注入方式讲解 首先,Mybatis中的有一段配置非常方便,省去我们去写DaoImpl(Dao层实现类)的时间,这个
Linux的网络虚拟化是LXC项目中的一个子项目,LXC包括文件系统虚拟化,进程空间虚拟化,用户虚拟化,网络虚拟化,等等,这里使用LXC的网络虚拟化来模拟多个网络环境。 本文从基本的网络设备讲
? 1
我是一名优秀的程序员,十分优秀!