JAVAEE—servlet的概念及使用,使用servlet接口实现一个表白墙

news2024/12/25 12:40:35

文章目录

  • servlet的概念
    • 静态页面和动态页面
    • servlet的作用
  • 写出一个servlet程序
    • 目录的创建
    • 设置smart tomcat
    • 编写helloworld

servlet的概念

首先我们要搞明白什么是servlet,servlet是一种实现动态页面的技术,他是由tomcat提供给程序员的一组API可以帮助程序员开发一个web程序那么既然我们说到了实现动态页面我们首先就要搞清楚什么是静态页面什么是动态页面

静态页面和动态页面

我们所说的动态页面和静态页面其实指的是说这个页面在不同的条件下它的内容会发生改变,而静态页面则是指不同用户,在不同地点的不同时间打开这个页面的时候这个页面的内容并没有发生任何的改变。 对应的动态页面就是指我们打开后内容会发生变化,比如说b站之类的会根据我们个人的喜好给我们推荐视频。

servlet的作用

  • 允许程序员注册一个类在tomcat收到某个特定的HTTP请求的时候tomcat会执行这个类中的代码
  • 帮助程序员解析HTTP请求把HTTP请求从一个字符串解析成一个HTTPRequest对象
  • 帮助程序员制造出特定的HTTP响应程序员只需要将自己要返回的内容写入HTTPResponse对象填写一些属性字段servlet就会自动的安装HTTP协议的方式构造出一个HTTP响应字段并通过socket接口返回

写出一个servlet程序

首先我们想要写出一个servelet程序第一件事情肯定是要创建一个项目这里我们创建一个什么项目呢?答案是一个mavean项目,那么创建好之后我们还要引入servlet的各种接口那么这里的引入和我门平时的引入是有一些区别的,这里的引入呢是在配置文件中进行导入那么具体该怎么做呢?我们只需要在配置文件中加入这样一段代码就可以了

<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

在这里插入图片描述
当我们的项目创建好之后我们只需要在pom.xml这个文件中导入依赖就可以了,导入方法就是将上面的代码导入即可。此外我们导入的时候要注意导入的serlet版本与tomcat版本要一致参照表格如下
在这里插入图片描述

目录的创建

当我们创建好项目之后我们还有一些工作要做那就是创建好我们需要创建的目录,那么我们需要创建哪些目录呢?首先就是我们的web目录结构如下
在这里插入图片描述

这里我们的web目录实在main目录下并且其结构位webapp->WEB_INF->web.xml,那么这个web.xml中包含了哪些东西呢?我们把这段代码复制进去

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
    <display-name>Archetype Created Web Application</display-name>
</web-app>

设置smart tomcat

在这里插入图片描述
在这里面主要就是这个context path这个路径,因为我们的这个路径是我们在访问的时候第一级路径。

编写helloworld

那么上面配置搞好了之后我们来写一个helloworld,那么想要写出代码我们首先要调用方法才可以,在这里我们用的方法不是main方法而是下面这两个

import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/login2 ")
public class login extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello world");
        resp.getWriter().write("hello world");
    }

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

    }
}

其中我们主要的代码就是这样用到的方法也就是这两个方法那么我们先运行一下,那么我们运行起来之后我们如何用浏览器去访问呢?
那就需要我们输入url这个url是有规定的首先我们代码中必须要加上的一个代码就是下面的这个

@WebServlet("这里面随便写前提是必须以(‘/’)开头模仿上面的代码")

并且我们上面说的Context path是作为一级目录使用比如说我们的代码url如何写呢?如下

	http://127.0.0.1:8080/test_login2/login2

然后我们来看一下最终的效果
在这里插入图片描述
很明显我们成功了确实是非常的不容易啊历经这么多的步骤才写出来了一个helloworld并且在初次学习的时候我们肯定会遇到各种各样的坑和错误那么我们应该做的就是耐心去调整代码在错误中进步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1636639.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VScode 无法连接云服务器

试了很多方法&#xff0c;比如更换VScode版本&#xff0c;卸载重装&#xff0c;删除配置文件 重启电脑&#xff0c;都无法成功。最后重置电脑后才连接上&#xff0c;但是重启服务器后又出现该问题。 方法一&#xff1a;修改环境 方法二&#xff1a;把vscode卸载干净重下

nacos-redis-springboot

新项目 准备工作 nacos 版本 2.0.3 redis 最终版本说明 springcloud-alibaba&#xff1a;2.2.7RELEASE springcloud&#xff1a;Hoxton.SR12 springboot&#xff1a;2.3.12.RELEASE Nacos&#xff1a;2.0.3 步骤 启动nacos和redis 准备nacos配置文件 server: port…

3款超好用的PDF在线处理神器,学会了职场工作效率翻倍!

&#x1f60a; 作为一名职场小白,我深知处理文档的痛苦。尤其是面对PDF这个"大魔王",经常感到头大! 合同要合并、简历要压缩、论文要转Word改格式…一个个来手动操作,简直要累死。&#x1f62b; 直到我发现了这些PDF在线处理神器!瞬间感觉自己的工作效率嗖嗖提升,整…

Nginx配置Https缺少SSL模块

1、Linux下Nginx配置https nginx下载和安装此处就忽略&#xff0c;可自行百度 1.1、配置https 打开nginx配置文件 vim /opt/app/nginx/conf/nginx.conf相关https配置 server {listen 443 ssl; #开放端口server_name echarts.net;#域名#redirect to https#ssl on; #旧版#ssl证…

SQL Sever无法连接服务器

SQL Sever无法连接服务器&#xff0c;报错证书链是由不受信任的颁发机构颁发的 解决方法&#xff1a;不用ssl方式连接 1、点击弹框中按钮“选项” 2、连接安全加密选择可选 3、不勾选“信任服务器证书” 4、点击“连接”&#xff0c;可连接成功

[附源码]SpringBoot+Vue网盘项目_仿某度盘

视频演示 [附源码]SpringBootVue网盘项目_仿某度盘 功能介绍 支持秒传支持视频音频播放、拖拽进度条、倍速播放等支持图片预览&#xff0c;旋转&#xff0c;放大支持多人一起上传&#xff0c;共享上传进度&#xff08;例如a上传苍老师学习资料到50%&#xff0c;突然b也上传苍老…

Flask教程2:flask高级视图

文章目录 add_url_rule类视图的引入装饰器的自定义与使用蓝图的使用url_prefix设置蓝图前缀 add_url_rule 欲实现url与视图函数的绑定&#xff0c;除了使用路由装饰器app.route&#xff0c;我们还可以通过add_url_rule(rule,endpointNone,view_funcNone)方法&#xff0c;其中&…

【webrtc】MessageHandler 8: 基于线程的消息处理:处理音频输入输出断开

m98代码,看起来m114 去掉了MessageHandler :音频的录制和播放 都使用了on message,但只是用来通知并处理流的断开的。AAudioRecorder AAudioRecorder 处理流断开 OnErrorCallback :有可能 错误回调是别处来的,是其他线程, 但是这个错误的处理要再自己的线程执行: 音频播…

【人工智能AI书籍】TensorFlow机器学习实战指南(推荐)

今天又来给大家推荐一本人工智能方面的书籍<TensorFlow机器学习实战指南>。TensorFlow是一个开源机器学习库。本书从TensorFlow的基础开始介绍&#xff0c;涉及变量、矩阵和各种数据源。之后&#xff0c;针对使用TensorFlow线性回归技术的实践经验进行详细讲解。后续章节…

【记录】Python3| 将 PDF 转换成 HTML/XML(✅⭐⭐⭐⭐pdf2htmlEX)

本文将会被汇总至 【记录】Python3&#xff5c;2024年 PDF 转 XML 或 HTML 的第三方库的使用方式、测评过程以及对比结果&#xff08;汇总&#xff09;&#xff0c;更多其他工具请访问该文章查看。 文章目录 pdf2htmlEX 使用体验与评估1 安装指南2 测试代码3 测试结果3.1 转 HT…

Mybatis.net + Mysql

项目文件结构 NuGet下载Mybatis.net相关包&#xff1a;IBatisNet 安装完成后&#xff0c;会显示在&#xff0c;在已安装页面。同时&#xff0c;在管理器中的引用列表中&#xff0c;会多出来两个引用文件 IBatisNet.CommonIBatisNet.DataMapper 安装 Mysql.data。 注意&#xff…

谷粒商城实战(020 RabbitMQ-消息确认)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第258p-第p261的内容 消息确认 生产者 publishers 消费者 consumers 设置配置类 调用api 控制台 抵达brocker 代理 新版本ReturnCallbac…

【opencv4.8.1 源码编译】windows10 OpenCV 4.8.1源码编译并实现 CUDA 12加速

Windows 下使用 CMake3.29.2 Visual Studio 2022 编译 OpenCV 4.8.1 及其扩展模块cuda12.0teslaT4显卡 记录自己在编译时踩过的坑&#xff0c;避免下次再犯或者给有需要的人。 在实际使用中&#xff0c;如果是对处理时间要求比较高的场景&#xff0c;使用OpenCV处理图片数据很…

虚拟机安装与配置win7

一、安装镜像 Windows7 64位 ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/ 建议迅雷下载 二、VMware 安装win7 1.新创自定义虚拟机 2.默认即可 3.iso文件我们自己下载&#xff0c;选择一个空的磁盘 4.…

Java 使用 Maven 编译时插件提示 拷贝错误

提示的具体信息为&#xff1a; [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.3.1:resources (default-resources) on project core-java-8: filtering C:\WorkDir\Repository\iSharkfly-Docs\java-tutorials\core-java-modules\core-jav…

《架构风清扬-Java面试系列第25讲》聊聊ArrayBlockingQueue的特点及使用场景

ArrayBlockingQueue是BlockingQueue接口的一个实现类之一 这个属于基础性问题&#xff0c;老规矩&#xff0c;我们将从使用场景和代码示例来进行讲解 来&#xff0c;思考片刻&#xff0c;给出你的答案 1&#xff0c;使用场景 实现&#xff1a;基于数组实现的有界阻塞队列&…

【Web UI自动化】Python+Selenium 环境配置

安装Python 官网地址&#xff1a;https://www.python.org/&#xff0c;Downloads菜单下选择适合自己的系统版本&#xff0c;我的是Windows。 点击进入以后&#xff0c;可以看到当前最新版本。 点击上面的链接&#xff0c;页面下滑&#xff0c;找到下载链接&#xff0c;根据…

解锁 LLM 新高度,拓宽模型新边界 —— OpenVINO™ 2024.1 赋能生成式 AI 高效运行...

点击蓝字 关注我们,让开发变得更有趣 作者 | 武卓博士 英特尔 OpenVINO™ 布道师 排版 | 李擎 Hello&#xff0c; OpenVINO™ 2024.1 欢迎来到 OpenVINO™ 2024.1! OpenVINO™ 工具套件的每一次升级&#xff0c;都意味着我们在 AI 推理与部署的前沿领域迈出了新的步伐&#x…

【算法刷题 | 动态规划01】5.01(动态规划理论基础、斐波那契数、爬楼梯、使用最小花费爬楼梯)

文章目录 1.动态规划理论基础1.1题目分类大纲1.2什么是动态规划&#xff1f;1.3背包问题1.4解题步骤1.5动态规划应该如何debug&#xff1f; 2.斐波那契数2.1题目2.2解法&#xff1a;动态规划2.2.1动态规划思路&#xff08;1&#xff09;确定dp数组以及下标的含义&#xff08;2&…

SQL如何利用Bitmap思想优化array_contains()函数

目录 0 问题描述 1 位图思想 2 案例实战 3 小结 0 问题描述 在工作中&#xff0c;我们往往使用array_contains()函数来进行存在性问题分析&#xff0c;如判断某个数是否在某个数组中&#xff0c;但是当表数据量过多&#xff0c;存在大量array_contains()函数时&#xff0c;…