当前位置:网站首页>Servlet基础详细版
Servlet基础详细版
2022-08-04 10:05:00 【我爱布朗熊】
在了解Servlet之前,我们需要先了解一下Tomcat
一、了解Servlet
1.Servlet是JavaEE规范之一,规范就是接口
2.Servlet是JavaWeb三大组件之一(三大组件分别是:Servlet程序、Filter过滤器、Listener监听器)
3.Servlet是运行在服务器上的一个java小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。
二、手动实现Servlet程序
1. 创建工程

2.步骤及程序
①编写一个类去实现Servlet接口
②实现service方法处理请求,并响应数据
③到web.xml中去配置Servlet程序的访问地址
程序

package com.company.web_tomcat;
import javax.servlet.*;
import java.io.IOException;
public class HelloServlet2 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
/**
* service方法专门用来处理请求和响应的
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("hello servlet");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
<?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标签给Tomcat配置Servlet程序-->
<servlet>
<!-- 给Servlet程序起一个别名(一般是类名) -->
<servlet-name>HelloServlet2</servlet-name>
<!-- 是Servlet全类名 -->
<servlet-class>com.company.web_tomcat.HelloServlet2</servlet-class>
</servlet>
<!-- servlet-mapping标签给Servlet程序配置一个访问地址,如果不加这个标签的话,上面标签servlet-name便会报错-->
<servlet-mapping>
<!-- 此标签的作用是告诉服务器是告诉服务器,我当前配置的地址是给哪个Servlet程序使用 -->
<servlet-name>HelloServlet2</servlet-name>
<!-- 配置访问地址
/ 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径
/hello http://ip:port/工程路径/hello -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>下图中蓝色区域“Application context”就是工程路径(可以自行修改)

最终运行成功后,会弹出一个页面,如下图所示(下面访问的是工程路径结尾)

至于为什么会弹出上图,原因就是我们在index.jsp中编写的内容
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
<h1><%= "Hello World!" %></h1>
<br/>
<a href="hello-servlet">Hello Servlet</a>
</body>
</html>http://localhost:8080/web_Tomcat_war_exploded/ 我们在此路径后面添加hello会发生下图现象
即访问 http://localhost:8080/web_Tomcat_war_exploded/hello
控制台输出了“hello servlet” (此原因就是在上面web.xml中配置的,可在上面仔细阅读xml文件)

3.URL地址到Servlet程序的访问(怎么访问到的程序)
http://localhost:8080/web_Tomcat_war_exploded/hello
为什么我们敲上面这个地址,就可以访问到我们的HelloServlet2程序呢?

4.Servlet的生命周期
第一步:执行Servlet构造器方法
第二步:执行init初始化方法
第一二步是在第一次访问的时候创建Servlet程序会调用
第三步:执行service方法(每次访问都会执行)
第四步:执行destroy销毁方法(只有在web工程停止的时候才会执行)
package com.company.web_tomcat;
import javax.servlet.*;
import java.io.IOException;
public class HelloServlet2 implements Servlet {
public HelloServlet2() {
System.out.println("1 构造器方法");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("2 初始化方法");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
/**
* service方法专门用来处理请求和响应的
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("3 service方法");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("4 销毁方法");
}
}
执行web工程

如果将页面一直刷新的话,会不断的执行service方法

将程序停止

边栏推荐
猜你喜欢
![Cloud function to achieve automatic website check-in configuration details [Web function/Nodejs/cookie]](/img/56/2ad889a3a740d0a7624b25f6307616.png)
Cloud function to achieve automatic website check-in configuration details [Web function/Nodejs/cookie]

Multimedia and Internet of Things technology make the version "live" 129 vinyl records "Centennial Voice"

使用ClickHouse分析COS的清单和访问日志

KubeDNS 和 CoreDNS

八、MFC对话框

IDEA启动热部署

leetcode二叉树系列(一)

Win11如何隐藏输入法悬浮窗?
![Detailed Explanation of Addresses Delivered by DHCP on Routing/Layer 3 Switches [Huawei eNSP]](/img/9c/b4ebe608cf639b8348adc1f1cc71c8.png)
Detailed Explanation of Addresses Delivered by DHCP on Routing/Layer 3 Switches [Huawei eNSP]

字符串相关题目
随机推荐
转转测试环境的标签域名实践
高级转录组分析和R数据可视化火热报名中(2022.10)
请问同一个oracle cdc表,如果flink job重新提交,是会全量读取一遍源数据还是增量呢?
无代码平台描述文字入门教程
黑马瑞吉外卖之员工账号的禁用和启用以及编辑修改
Detailed explanation of telnet remote login aaa mode [Huawei eNSP]
Multimedia and Internet of Things technology make the version "live" 129 vinyl records "Centennial Voice"
HCIP 交换实验
LeetCode简单题之最好的扑克手牌
rk3399-339 usb设备复合 总体流程
双指针方法
ps抠图怎么抠出来,自学ps软件photoshop2022,ps怎么抠出想要的部分-笔记记录
HTB-Sense
GBsae 8 c database using an error, how to do?
Mobile open source low code tools beeware and kivy
移动端 开源低代码工具 beeware 和 kivy
数据万象内容审核 — 共建安全互联网,专项开展“清朗”直播整治行动
渗透——信息收集
用匿名函数定义函数_c语言最先执行的函数是
leetcode经典例题——56.合并区间
https://blog.csdn.net/weixin_51351637/article/details/126110360?spm=1001.2014.3001.5502