servlet基础知识

目录

什么是servlet

概念/定义

广义:JAVA EE规范

狭义:Servlet接口

作用

实现动态页面

servlet容器

概念/是什么

管理和维护servlet对象的容器

作用

管理和维护servlet对象

如何配置和管理

配置:

1)@WebServlet()注解

2)web.xml文件

servlet生命周期

有哪些生命周期

1)init:实例化

2)service:工作

3)destroy:销毁

每个周期中可以执行哪些操作

1)init:生成servlet对象实例,初始化需要的资源

2)service:实现业务逻辑

3)destroy:关闭servlet,释放资源

创建和编写servlet

如何创建一个简单的servlet

java 复制代码
public class MyClass implements Servlet {}

servlet类的结构是什么样的

例如:Servlet --> GenericServlet --> HttpServlet

常用的servlet类如下:

说明:图片来源

问题:怎么知道什么时候用哪个类?

如何处理HTTP请求和响应

通过HttpServletRequest和HttpServletResponse对象

servlet映射和URL模式

什么是servlet映射

把一个请求指定给对应的Servlet

如何将servlet映射到特定的URL

通过@WebServlet或web.xml配置

如何使用URL模式匹配和处理不同的请求?

可以通过不同的匹配规则来控制,在servlet中有4个规则:精准匹配、目录匹配、扩展名匹配、任意匹配。

使用注解配置示例如下:

java 复制代码
//精准匹配
@WebServlet("/my/test")

//目录匹配
@WebServlet("/my/*")

//扩展名匹配
@WebServlet("/my/.txt")

//任意匹配1
@WebServlet("/*")
//任意匹配2,tomcat默认为这个
@WebServlet("/")

请求和响应对象

什么是HttpServletRequest和HttpServletResponse

HttpServletRequest:处理http请求的对象

HttpServletResponse:处理http响应的对象

如何从请求对象中获取请求参数和请求体

1)获取请求参数

java 复制代码
HttpServletRequest request  = 接收到的HttpServletRequest或ServletRequest;
request.getParamter("paramName");
request.getParamterValues("paramName");
request.getParamterNames();
request.getParameterMap();
//上面的paramName就是http请求中的各种参数名称

2)获取请求头

java 复制代码
HttpServletRequest request  = 接收到的HttpServletRequest或ServletRequest;
request.getHeader("headName");
request.getDateHeader("headName");
request.getHeaderNames("headName");
request.getIntHeader("headName");
//上面的headName就是http请求中的各种请求头名称

如何使用响应对象来生成http响应

使用PrintWriter或者ServletOutputStream把响应数据放到http响应中

初始化参数

什么是servlet初始化参数

在加载或启动servlet时,初始化一些用于servlet自身的参数,比如说关于数据库连接、日志配置等的参数。这些参数在整个生命周期中只执行一次,并在整个生命周期的任意一个周期都可以获取到。

如何在web.xml或servlet注解中初始化参数

1)在web.xml中配置

xml 复制代码
<servlet>
    <servlet-name> myServlet </servlet-name>
    <servlet-class> com.example.myServlet </servlet-name>
    <init-param> paramName1 <init-param>
    <ini-param> paramValue1 <init-param>
    <init-param> paramName2 <init-param>
    <ini-param> paramValue2 <init-param>
</servlet>

2)通过@WebServlet中配置

java 复制代码
@WebServlet(urlPatterns = "/my", initParams = {
@WebInitParam=(name = "paraName1", value = "paramValue1"),
@WebInitParam=(name = "paraName2", value = "paramValue2")
})

如何从servlet中访问初始化参数

直接在对应的myServlet 类中使用getInitParameter("paraName1")来获取对应的初始化参数

关联知识:面试中喜欢和JSP对比提问

相关推荐
8***a8151 天前
从0到1部署Tomcat和添加servlet(IDEA2024最新版详细教程)
hive·servlet·tomcat
6***94152 天前
报错The default superclass, “jakarta.servlet.http.HttpServlet“(已经配置好tomcat)
http·servlet·tomcat
天若有情6732 天前
笑喷!乌鸦哥版demo函数掀桌怒怼主函数:难办?那就别办了!
java·前端·servlet
LSL666_3 天前
1 概述及简单登录(不涉及数据库)
数据库·servlet
合作小小程序员小小店4 天前
网页开发,在线%旧版本旅游管理%系统,基于eclipse,html,css,jquery,servlet,jsp,mysql数据库
java·数据库·servlet·eclipse·jdk·旅游·jsp
老板多放葱和香菜4 天前
1大数据平台及组件搭建https://baijiahao.baidu.com/s?id=1849543147230084630
java·大数据·servlet
百***35945 天前
从0到1部署Tomcat和添加servlet(IDEA2024最新版详细教程)
hive·servlet·tomcat
CodeZ-Hao6 天前
gitea启用状态检查结合jenkins工作流实现pr门禁
servlet·jenkins·gitea
怒放de生命20106 天前
使用jenkins最新版操作指南
运维·servlet·jenkins
学网安的肆伍6 天前
【032-安全开发篇】JavaEE应用&Servlet路由技术&JDBC&Mybatis数据库&生命周期
安全·servlet·java-ee