前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JavaWeb入门之Servlet基础 1

JavaWeb入门之Servlet基础 1

原创
作者头像
黄桂期
修改于 2018-05-13 16:02:46
修改于 2018-05-13 16:02:46
98310
代码可运行
举报
文章被收录于专栏:土豆专栏土豆专栏
运行总次数:0
代码可运行

写给还是小白的我们,一起加油~

首先来简单介绍一下Servlet,它是和平台无关的服务器端组件,运行在Servlet容器中。Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet和客户的通信采用“请求/响应的模式”。

简单来说,就是Servlet可以通过浏览器直接访问Java类。

Servlet可完成以下功能:

  • 创建并返回基于客户请求的动态HTML页面
  • 创建可嵌入到现有HTML页面中的部分HTML页面
  • 与其他服务器资源(如数据库或基于Java的应用程序)进行通信

Servlet容器响应客户请求的过程:

再来讲述一下Servlet的生命周期,以下方法都是由Servlet容器负责调用:

  1. 构造器 只有在第一次请求Servlet的时候,创建Servlet的实例,调用构造器,而且Servlet是单实例的。
  2. init 只被调用一次,在创建好实例后会立即被调用,它用于初始化Servlet
  3. service 被多次调用,每次请求都会调用service方法。实际上是用于响应请求的
  4. destroy 只被调用一次,在当前Servlet 所在的web应用被关闭前调用,它用于释放当前Servlet所占有的资源

Servlet容器响应客户请求的过程:

  1. Servlet引擎检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第4步,否则执行第2步
  2. 装载并创建该Servlet的一个实例对象:调用该Servlet的构造器
  3. 调用Servlet实例对象的init()方法
  4. 创建一个用于封装请求的ServletRequest对象和一个代表响应消息的ServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去
  5. web应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法

然后就是在ecplise中的配置了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
web.xml:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0">
    <!-- 配置当前WEB应用的初始化参数 -->
    <context-param>
        <param-name>driver</param-name>
        <param-value>com.mysql.jdbc.Driver</param-value>
    </context-param>
    <context-param>
        <param-name>jdbcUrl</param-name>
        <param-value>jdbc:mysql://qwikki</param-value>
    </context-param>
      <!-- 配置和映射Servlet -->
      <servlet>
          <servlet-name>helloServlet</servlet-name><!--servlet名字-->
          <servlet-class>per.huang.pra.HelloServlet</servlet-class><!--servlet对应的Java代码位置-->
          <!-- 配置Servlet的初始化参数 -->
          <init-param>
              <param-name>user</param-name>
          <!-- 参数值 -->
              <param-value>root</param-value>
          </init-param>
          <load-on-startup>5</load-on-startup><!--servlet执行顺序-->
      </servlet>
      <servlet-mapping>
          <servlet-name>helloServlet</servlet-name><!--servlet名字-->
          <url-pattern>/hello</url-pattern><!--地址栏访问路径-->
      </servlet-mapping>
</web-app>

当servlet配置了初始化参数之后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init()方法时,将ServletConfig对象传递给Servlet。所以我们可以通过Servlet对象得到当前servlet的初始化参数信息。

附上第一个Servlet程序,方法的作用已在注释里说明:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package per.huang.pra;

import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class HelloServlet implements Servlet{

    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        System.out.println("destroy");
    }

    @Override
    public ServletConfig getServletConfig() {
        // TODO Auto-generated method stub
        System.out.println("getServletConfig");
        return null;
    }

    @Override
    public String getServletInfo() {
        // TODO Auto-generated method stub
        System.out.println("getServletInfo");
        return null;
    }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        // TODO Auto-generated method stub
        System.out.println("init");
        //获取Servlet的初始化参数和值
        String user=servletConfig.getInitParameter("user");
        System.out.println("user: "+user);
        //获取ServletContext对象
        ServletContext servletContext=servletConfig.getServletContext();
        String driver=servletContext.getInitParameter("driver");
        System.out.println("driver: "+driver);
        Enumeration<String> names2=servletContext.getInitParameterNames();
        while(names2.hasMoreElements()){
            String name=names2.nextElement();
            System.out.println("--> "+name);
        }
        //获取文件的绝对路径(在服务器上的路径,而不是这个文件的绝对物理路径)
        String realPath=servletContext.getRealPath("/webContent里面的文件名");
        System.out.println(realPath);
        //获取当前WEB应用的名称
        String contextPath=servletContext.getContextPath();
        System.out.println("contextPath:"+contextPath);
        //获取当前WEB应用的某一个文件对应的输入流
        try {
            ClassLoader classLoader=getClass().getClassLoader();
            InputStream is=classLoader.getResourceAsStream("jdbc.properties");
            System.out.println("1."+is);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            InputStream is2=servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
            System.out.println("2."+is2);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

    @Override
    public void service(ServletRequest arg0, ServletResponse arg1)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("service");
    }
    public HelloServlet(){
        System.out.println("constructor");
    }

}

Servlet还有很多东西需要学习,今天就先讲一部分,未完待续~

借用一句话,没有天生的高手,也没有永远的菜鸟!小白们一起加油~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
写的特别好, 一目了然厉害了
写的特别好, 一目了然厉害了
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
JavaWeb入门之Servlet小练习
在web.xml文件中设置两个WEB应用的初始化参数,username,password,创建一个html页面,定义两个请求字段并发送到一个Servlet中,对应web.xml中的参数是否一样;若一致,响应hello:username;若失败则Sorry:username
黄桂期
2018/05/16
1.1K5
JavaWeb后端入门6—Servlet
Servlet是一个运行在Web服务器上的Java程序,用于处理从Web客户端发送的请求并对请求做出响应。
用户6948990
2025/04/03
1170
JavaWeb后端入门6—Servlet
Servlet基础入门学习1
描述:在进行JavaWeb开发学习的时候必不可少就是Tomcat Web 容器服务器,因为它开源免费、便于上手,并且使用安装简单。
全栈工程师修炼指南
2020/10/23
7810
Servlet基础入门学习1
第71节:Java中HTTP和Servlet
什么是协议,就是规则,规范,用于双方在交互,通讯的时候遵循的一种规范,规则.而http协议是对网络上的客户端和服务端在执行http请求的时候遵循的一种规范,其实就是规定了客户端在访问服务器端的时候,要带上一些东西,服务端返回数据的时候,也要带点东西,礼尚往来嘛!!!
达达前端
2019/07/03
5540
第71节:Java中HTTP和Servlet
javaEE之JavaWeb知识点(二)
Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码,通过java的API动态的向客户端输出内容
软件小生活
2021/10/08
4680
javaEE之JavaWeb知识点(二)
Servlet笔记3(Eclipse实现)
目录 --------- Servlet学习笔记1------------ ----------Servlet学习笔记2------------ ----------Servlet学习笔记3------------
别团等shy哥发育
2023/02/25
3060
【JavaWeb】重新认识 Servlet 的初始化 [ 回顾 Servlet ]
Servlet运行在Servlet容器中,其生命周期是由容器(Web服务器)来管理的,Servlet生命周期大致分为四个阶段:
.29.
2022/11/15
7050
【JavaWeb】重新认识 Servlet 的初始化 [ 回顾 Servlet ]
Servlet 学习笔记
Servlet 运行在服务器上的 java 类; Servlet 容器为 javaWeb 应用提供运行时环境,负责管理 servlet 和 jsp 生命周期,以及管理他们的共享数据。 现在我们知道了 Servlet 是运行在服务器上的 Java 类,那么什么是服务器?我们平常最常用的服务器都有哪些呢?   服务器是一种被动程序:只有当Internet上运行其他计算机中的浏览器发出的请求时,服务器才会响应;   最常用的Web服务器是Apache和Microsoft的Internet信息服务器。 对于现在大多
bgZyy
2018/05/16
6760
Servlet技术入门及其实践
当浏览器请求服务器对应服务时,服务器会根据请求url查找是否创建了对应url的servlet;如果已经创建则直接调用对应的service方法进行服务的处理,如果没有创建,则会创建对应的servlet并调用对应servlet的init方法进行servlet的初始化工作,之后继续调用service方法进行服务的处理,当服务器正常关闭时,在销毁删除servlet对象之前,会调用对应servlet的destory方法,进行资源释放或关闭执行功能的执行
张哥编程
2024/12/13
1260
Web阶段:第八章:Servlet上
Servlet技术 a)什么是Servlet 1、Servlet是一个接口(JavaEE规范) 2、Servlet是运行在服务器(Tomcat或其他的服务器)上的小程序。 3、Servlet程序用来接收用户的请求,和给客户端响应数据。(接收请求,回传响应)
Java廖志伟
2022/09/28
2850
Web阶段:第八章:Servlet上
servlet中init-param与context-param的区别「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160405.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/13
6080
servlet中init-param与context-param的区别「建议收藏」
log4j使用方法_pipe使用教程
地址:http://www.codeceo.com/log4j-usage.html
全栈程序员站长
2022/10/04
6130
log4j使用方法_pipe使用教程
ServletContext对象
ServletContext对象的作用是在整个Web应用的动态资源之间共享数据!例如在AServlet中向ServletContext对象中保存一个值,然后在BServlet中就可以获取这个值,这就是共享数据了。
星哥玩云
2022/09/14
3130
当Java遇见了Html--Servlet篇
方志朋
2017/12/29
8680
当Java遇见了Html--Servlet篇
如此详细的 Servlet 教程,不来看看么?
选中 src 目录或者要生成 Servlet 的包,然后单击鼠标右键,New -> Create New Servlet,接着填写 Servlet 程序名,所属包以及 Servlet 全类名,同时 取消勾选 Java EE 6 即可,勾选则会生成注解式配置,后续学习过程中才会接触到。
村雨遥
2022/06/15
5610
如此详细的 Servlet 教程,不来看看么?
JavaWeb09-Servlet(Java真正的全栈开发)
Servlet 一.Servlet 1. servlet介绍 Servlet 是在服务器上运行的小程序。Servlet 的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。(它可以做css和html做的所有)这个过程为如图: a. 客户端发送请求至服务器端; b. 服务器将请求信息发送至 Servlet; c. Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求; d. 服务器将响应返回给客户端。 一个 Servlet 就是 Java语言中的一个类,
Java帮帮
2018/03/16
1.1K0
JavaWeb09-Servlet(Java真正的全栈开发)
servlet就是这么简单
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
好好学java
2018/09/21
9650
servlet就是这么简单
关于 Servlet,这里有你想要知道的一切!
选中 src 目录或者要生成 Servlet 的包,然后单击鼠标右键,New -> Create New Servlet,接着填写 Servlet 程序名,所属包以及 Servlet 全类名,同时 取消勾选 Java EE 6 即可,勾选则会生成注解式配置,后续学习过程中才会接触到。
村雨遥
2020/06/12
7010
Java Web Servlet (Part B)- ServletConfig &amp; ServletContext
ServletConfig类时Servlet程序的配置信息类,使用Servlet可以实现
RiemannHypothesis
2022/09/26
3610
Java Web Servlet (Part B)- ServletConfig &amp; ServletContext
JavaWeb(三)servlet
Servlet * 什么是Servlet 是运行在web服务器端的Java应用程序,它使用JAVA语言编写,具有Java语言的优点。与Java程序的区别:Servlet对象主要封装了对Http请求的处理,并且他的运行需要Servlet容器的支持。 Servlet实质上就是按Servlet规范编写的Java类,他可以处理Web应用中的相关请求。Servlet是一个标准,由Sun公司定义,具体实现细节由Servlet容器进行实现,如Tomcat,JBoss等。 Servlet和JSP的区别: 1, 角色不同(视
二十三年蝉
2018/02/28
1.2K0
相关推荐
JavaWeb入门之Servlet小练习
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验