您现在的位置是:首页 > 编程 > 

E011Web学习笔记

2025-07-27 02:04:04
E011Web学习笔记 一、Servlet入门1、概述概念:运行在服务器上的小程序;实际上Servlet是一个接口,定义了Java类被浏览器访问到(或者说被Tomcat识别的)规则;使用:自定义一个类实现Servlet接口,复写其中方法;2、快速入门步骤:第一步:创建一个JavaEE项目;代码语言:javascript代码运行次数:0运行复制在学习Tomca的时候创建了web项目;第二步:定义一个

E011Web学习笔记

一、Servlet入门

1、概述

概念:

运行在服务器上的小程序;

实际上Servlet是一个接口,定义了Java类被浏览器访问到(或者说被Tomcat识别的)规则;

使用:

自定义一个类实现Servlet接口,复写其中方法;

2、快速入门

步骤:

第一步:创建一个JavaEE项目;

代码语言:javascript代码运行次数:0运行复制
在学习Tomca的时候创建了web项目;

第二步:定义一个类,实现Servlet接口;

代码语言:javascript代码运行次数:0运行复制
public class MyServlet implements Servlet{
    //...
}

第三步:实现接口中的抽象方法;

代码语言:javascript代码运行次数:0运行复制
可根据IDEA的提示实现;
例如:
package com.zibo.servlet;

import javax.servlet.*;
import java.io.IOException;

public class MyServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    //提供服务的方法
    @Override
    public void service(ServletRequest servletRequest, ServletRespe servletRespe) throws ServletException, IOException {
        println("Hello Servlet!");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

第四步:配置Servlet

代码语言:javascript代码运行次数:0运行复制
-- 在web.xml中配置:
<!--配置Servlet-->
    <servlet>
        <servlet-name>my</servlet-name>
        <servlet-class>com.zibo.servlet.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>my</servlet-name>
        <url-pattern>/my</url-pattern>
    </servlet-mapping>

访问http://localhost:8080/web_war_exploded/my的结果是:

、执行原理

第一步:当服务器接收到浏览器客户端发出的请求后,会解析请求的URL路径,获取访问的Servlet的资源路径;

第二步:查web.xml文件,是否存在对应的<url-pattern>标签体内容;

第三步:如果有则查到对应的<servlet-class>全类名;.

第四步:Tomcat会将字节码文件加载到内存,并创建其对象;

第五步:调用对象的方法;

二、Servlet生命周期方法

1、被创建

执行init方法,执行一次;

一般用于加载资源;

Servlet被创建的时间:
代码语言:javascript代码运行次数:0运行复制
Servlet被创建的时间:
默认情况下,第一次被访问时,Servlet被创建;

可以指定Servlet被创建的时间;
指定Servlet被创建的时间:
<!--配置Servlet-->
    <servlet>
        <servlet-name>my</servlet-name>
        <servlet-class>com.zibo.servlet.MyServlet</servlet-class>
        <!--指定servlet被创建时间
        值为负整数(默认):第一次访问时创建;
        值为正整数:在服务器启动时创建;
        -->
        <load-on-startup>1</load-on-startup>
    </servlet>
Servlet是单例的
代码语言:javascript代码运行次数:0运行复制
问题:
Servlet只执行一次,说明只有一个Servlet对象,Servlet是单例的,当多个用户同时访问时,可能存在安全问题;

解决:
尽量不要在Servlet中定义成员变量。即使定义了成员变量也不要对其值进行修改操作;

2、提供服务

执行service方法,执行多次;

每次访问Servlet时,service方法都会被调用一次;

、被销毁

执行destroy方法,执行一次;

Servlet被销毁之前(服务器正常关闭时)执行,但是服务器若没有正常关闭,destroy方法是不会执行的;

一般用于释放资源;

4、方法介绍:

代码语言:javascript代码运行次数:0运行复制
package com.zibo.servlet;

import javax.servlet.*;
import java.io.IOException;

public class MyServlet implements Servlet {
    //初始化方法-在Servlet被创建时执行,只会执行一次;
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        println("init...");
    }
    //(了解)获取ServletConfig对象——Servlet的配置对象
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    //提供服务的方法,每次Servlet被访问时执行,会执行多次
    @Override
    public void service(ServletRequest servletRequest, ServletRespe servletRespe) throws ServletException, IOException {
        println("Hello Servlet!");
    }
    //(了解)获取Servlet的一些信息:版本、作者...
    @Override
    public String getServletInfo() {
        return null;
    }
    //销毁方法,在Servlet被杀死时(之前)(服务器被正常关闭时)执行,只执行一次
    @Override
    public void destroy() {
        println("destroy...");
    }
}
三、Servlet.0注解配置

1、好处

支持注解配置,可以不需要web.xml了;

2、步骤

第一步:创建JavaEE项目,选择Servlet.0以上的版本,可以不勾选 web.xml;

第二步:定义一个类,实现Servlet接口,并复写其方法;

第三步:在类上使用@WebServlet注解进行配置;

代码语言:javascript代码运行次数:0运行复制
注解如:只需要配置虚拟目录(资源路径)名字
@WebServlet(urlPatterns = "/my")
或者
@WebServlet("/my")
四、IDEA与Tomcat的相关配置

1、IDEA会为每一个Tomcat部署的项目单独建立一份配置文件;

查看控制台的log:Using CATALIA_BASE: "C:\Users\Administrator\.IntelliJIdea2019.2\system\tomcat\Tomcat_9_0_24_web_servlet"

2、工作空间项目和Tomcat部署的项目,不是同一个,但后者会自动同步前者的所有内容(资源);

WEB-IF目录下的资源不能被浏览器直接访问;

断点调试:使用“小虫子”启动——debug启动;

五、Servlet的体系结构

1、Servlet接口的实现类

GenericServlet -- 抽象类,Servlet的实现类;

HttpServlet -- 抽象类,GenericServlet的子类;

2、GenericServlet

可以通过继承GenericServlet来实现自定义的Servlet类;

继承GenericServlet只需要复写server方法即可,如下:

代码语言:javascript代码运行次数:0运行复制
package com.zibo.servlet;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletRespe;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet("/my")
public class MyServlet extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletRespe servletRespe) throws ServletException, IOException {
        println("成功通过继承GenericServlet实现……");
    }
}
但是,实际开发中并不用这种方式!

、HttpServlet

是对http协议的封装,可以简化操作;

使用步骤:

第一步:自定义Servlet类继承HttpServlet;

第二步:复写doGet/doPost方法;

代码示例:
代码语言:javascript代码运行次数:0运行复制
package com.zibo.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRespe;
import java.io.IOException;

@WebServlet("/my")
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletRespe resp) throws ServletException, IOException {
        super.doGet(req, resp);
        println("doGet……");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletRespe resp) throws ServletException, IOException {
        super.doPost(req, resp);
        println("doPost……");
    }
}

4、Servlet相关配置

①urlpartten:Servlet访问路径:
代码语言:javascript代码运行次数:0运行复制
单个访问路径示例:@WebServlet("/my")

多个访问路径示例:@WebServlet({"/my","/my1","/my2"})
②路径定义规则
代码语言:javascript代码运行次数:0运行复制
三种方式:
1、/xxx
2、/xxx/xxx
/*,*表示随意写都可以访问,如/1、/sfd、/42fsf;
/*的优先级最低;
、*.do
*.do表示随意写都可以访问,任意字符加上.do,而且do也不是固定的,可以.其他;
六、知识补充

1、将请求从一个servlet转发到另一个资源(servlet,jsp或HTML文件)

代码语言:javascript代码运行次数:0运行复制
示例:
req.getRequestDispatcher("/index.jsp").forward(req,resp);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent 删除servlet服务器接口配置学习笔记

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1199743.html

相关标签:无
上传时间: 2025-07-23 16:37:21

上一篇:E012Web学习笔记

下一篇:E010Web学习笔记

留言与评论(共有 19 条评论)
本站网友 什邡市第二人民医院
29分钟前 发表
resp); println("doPost……"); } }4
本站网友 和你一样mp3
7分钟前 发表
不是同一个
本站网友 侠盗一枝梅
4分钟前 发表
HttpServletRespe resp) throws ServletException
本站网友 利血平
4分钟前 发表
如有侵权请联系 cloudcommunity@tencent 删除前往查看servlet服务器接口配置学习笔记
本站网友 电信联通
15分钟前 发表
获取访问的Servlet的资源路径;第二步:查web.xml文件
本站网友 星战英雄
13分钟前 发表
并复写其方法;第三步:在类上使用@WebServlet注解进行配置;代码语言:javascript代码运行次数:0运行复制注解如:只需要配置虚拟目录(资源路径)名字 @WebServlet(urlPatterns = "/my") 或者 @WebServlet("/my")四
本站网友 啪啪基友乐
1分钟前 发表
ServletRespe servletRespe) throws ServletException
本站网友 烟花网站
25分钟前 发表
被销毁执行destroy方法
本站网友 美白祛斑方法
1秒前 发表
ServletRespe servletRespe) throws ServletException
本站网友 安顺家园
16分钟前 发表
service方法都会被调用一次;
本站网友 今日欧元汇率
26分钟前 发表
只会执行一次; @Override public void init(ServletConfig servletConfig) throws ServletException { println("init..."); } //(了解)获取ServletConfig对象——Servlet的配置对象 @Override public ServletConfig getServletConfig() { return null; } //提供服务的方法
本站网友 个人车辆违章查询
18分钟前 发表
获取访问的Servlet的资源路径;第二步:查web.xml文件
本站网友 前列腺肥大症
1秒前 发表
执行一次;一般用于加载资源;Servlet被创建的时间:代码语言:javascript代码运行次数:0运行复制Servlet被创建的时间: 默认情况下
本站网友 股指期货套利
18分钟前 发表
任意字符加上.do
本站网友 迫在眉梢
30分钟前 发表
知识补充1
本站网友 颈椎病的治疗方案
1分钟前 发表
提供服务执行service方法
本站网友 水落归漕
24分钟前 发表
被销毁执行destroy方法
本站网友 温都水城官网
20分钟前 发表
destroy方法是不会执行的;一般用于释放资源;4