当前位置: 首页 > article >正文

JavaWeb-Servlet6 入门

1、idea创建maven的web项目

新建项目选择maven骨架,配置选择如下图:
在这里插入图片描述
新建成功后,在pom.xml添加servlet依赖,

<dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <version>6.0.0</version>
</dependency>

然后新建一个类HelloServlet

public class HelloServlet extends HttpServlet {

    private ServletConfig config;
    @Override
    public ServletConfig getServletConfig() {
        return this.config;
    }
    @Override
    public void init(ServletConfig config) throws ServletException {
        this.config = config;
    }
    @Override
    public String getServletInfo() {
        return this.config.toString();
    }
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().println("hello servlet");
    }
}

之后,在web.xml中修改如下

<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
         https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
         version="6.0">
  <display-name>Archetype Created Web Application</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.dts.servlet.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
</web-app>

如此一个servlet入门项目就完成了

2、Servlet常用方法讲解

init

init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化。
当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。
init() 方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。

destoy

destroy() 方法只会被调用一次,在 Servlet 实例在 web 容器中销毁的时候被调用。
destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。
在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。

service

service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
service() 方法由容器调用,service 方法在适当的时候调用 doGet、doPost、doPut、doDelete 等方法。所以,您不用对 service() 方法做任何动作,您只需要根据来自客户端的请求类型来重写 doGet() 或 doPost() 即可。

doGet

doGet() 方法当一个客户通过 HTML 表单发出一个 HTTP GET 请求或直接请求一个 URL 时,doGet() 方法被调用。与 GET 请求相关的参数添加到 URL 的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用 doGet() 方法。

doPost

doPost() 方法当一个客户通过 HTML 表单发出一个 HTTP POST 请求时,doPost() 方法被调用。与 POST 请求相关的参数作为一个单独的 HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用 doPost() 方法。

getServletInfo

getServletInfo方法会返回Servlet的一段描述,可以返回一段字符串。

getServletConfig

getServletConfig方法会返回由Servlet容器传给init()方法的ServletConfig对象。
ServletConfig代表的是当前 servlet 在 web.xml中 的配置信息,他有方法如下:
getInitParamter:获取servlet的初始参数。
getServletName获取servlet名字。
在这里插入图片描述
如果该Servlet在web.xml中配置了初始化参数,则可以通过ServletConfig取出来,操作如下:

   <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.dts.servlet.HelloServlet</servlet-class>
        <init-param>
            <param-name>username</param-name>
            <param-value>admin</param-value>
        </init-param>
        <init-param>
            <param-name>password</param-name>
            <param-value>123456</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
  private ServletConfig config;
    @Override
    public void init(ServletConfig config) throws ServletException {
        this.config = config;
    }
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.write("<table>");
        out.write("<tr>");
        out.write("<td>用户名:</td>");
        out.write("<td>" + this.config.getInitParameter("username") + "</td>");
        out.write("</tr>");
        out.write("<tr>");
        out.write("<td>密码:</td>");
        out.write("<td>" + this.config.getInitParameter("password") + "</td>");
        out.write("</tr>");
        out.write("</table>");
        out.close();
    }

3、Servlet配置详解-loadOnStartup

标记容器是否在启动应用时就加载Servlet,默认不配置或数值为负数时表示客户端第一次请求Servlet时再加载;0 或 正数表示启动应用就加载,正数情况下,数值越小,加载该Servlet的优先级越高;

<servlet>
    <servlet-name>Servlet1</servlet-name>
    <servlet-class>com.iss.servlet.Servlet1</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<!-- 添加servlet的访问映射 -->
<servlet-mapping>
    <servlet-name>Servlet1</servlet-name>
    <url-pattern>/servlet1</url-pattern>
</servlet-mapping><servlet>
    <servlet-name>Servlet2</servlet-name>
    <servlet-class>com.iss.servlet.Servlet2</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>
<!-- 添加servlet的访问映射 -->
<servlet-mapping>
    <servlet-name>Servlet2</servlet-name>
    <url-pattern>/servlet2</url-pattern>
</servlet-mapping>

4、Servlet注解使用方式

从Servlet3.0开始,配置Servlet支持注解方式,使得不再需要在web.xml文件中进行Servlet的部署描述,简化了开发流程。但还是保留了配置web.xml方式。
注解具体实现方式:在Servlet类上使用@WebServlet注解进行配置。
在这里插入图片描述

5、总结

通过以上步骤,我们就可以使用servelt6了。


http://www.kler.cn/a/581720.html

相关文章:

  • AWS容器化部署指南
  • HTML 表单详解
  • EB-Cable许可管理在云计算环境中的应用
  • 虚函数和虚表的原理是什么?
  • Python之pyqt5生成计算机前端页面并运行
  • Android :实现登录功能的思路
  • selenium的鼠标操作
  • SpringBoot 统一异常处理
  • JavaScript(Web APIs)
  • springboot433-基于SpringBoot的流浪猫爱心救助系统(源码+数据库+纯前后端分离+部署讲解等)
  • 消防行业如何借助 TDengine 打造高效的数据监控与分析系统
  • Spring(七)AOP-代理模式
  • 【群晖 NAS】把微软bing的背景图自动更换为群晖DSM7.X登录界面和DSM欢迎信息的教程
  • 「 DelegateUI 」Ant-d 风格的 Qt Qml UI 套件
  • VMware虚拟机迁移失败的故障排查方法
  • 文献阅读 | Nature Methods | SCENIC: 单细胞调控网络推断和聚类
  • warning: remote HEAD refers to nonexistent ref, unable to checkout.
  • Oracle 数据库导出与导入操作指南
  • 后端面试高频笔试题(非常规LeetCode类型)
  • 2025最新群智能优化算法:基于RRT的优化器(RRT-based Optimizer,RRTO)求解23个经典函数测试集,MATLAB