Servlet程序开发入门(一)

Servlet入门案例(一)认识Servlet 大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。麻烦帮忙转发一下这篇文章+关注我《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!麻烦帮忙转发一下这篇文章+关注我[外链图片转存中…(img-7LAJiKFD-1713382499503)] 阅读详情

Servlet程序处理步骤:
1) 客户端发送请求至服务器端;
2) 服务器将请求信息发送至 Servlet,若此Servlet尚未被加载,服务器将其加载到java虚拟机并执行它;
3) Servlet接收HTTP请求并生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
4) 服务器将响应返回给客户端。
这里写图片描述

Servlet生命周期:
客户端请求该 Servlet,加载 Servlet 类到内存。
1.实例化:Servlet容器创建Servlet类的实例对象;
2.初始化:容器调用init()方法初始化该 Servlet,通常会申请资源以便后续使用;
3.服务:调用service()方法响应请求(根据请求方法不同调用doGet() 或者 doPost(),此外还有doHead()、doPut()、doTrace()、doDelete()、doOptions());
4.破坏:在释放Servlet实例之前调用destroy()方法,通常会释放资源;
5.不可用:释放内存中的容器。
Servlet骨架:

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {

    @Override
    public void init() throws ServletException {
        System.out.println("-------init()方法无参------");
        super.init();
    }

    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("-------init()方法带参------");
        super.init(config);
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("-------service()方法------");
        PrintWriter pw=resp.getWriter();
        pw.print("Hello World Servlet");
        //super.service(arg0, arg1);
    }

    @Override
    public void destroy() {
        System.out.println("-------destroy()方法------");
        super.destroy();
    }


}

web.xml配置信息

  <servlet>
    <servlet-name>Servlet</servlet-name><!--与mapping中的name值一致即可-->
    <servlet-class>com.servlet.HelloServlet</servlet-class><!--定义包类名称-->
  </servlet>

  <servlet-mapping>
    <servlet-name>Servlet</servlet-name>
    <url-pattern>/start</url-pattern><!--页面映射路径-->
  </servlet-mapping>

在浏览器地址输入http://localhost:8080/Project/start即可执行service方法打印出“Hello World Servlet”。并且控制台会输出:

-------init()方法带参------
-------init()方法无参------
-------service()方法------

这里destroy()方法暂未未被调用,所以没有输出。

上面例子是通过浏览器直接请求,下面举例通过jsp提交请求。
login.jsp

<body>
    <form action="<%=request.getContextPath() %>/log">
        用户名:<input type="text" name="userName"><br>
        密    码:<input  type="password" name="passWord"><br>
        <input type="submit" value="提交">
        <input type="reset" value="重置">
    </form>
</body>

web.xml配置

  <servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>com.servlet.LoginServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/log</url-pattern>
  </servlet-mapping>

LoginServlet

package com.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String usn=req.getParameter("userName");
        String psw=req.getParameter("passWord");
        System.out.println("userName:"+usn);
        System.out.println("passWord"+psw);

    }

}

在jsp页面输入用户名密码,控制台输出.

下面模拟登录案例(尚有缺陷)
首先将LoginServlet.java修改为:

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String usn=req.getParameter("userName");
        String psw=req.getParameter("passWord");
        System.out.println("userName:"+usn);
        System.out.println("passWord:"+psw);
        if(usn.equals("huge")&&psw.equals("lixiaoyao")){
            resp.sendRedirect(req.getContextPath()+"/01/success.jsp");
        }else{
            resp.sendRedirect(req.getContextPath()+"/01/error.jsp");
        }
    }       

web.xml配置信息与login.jsp不变;
添加success.jsp

<body>
登陆成功!<br>
您提交的信息为:<br>
用户名:<%=request.getParameter("userName")%><br>
密码:<%=request.getParameter("passWord") %><br>
<a href="login.jsp">返回登录页面</a>
</body>

添加error.jsp

<body>
登陆失败!<br>
您提交的信息为:<br>
用户名:<%=request.getParameter("userName")%><br>
密码:<%=request.getParameter("passWord") %><br>
<a href="login.jsp">返回登录页面</a>
</body>

运行后会发现无论是成功页面还是失败页面用户名与密码的值都是null。
这是因为我们用的是重定向,牵扯到两次请求,第二次请求没有传值。

完善,用请求分派代替重定向:

String forward=null;
        if(usn.equals("huge")&&psw.equals("lixiaoyao")){

            forward="/01/success.jsp";
            RequestDispatcher rd=req.getRequestDispatcher(forward);
            rd.forward(req, resp);
        }else{
            forward="/01/error.jsp";
            RequestDispatcher rd=req.getRequestDispatcher(forward);
            rd.forward(req, resp);
        }

重定向与请求分派的比较:
1.请求分派只能请求转发给同一个web应用中的其他组件;而重定向还可以重定到其他站点的资源上。
2.重定向访问过程结束后浏览器地址栏的URL会发生改变;请求转发过程结束后地址栏URL地址不变。
3.请求分派的发起者和调用者共享相同的request实例和response实例,它们属于同一个“请求/响应”过程;重定向的发起者和调用者使用各自的request实例和response实例,它们各自属于独立的“请求/响应”过程。

Servlet从入门到精通 文章目录一,Servlet--1,概述--2,准备工作在IDEA里创建一个web工程整理web工程目录结构修改资源输出位置修改jar包存放位置配置Tomcat服务器--3,入门案例思路创建Servlet程序配置web.xml文件测试--4,Servlet的继承结构标题 一,Servlet –1,概述 Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成 动态 阅读详情

相关推荐

手把手教你解决COLMAP编译中的Ceres CUDA支持问题(附详细配置步骤)

本文详细解析了COLMAP编译中Ceres CUDA支持问题的完整解决方案,包括环境准备、Ceres Solver的CUDA编译配置、COLMAP的CUDA集成配置等关键步骤。通过优化CMake参数和解决常见错误,帮助技术人员充分利用GPU加速优势,提升三维重建效率。

vodka的博客 862

Servlet入门

Servlet 是运行在Web服务器中的小型java程序,是Java提供的一门动态web资源开发技术。通常通过HTTP协议接收和响应来自于客户端的请求。Servlet 是JavaEE规范之一,其实就是一个接口(定义Servlet需实现Servlet接口或继承HttpServlet),并由web服务器运行Servlet。

weixin_75199610的博客 1801

领域驱动设计整理——实体和值对象设计

实体引言在领域驱动设计里,实体的设计可以说是通用语言的核心,也是最开始在模型划分中需要考虑的。怎么样设计实体和怎么样划分限界上下文同样重要。实体的概念就是要保证通用语言的完整性。领域驱动让设计实体的关注点从数据的属性和表的关联转化到了富有行为的领域概念上。 实体是具有可变性的,这是一个和值对象比较明显的区分,也即实体是可以持续得变化,持续得修改,并且具有唯一的标识。在设计实体的时候需要跳出CRUD的

马猴烧酒└(┐卍^o^)卍ドゥルルル~楪詩月「YUZURIHA SHIZUKI」 2万+

【Servlet】Servlet入门

概念:server applet,即:运行在服务器端的小程序Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。将来我们定义一个类,实现Servlet接口,复写方法,tomcat就可以识别这个类,我们就称它为一个ServletServlet用大白话来说,就像是一个在Web服务器上运行的Java小程序,它专门用来处理来自浏览器或其他客户端的请求,并根据这些请求动态生成响应内容。

qq_39921135的博客 1477

科研党必备:5个高效查找论文开源代码的宝藏网站(附实战技巧)

本文为科研工作者推荐5个高效查找论文开源代码的宝藏网站,包括ResearchCode和PapersWithCode等工具,提供实战技巧如进阶搜索语法和代码质量评估体系,帮助快速定位高质量实现并提升复现效率。特别分享隐藏代码库的检索方法和智能工作流配置,助力科研党高效完成论文复现。

weixin_28829629的博客 402

自抗扰控制(ADRC)原理与MATLAB实现详解

自抗扰控制(ADRC)是一种先进的鲁棒控制策略,其核心在于通过扩张状态观测器(ESO)实时估计并补偿系统总扰动。相比传统PID控制,ADRC不依赖精确数学模型,特别适合处理非线性、时变系统。从控制原理看,ADRC将系统内部动态和外部扰动统一建模,通过带宽参数化方法实现快速响应与强抗扰能力。在工程实践中,ADRC已成功应用于无人机飞控、伺服系统等场景,MATLAB仿真显示其上升时间可比PID提升46%,抗扰动恢复时间缩短60%。典型实现包含ESO设计、扰动补偿和PD控制三部分,参数整定遵循ω₀=3~5倍系统带

weixin_33585822的博客 95

Servlet程序开发

Servlet 程序开发 一、Servlet概念及工作原理 什么是Servlet? Servlet功能: Servlet运行需要Servlet容器: Servlet 工作流程: Servlet生命周期: Servlet使用单例模式,服务器重启之后Servlet才被销毁 二、Servlet开发过程 调用Servlet的两种方法: 第一种方法: 第二种方法: 开发时如何应用: ............

Desperado的博客 1465

永久关闭Windows更新的5种方法

很多家用电脑,如果系统自动更新的话,会变得越来越卡顿,且硬件型号兼容也并不完美。那么我们该如何彻底关闭Win11的自动更新呢?以下准备了5种方法,您可以根据自身实际情况选择合适的方法!

qq_43652793的博客 1万+

Servlet入门(一)开发servlet的三种方式

一、Servlet入门–开发Servlet的三种方式 简介:Servlet(service applet)即运行在服务器上的java程序,是JavaEE中开发web应用的最基础重要的技术 1、实现servlet接口 2、继承GenericServlet 3、继承HttpServlet 1、实现Servlet接口 JavaEE提供了servlet接口,该接口需要重写五个方法 servlet是单例的...

cgl_dong的博客 675

VN1630A硬件配置指南:手把手教你用CanApe搭建XCP标定工程(附ELF文件配置技巧)

本文详细介绍了如何使用VN1630A硬件和CanApe软件搭建XCP标定工程,包括硬件配置、CanApe工程创建、ELF文件处理及XCP协议层配置等关键步骤。特别针对实际项目中常见的错误和细节问题提供解决方案,帮助工程师高效完成ECU参数标定工作。

git9versioner的博客 1160

【Claude】媒体文件处理错误:PDF 与 Image 过大的检测与预处理方法 bug报错已解决

图片压缩是必须的:原始图片的 base64 会占用大量 TokenPDF 提取文本优于传图片:文本版 PDF 比扫描版更省 Token分块处理大文件:不要一次性处理整个大文件控制分辨率:800x800 通常足够 Claude 分析。

博客 6362

SERVLET从入门到精通(一)

<td><input type='submit' value='添加用户'/></td><td><input type='reset' value='重新填写'/></td></tr>");'>删除</a></td>"//也可以信息都带过去。resp.getWriter().println("<tr><td>用户名</td><td><input type='text' name=username value=''/></td>

p6448777的博客 479

高频注入是否需要对齐和强拖操作?

高频注入技术显著优化了传统FOC启动流程,但仍需部分对齐操作。传统启动必须包含位置检测、对齐和强拖等步骤,而高频注入可实现零速闭环,简化或跳过部分环节。高频注入下的对齐主要用于验证有效性、初始化观测器和建立初始磁链,形式可大幅简化。虽然高频注入基本消除了传统强拖需求,但在重载、弱凸极等特殊情况下仍需辅助。实际应用中可采用自适应混合策略,根据负载和电机类型选择最优启动方案。高频注入使对齐和强拖从"必须"变为"可选优化项",是无传感器控制的重要进步。

汽车软件开发 207

servlet学习笔记(一)之servlet入门教程

一、知识准备 servlet 是在服务器上运行的小程序,一个 servlet 就是一个 Java 类,并且可以通过 “请求 - 响应” 编程模式来访问这个驻留在服务器内存里面的 servlet 程序 tomcat 容器等级以及 servlet 的位置 二、编写 servlet 继承 HTTPServlet,在创建时,直接指定父类 重写 doGet() 或者 doPos...

程序员世杰 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Servlet快速入门

文章目录一、Servlet介绍二、Servlet快速入门(1)创建一个JavaWeb项目(2)定义一个类,实现Servlet接口(3)实现接口中的方法(4)配置Servlet 首先要明确,Servlet非常的重要,整个JavaWeb的核心知识体系都是围绕Servlet来转的。 一、Servlet介绍 概念:Servlet是两个单词的缩写server applet,意思是:在服务器端运行的小程序。...

匿名攻城狮 1164

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Servlet的入门(一)

1.Servlet的基本概念: Servlet定义:Servlet是基于Java技术的Web组件,由容器管理并产生动态的内容。Servlet与客户端通过Servlet容器实现的请求/响应模型进行交互。 注意:Servlet不是从命令行启动的,而是由包含Java虚拟机的Web服务器进行加载 2.Servlet的技术功能点 Servlet通过创建一个框架来扩展服务器的能力,以提供在Web上进行...

兵哥LOVE坤 2万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

使用IntelliJ IDEA进行Java的web程序开发(Servlet和Jsp)

  记录使用IDEA进行Java开发Web应用的详细过程。

dawn0718的专栏 4633

JavaWeb-Servlet6 入门

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

卿着飞翔 1031

Servlet入门 Servlet生命周期 Servlet体系结构

Servlet (server applet) 是运行在服务端(tomcat)的Java小程序,是sun公司提供一套定义动态资源规范;从代码层面上来讲Servlet就是一个接口狭义的Servlet是指Java语言编写的一个接口。广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet作用:用来接收和处理客户端请求、响应给浏览器的动态资源。

2401_86102746的博客 1408

Servlet入门(一)

文章目录Servlet入门(一)一、什么是Servlet二、Servlet体系结构三、Servlet容器四、Servlet生命周期 Servlet入门(一) 一、什么是Servlet ​ Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。 ​ 使用 Servlet...

Shine_OfSun的博客 221

Servlet 入门

目录 一、Servlet 介绍 二、Servlet 入门 1、创建JavaEE Web项目 2、定义类,实现 Servlet 接口 3、实现接口中的抽象方法 4、配置 Servlet 三、Servlet 分析 1、原理分析 2、Servlet 中的生命周期 四、注解配置(不用web.xml配置) 五、Servlet 体系结构 1、GenericServlet 类 2、Ht...

ONESTARの博客 2505

Servlet入门学习笔记-Servlet技术

Servlet入门教程,如何使用Servley搭建第一个程序

weixin_52937170的博客 1614
上一篇: JDBC基本操作
下一篇: Java设计模式之工厂模式
詹詹自喜KING
博客等级 码龄11年 40粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值