JavaWeb Sevelet学习 创建Sevelet程序

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页面)。

   @Overrideprotected 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.mzph.cn/diannao/14415.shtml

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

相关文章

今日arXiv最热大模型论文:LoRA又有新用途,学得少忘得也少,成持续学习关键!

自大模型&#xff08;LLM&#xff09;诞生以来&#xff0c;苦于其高成本高消耗的训练模式&#xff0c;学界和业界也在努力探索更为高效的参数微调方法。其中Low-Rank Adaptation&#xff08;LoRA&#xff09;自其诞生以来&#xff0c;就因其较低的资源消耗而受到广泛关注和使用…

Spring MVC八股文面试题及参考答案(4万字长文)

目录 什么是Spring MVC? 解释MVC模式及其在Spring MVC中的实现。 Spring MVC和Struts的区别是什么?

瑞芯微RV1126——交叉编译与移植

一、搭建这个nfs服务挂载 (1) sudo apt install nfs-kernel-server (2) 然后在你的ubuntu创建一个nfs共享目录&#xff1a; (3) sudo /etc/init.d/nfs-kernel-server restart 重启nfs服务 (4) 修改配置文件: sudo vim /etc/exports 在这个配置文件里面添加&#xff1a;/hom…

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

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

50.WEB渗透测试-信息收集-CDN识别绕过(3)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;49.WEB渗透测试-信息收集-CDN识别绕过&#xff08;2&#xff09; 关于cdn的识别方法内容…

Leecode热题100--73:矩阵置零

题目&#xff1a; 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 C&#xff1a; 思路&#xff1a; 可以使用两个数组来记录哪些行和列需要被置零。 首先&#xff0c;我们遍历整个矩阵&#xff0c;…

设计模式--享元模式

引言 享元模式&#xff08;Flyweight Pattern&#xff09;作为一种高效节省内存的结构型设计模式&#xff0c;其核心在于通过共享技术有效支持大量细粒度对象的重用&#xff0c;从而减少内存占用&#xff0c;提高系统性能。特别是在处理大量相似对象的场景下&#xff0c;享元模…

智慧监狱人员行为识别监测系统

智慧监狱人员行为识别监测系统是基于神经网络AI视觉智能分析算法开发的技术。智慧监狱人员行为识别监测系统利用现场监控摄像头&#xff0c;通过对人体活动骨架的结构化分析&#xff0c;根据人体运动轨迹定义了多种异常行为&#xff0c;从而实现对监舍内的静坐不动、离床、攀高…

Tron节点监控脚本使用说明

文章目录 一、配置二、脚本编写2.1 Python脚本--监控节点是否正在同步2.1.1 pyton脚本脚本示例2.1.2 使用说明2.2.3 脚本监控内容说明 2.2 Shell脚本--综合情况监控2.2.1 shell脚本示例2.2.2 使用说明2.2.3 脚本监控内容说明 最近搭建了TRON节点&#xff0c;为了防止节点在生产…

Mixiy(米思齐)安装

Mixiy(米思齐)安装 官网地址&#xff1a;爱上米思齐 打开官网&#xff0c;选择下图的软件进行下载 复制提取码&#xff0c;点击链接跳转到网盘进行下载&#xff0c;选择(RC4完整版) 下载完成后&#xff0c;解压到合适的位置&#xff0c;进入文件夹&#xff0c;双击Mixly.exe即…

Docker 部署Jenkins

1、运行镜像 docker run --namejenkins \--restartalways \--privilegedtrue \-u root \-p 8080:8080 \-p 50000:50000 \-v /home/docker/jenkins/jenkins_home:/var/jenkins_home \-v /usr/bin/docker:/usr/bin/docker \-v /var/run/docker.sock:/var/run/docker.sock \-e TZ…

【Crypto】MD5

文章目录 MD5解题感悟 MD5 提示的很明显MD5 小小flag&#xff0c;拿下&#xff01; 解题感悟 没啥感悟…

Java输入与输出详解

Java输入和输出 前言一、Java打印Hello World二、输出到控制台基本语法代码示例格式化字符串 三、从键盘输入读入一个字符正确写法 使用 Scanner 读取字符串/整数/浮点数使用 Scanner 循环读取 N 个数字 前言 推荐一个网站给想要了解或者学习人工智能知识的读者&#xff0c;这…

使用 Java 和 MyBatis 实现动态排序的多表查询

相关 java实现一个根据字段和排序方式进行排序 java实现自定义排序 自定义动态排序 前言 在Web开发中&#xff0c;前端通常会传递一些参数来决定数据的排序方式&#xff0c;例如排序字段和排序方向。本文将展示如何在 Java 项目中结合 MyBatis 实现动态排序&#xff0c;尤其…

MySQL-性能分析

1、数据库服务器的优化步骤 2、查看系统性能参数 可以使用show status语句查询一些MySQL数据库服务器的性能参数 执行频率语法格式&#xff1a;show [ global | session ] status like 参数 &#xff1b;常用性能参数如下所示 参数名说明connection连接MySQL服务器的次数upti…

Autodesk 3ds Max下载,3ds MAX 2024三维建模渲染软件安装包下载安装

3ds MAX中文版&#xff0c;其强大的功能和灵活的操作为广大用户提供了无限的创意空间&#xff0c;使得高质量动画、最新游戏、设计效果等领域的制作需求得以完美满足。 ​ 作为一款三维建模软件&#xff0c;3ds MAX中文版具备极高的建模精度和渲染质量。它支持多种建模方式&am…

【Fiddler抓包工具】第四节.断点设置和弱网测试

文章目录 前言一、断点设置 1.1 全局断点 1.2 局部断点 1.3 打断点的几种常用命令 1.4 篡改响应报文二、弱网测试 2.1 网络限速 2.2 精准限速总结 前言 一、断点设置 1.1 全局断点 特点&#xff1a; 中断Fiddler捕获的所有请求&#xff0c;包括…

记录一次prometheus因时区不同导致的无法获取数据问题

一、故障出现原因 prometheus机器压力过大&#xff0c;内存耗尽&#xff0c;负载飙高&#xff0c;导致无法登录&#xff1b; 于是从公有云web界面进行重启&#xff0c;重启后内存还是不足&#xff0c;负载很快升高&#xff1b; 对机器进行配置变更&#xff0c;由4C8G升级为4…

在链游中,智能合约如何被用于实现游戏内的各种功能

随着区块链技术的快速发展&#xff0c;链游&#xff08;Blockchain Games&#xff09;作为区块链技术的重要应用领域之一&#xff0c;正逐渐展现出其独特的魅力和优势。其中&#xff0c;智能合约作为链游的核心技术之一&#xff0c;对于实现游戏内的各种功能起到了至关重要的作…

【C++初阶】—— 类和对象 (下)

&#x1f4dd;个人主页&#x1f339;&#xff1a;EterNity_TiMe_ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 类和对象 1. 运算符重载运算符重载赋值运算符重载前置和后置重载 2. 成员函数的补充3. 初始化列…