JavaWeb Sevelet学习 创建Sevelet程序

news2024/11/17 8:54:17

Servlet 是JavaWeb中的开发动态Web一门技术  是由Sun公司提供的一个接口,允许开发者编写运行在服务器(Tomcat)上的Java程序,这些程序可以 生成动态网页内容, 响应客户端的请求。简单来说,Servlet就是Java EE规范中定义的用于开发服务器端应用程序的API。

通过 Sevelt接口实现java程序:

开发一个简单的Servlet程序通常只需要两个基本步骤: 

1:创建一个类 实现Sevelt接口  -->2: 把开发的好的接口 部署到Web(Tomcat )服务器当中;

通过IEAD 构建普通 Maven项目 :

后面可以在这个SeveltApp Maven主工程中 构建新的Model 文件;

2:  在Pom文件导入Sevelt 所需要的依赖 :

这里提供一个Maven仓库 地址 提供了不同版本的项目依赖 :

Maven仓库

           导入Servlet API这是Servlet API的标准实现  

<!--Servlet API -->

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

         导入JSP API依赖   Servlet需要与JSP页面交互,这个依赖是必需的。

<!-- JSP API -->
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.3</version>
    <scope>provided</scope>
</dependency>

3: 在SeveletApp 下 构建子工程项目:

创建 Sevelt-01  子工程

这一步记得把安装的Maven地址和 setting文件配置地址 根据自己的本地文件目录记得 一致

创建完成子模块:

这个父项目包含一个Sevelet-01 的子模块 这种层级关系有助于组织和管理大型软件项目。模块化使得代码更加清晰和易于维护,并且子模块可以使用父模块的Jar包;

完善Sevelet-01 项目结构 :

创建一个三层的层级目录

创建一个Sevelet java普通类

创建好以后 子模块会默认去使用父层级的 pom依赖 继承 HttpServlet apii 

在生成的Servlet类中,找到doGetdoPost方法,根据需要覆盖其中一个或两个。

覆盖Servlet类中的doGetdoPost方法 它们分别用于处理HTTP GET和POST请求

我们可以在2种方式内可以对应自己的需求编写 不同的输出方式 :

比如:  使用HttpServletResponse对象的getWriter()方法来获取PrintWriter,并直接向客户端发送文本内容(如HTML页面)。

   @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        设置响应内容类型:
        resp.setContentType("text/html");
//        获取PrintWriter对象:
        PrintWriter out = resp.getWriter();
//        发送HTML内容:
        out.println("<html><body>");
        out.println("<h1>The is My Web</h1>");
        out.println("</body></html>");
//        关闭PrintWriter 输出流
        out.close();
    }

当然也可以使用转发和重定向的方式进行:

转发方式:

可以根据自己的需求添加一些资源进行转发 如 :在源Servlet中设置属性 
String name = "kangkang"; // 假设这是根据某些业务逻辑获取的名字 request.setAttribute("name", name); 
转发的地址
RequestDispatcher dispatcher = req.getRequestDispatcher("/MyServlet");
执行转发
dispatcher.forward(req, resp);

重定向方式:

//      执行重定向 可以重定向到同一服务器上的另一个页面,或者指向完全不同的服务器和域名。
//        这个地址根据自己加 确保URL是有效的
        resp.sendRedirect("http://xxx/xxx");

        }

添加web映射:

设置web.xml 映射路径这里我们根据第一个案例来演示:

设置web 映射的目的是  我们写的java 程序需要通过浏览器访问 而浏览器需要连接web服务器的 所以需要添加web映射 注册我们的Servlet::

配置Tomcat 服务器:

添加请求路径 

启动tomcat:

这里因为要工作原因 下篇补全我的一些可能存在的一些误区 :还有 关于转发和重定向的原理我下篇关于Servelt的原理会细聊一下 :简单理解一下各位 

转发是服务器内部把请求从一个页面传到另一个页面,用户看不到这个过程,地址栏也不会变。

重定向是服务器告诉浏览器去另一个地址,浏览器会显示新的地址,用户可以看到这个过程。

转发通常用于服务器内部处理,重定向通常用于改变用户浏览器的地址。

未完待续:

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

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

相关文章

C++入门 基于ros的话题通信

一、 开发环境 ubuntu20.04 ros版本noetic 参考视频 https://www.bilibili.com/video/BV1Ci4y1L7ZZ/?p52&spm_id_from333.1007.top_right_bar_window_history.content.click&vd_source4cd1b6f268e2a29a11bea5d2568836ee 二、 创建两个功能包 //创建工作空间 工作空…

Aiseesoft Video Converter Ultimate视频转换大师,免安装中文旗舰版 v10.8.32

软件介绍 视频转换大师是一款集转码、编辑以及压缩功能于一身的专业软件&#xff0c;支持处理超过1,000种视频和音频格式。该工具不仅提供基础的格式转换服务&#xff0c;还拓展至高级功能&#xff0c;包括视频效果调整、数据压缩以及ID3信息编辑等&#xff0c;同时&#xff0…

socket地址理解

socket介绍 套接字的基本概念 1. 套接字的定义&#xff1a; 套接字&#xff08;socket&#xff09;是计算机网络中用于通信的端点&#xff0c;它抽象了不同主机上应用进程之间双向通信的机制。 2. 套接字的作用&#xff1a; 套接字连接应用进程与网络协议栈&#xff0c;使…

加密与解密(第四版)】第二十五章笔记

第二十五章 数据取证技术 25.1 硬盘数据的获取和固定 取证专用的Linux可启动光盘 硬盘复制机 利用取证计算机复制硬盘 手机&#xff08;JTAG&#xff09; 电子数据的固定&#xff08;HASH值&#xff09; 25.2 硬盘的分区和数据恢复 25.3 内存分析 25.4 动态仿真技术 25.…

虚拟ECU:彻底改变汽车软件开发与测试

汽车开发领域有着垂直性较强的一系列需求&#xff0c;其中最为瞩目的需求之一就是对安全高效的软件测试方法的需求。传统的汽车开发偏向使用硬件原型与真实ECU进行软件测试&#xff0c;但由于硬件设备往往在开发周期的中后阶段才生产完成&#xff0c;给汽车开发带来了成本与时间…

做OZON怎么选择物流,OZON物流Xingyuan

随着跨境电商的蓬勃发展&#xff0c;OZON作为俄罗斯领先的电商平台&#xff0c;吸引了大量中国卖家入驻。然而&#xff0c;物流作为跨境电商的关键环节&#xff0c;其选择对于卖家来说至关重要。本文将围绕“做OZON怎么选择物流”这一问题&#xff0c;深度解析OZON物流Xingyuan…

二分查找

题目链接 题目: 分析: 如果按照从头到尾的顺序一次比较, 每次只能舍弃一个元素, 效率是非常低的, 而且没有用到题目的要求, 数组是有序的因为数组是有序的, 所以如果我们随便找到一个位置, 和目标元素进行比较, 如果大于目标元素, 说明该位置的右侧元素都比目标元素大, 都可…

内网穿透--Frp-简易型(速成)-上线

免责声明:本文仅做技术交流与学习... 目录 frp项目介绍: 一图通解: ​编辑 1-下载frp 2-服务端(server)开启frp口 3-kali客户端(client)连接frp服务器 4-kali生成马子 5-kali监听 6-马子执行-->成功上线 frp项目介绍: GitHub - fatedier/frp: A fast reverse proxy…

什么是智慧校园信息平台?

智慧校园信息渠道是以物联网、云核算、大数据分析等新技术为核心技术&#xff0c;为校园供给一种才智型、数据化、网络化、协作型一体化的教育、科研、办理和生活服务的新式办理模式。那么一般的智慧校园信息渠道主要有哪些特色呢&#xff1f; 不同品牌的智慧校园信息渠道&…

【html5】03-新表单元素及属性

目录 1 引言 2 智能表单控件-type 3 表单属性 form input 5 答疑--解决required自定义提示信息 1 引言 HTML5引入了一系列新的表单输入类型&#xff0c;如email、url、number、range、date、time、datetime-local、month、week、search、color和tel等。这些新类型增强了表…

tiktok 算法分析

第一步&#xff1a; 先找到关键函数 第二步&#xff1a; 第三步&#xff1a; 初始化码表 第四步&#xff1a; 通过计算更新码表 第五步&#xff1a;

grafana + Prometheus + node-exporter + pushgateway + alertmanager的监控解决方案

业内比较著名的监控解决方案&#xff0c;据笔者所知&#xff0c;大概是三套&#xff1a; 一个是zabbix的解决方案&#xff0c;一个是prometheusgrafana&#xff0c;一个是ELK zabbix比较重&#xff0c;而且原生支持监控SNMP&#xff0c;自带一个仪表盘&#xff0c;不需要额外…

【Crypto】一眼就解密

文章目录 前言一眼就解密解题感悟 前言 Basic写累了&#xff0c;写写别的 一眼就解密 一眼md5试一试 小小flag 拿下&#xff01; 解题感悟 30秒搞定

第十八篇:探索非关系型数据库:从入门到实践

探索非关系型数据库&#xff1a;从入门到实践 1. 引言 1.1 非关系型数据库的崛起&#xff1a;背景与重要性 在过去的几十年里&#xff0c;关系型数据库&#xff08;RDBMS&#xff09;一直在数据存储和管理领域占据主导地位。其严谨的结构化数据模型以及强大的事务处理能力&am…

Lin网络一:DHCP与FTP

目录 1、了解DHCP服务 2、使用DHCP服务有哪些好处 3、DHCP的分配方式 4、DHCP的租约过程 客户机请求IP地址 服务器确定租约 重新登陆 上述总结 配置&#xff1a; 5、传输文件到Linux服务器的常用工具: 1、FTP 文件传输协议 2、FTP传输模式&#xff1a; 3、FTP控制…

力扣第206题-反转链表

反转链表的效果示意图 要改变链表结构时&#xff0c;通常加入一个创建的临时头结点会更容易操作 时间复杂度&#xff1a;遍历2遍&#xff0c;2n 空间复杂度&#xff1a;额外创建一个栈&#xff0c;n (空间创建一个数组长度最大为5000&#xff0c;你说这个数组是栈也可以&…

基于svm的水果识别

1、程序界面介绍 该程序GUI界面包括待检测水果图片加载、检测结果输出、清空可视化框等。其中包括训练模型、加载图片、重置、识别检测按钮。 程序GUI界面 识别玉米识别西瓜 分类器识别水果基本原理&#xff1a; 由于每种水果的外形存在很大差异&#xff0c;比如西瓜与玉米&…

C语言/数据结构——每日一题(设计循环队列)

一.前言 上一次我们分享了关于队列的基本实现——https://blog.csdn.net/yiqingaa/article/details/139033067?spm1001.2014.3001.5502 现在我们将使用队列知识来解决问题——设计循环队列&#xff1a;https://leetcode.cn/problems/design-circular-queue/submissions/533299…

深度神经网络——什么是自动编码器?

自动编码器 自动编码器&#xff08;Autoencoders&#xff09;是无监督学习领域中一种重要的神经网络架构&#xff0c;它们主要用于数据压缩和特征学习。 自动编码器的定义&#xff1a; 自动编码器是一种无监督机器学习算法&#xff0c;它通过反向传播进行训练&#xff0c;目标…

【从C++到Java一周速成】章节10:封装、继承、方法的重写、多态

章节10&#xff1a;封装、继承、方法的重写、多态 【1】封装1.高内聚&#xff0c;低耦合2.代码层面的体现 【2】继承【3】方法的重写【4】多态 【1】封装 1.高内聚&#xff0c;低耦合 高内聚&#xff1a;类的内部数据操作细节自己完成&#xff0c;不允许外部干涉&#xff1b;…