Web后端开发概述环境搭建项目创建servlet生命周期

Web开发概述

web开发指的就是网页向后再让发送请求,与后端程序进行交互

web后端(javaEE)程序需要运行在服务器中

这样前端才可以对其进行进行访问

什么是服务器?

解释1:

服务器就是一款软件,可以向其发送请求,服务器会做出一个响应.可以在服务器中部署文件,让他人访问

解释2:

也可以把运行服务器软件的计算机也可以称为服务器

web交互流程图如下:

在这里插入图片描述

web服务器指的是驻留在因特网上某种类型计算机的程序

可以向浏览器等web客户端提供文档,也可以放置网站文件,让全世界哦浏览;它是一个容器,是一个链接用户与程序之间的中间件

web服务器有很多,流行的web服务器有Tomcat,WebSphere,WebLogic,Jboss

在小型的应用系统或者有特殊需求的系统重视,可以使用一个免费的Web服务器:Apache的Tomcat,该服务器支持全部JSP以及Servlet规范

APacha软件基金会(Apache Software Foundation)是专门为运作一个开源软件项目的Apache的团体提供支持的非盈利性组织

Web开发环境搭建

服务器软件安装

Tomcat

Tomcat是一个基于Java的HTTP服务器,它是Sun通过Java Community Process开发并用servlet和JavaServer Page(JSP)技术的正式参考实现。Tomcat的安装和配置都需要一定的步骤,但是在Eclipse集成环境下,可以更加方便地进行开发和调试

首先到官网下载tomcat安装包

Tomcat官方站点:http://tomcat.apache.org

安装JDK

配置环境变量

首先打开环境变量页面

在这里插入图片描述

新建一个JAVA_HOME系统变量

在这里插入图片描述

将JAVA_HOME的路径设置为bin的上一级路径

若是没配置过Path中的java\bin路径

则需要打开Path

在这里插入图片描述

将java的bin路径配置在其中

在这里插入图片描述

解压Tomcat压缩文件
Tomcat文件结构

在这里插入图片描述

在这里插入图片描述

在Tomcat文件中的bin目录中 双击startup.bat命令启动

在这里插入图片描述

出现这个页面就代表启动成功

在这里插入图片描述

访问

自己的ip地址 :8080

在这里插入图片描述

更改启动端口地址

打开conf文件夹

在这里插入图片描述

打开server.xml文件

在这里插入图片描述

找到该区域,将port改为想要的端口号

在这里插入图片描述

创建并发布web项目

在idea中集成Tomcat(修改代码后,会自动将项目重新部署到Tomcat中)

首先创建一个javaEE项目

在这里插入图片描述

勾选web profile选项 命名创建

在这里插入图片描述

创建完成后需要配置Tomcat

打开configurations页面,选择Tomcat中的local,在右边文件夹中选择Tomcat文件里bin的上一级,并对该配置进行改名,取消勾选After launch

在这里插入图片描述

在这里插入图片描述

创建完成后只需要点击绿色三角形就能启动

在这里插入图片描述

重写java中的方法

在java文件夹中创建包,在包中创建一个类继承HttpServlet

在这里插入图片描述

/*
创建一个类 继承HttpServlet ,这个类就是一个javaEE程序
在web.xml文件配置,想歪提供一个访问地址,就可以在浏览器中访问,找到对应的程序
*/
public class DemoServlet extends HttpServlet {/*
无参构造方法,默认是存在,初始化创建的对象
只被调用一次(始终只创建一个对象),在第一次访问servlet程序由服务器创建执行
*/public  DemoServlet(){System.out.println("无参构造方法");}/*init()初始化,在构造方法执行完成后,立即被调用执行完成一些servlet程序的初始化(例如,读取配置文件中参数)也是只执行一次init方法在没有需要初始化操作时,可以不用重写,服务器会调用父类中的init方法*/@Overridepublic void init(ServletConfig config) throws ServletException {System.out.println("init");}/*service()用来接受前端请求,为前端提供服务每次前端发送的请求都会调用service(),多次调用HttpServletRequest  rea: 表示请求对象,前端提交过来所有的数据都由服务器封装在此对象中HttpServletResponse resp : 表示相应对象,用来向前端相应数据*/@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("service");}/*destroy(),当服务器关闭的时候.如果程序想要最终执行某些操作,就可以在destroy方法中实现在没有最终执行的一一些操作时,也可以不用重写,但是服务器会调用父类中空的destroy方法*/@Overridepublic void destroy() {System.out.println("destory");}}

servlet对象的生命周期

servlet对象在第一次访问servlet程序时由服务器创建

初始化阶段:在构造方法执行完成后,调用init方法执行一些初始化操作

服务阶段:每一次请求调用service方法

销毁阶段:服务器关闭时,销毁servlet对象,并且在销毁对象时会自动调用destroy方法,执行一些最终操作


之后还需要在webapp中的WEB-INF文件夹里打开web.xml

配置servlet程序和访问地址

在这里插入图片描述

   <!--.xml文件:ml结尾,是一种标记语言,设计的目的是用来在项目中存储配置信息的,制定好可以使用那些标签即可web.xml文件:存储web后端项目配置信息,在服务器启动时由服务器加载读取的--><!-- 配置servlet程序,把我们开发的servlet程序注册对服务器,有服务器启动时加载,在第一次访问时,由服务器创建对象--><servlet><servlet-name>demo</servlet-name>--> <!-- 定义对象名  --><servlet-class> com.ffyc.dormServer.web.DemoServlet</servlet-class>  <!-- 注册servlet程序 --><init-param>   <!-- 向servlet中配置一些参数 --><param-name>count</param-name><param-value>10</param-value></init-param></servlet><!--为servlet配置访问地址--><servlet-mapping><servlet-name>demo</servlet-name>  <!-- 为指定name的servlet程序配置访问地址 --><url-pattern>/demo</url-pattern> <!-- 配置的供额外 --></servlet-mapping>

注意,在配置servlet访问地址时,url-pattern内部的地址前需要加/

配置完成后访问直接用

ip地址:端口/项目名/demo(访问地址)

此时打开控制台就会发现调用了之前重写的方法

在这里插入图片描述

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

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

相关文章

MySQL:MySQL总结

文章目录 MySQL思维导图基础实际在 Innodb 存储引擎中&#xff0c;会用一个特殊的记录来标识最后一条记录&#xff0c;该特殊的记录的名字叫 supremum pseudo-record &#xff0c;所以扫描第二行的时候&#xff0c;也就扫描到了这个特殊记录的时候&#xff0c;会对该主键索引加…

OpenCV 张正友标定法(二)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 在之前的博客OpenCV 张氏标定法中,我们没有考虑镜头畸变等因素,因此计算出的内参与外参均是理想情况下的数值,而如果我们考虑到镜头的畸变: 我们就需要考虑使用最小二乘法最小化像素坐标的重投影误差(上述所求…

重温react-10(函数组件和类组件的ref获取方式)

App.js的代码 06是函数组件 07是类组件 import React, { useEffect, useRef } from react; import LearnFunction06 from ./LearnFunction06; // 函数组件和类组件的ref使用方式 import LearnFunction07 from ./LearnFunction07; // 函数组件和类组件的ref使用方式 export de…

dell服务器RAID5磁盘阵列出现故障的解决过程二——热备盘制作与坏盘替换过程

目录 背景方案概念全局热备&#xff08;Global Hot Spare&#xff09;&#xff1a;独立热备&#xff08;Dedicated Hot Spare&#xff09;&#xff1a; 过程8号制作成热备清除配置制作独立热备热备顶替坏盘直接rebuild 更换2号盘2号热备 注意注意事项foreign状态要先清除配置 背…

【Mac】Boxy SVG for Mac(矢量图编辑器)及同类型软件介绍

软件介绍 Boxy SVG 是一款功能强大的矢量图形编辑器&#xff0c;专门为 macOS 平台设计开发。它主要用于创建和编辑 SVG&#xff08;可缩放矢量图形&#xff09;文件&#xff0c;是设计师和开发者们制作矢量图形的理想工具。 以下是关于 Boxy SVG 的主要特点和功能&#xff1a…

Rural Access Index (RAI)农村通达指数

农村通达指数&#xff08;RAI&#xff09; 简介 农村通达指数&#xff08;RAI&#xff09;是全球交通领域最重要的发展指标之一。它是目前可持续发展目标中唯一一个直接衡量农村通达性的指标&#xff0c;通过评估农村人口的四季道路通达性来实现。在 2015 年作为可持续发展目…

路由LLM:优化模型调用的成本与效率

引言 在最近的一些视频和讨论中&#xff0c;我们经常提到使用较便宜和较快的模型来替代一些昂贵的大型语言模型&#xff08;LLM&#xff09;。这种方法的一个主要原因是看到许多人在不必要的场合调用如GPT-4或Claude Opus等高级模型&#xff0c;从而浪费了大量资金。而事实上&…

IDEA 编译单个Java文件

文章目录 一、class文件的生成位置二、编译单个文件编译项目报错Error:java: 无效的源发行版: 8 一、class文件的生成位置 file->project structure->Modules 二、编译单个文件 选中文件&#xff0c;点击recompile 编译项目报错 Error:java: 无效的源发行版: 8 Fi…

2024最新PyCharm安装教程(附激活码)

今天讲解的是PyCharm安装教程 一、软件简介 PyCharm是一款Python IDE&#xff0c;其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具&#xff0c;比如&#xff0c; 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等等。此外…

字符串和正则表达式踩坑

// 中石化加油卡号格式&#xff1a;以 100011 开头共19位public static final String ZHONGSHIYOU_OIL_CARD_PATTERN "^100011\\d{13}$";// 中石油加油卡号格式&#xff1a;以90、95、70开头共16位public static final String ZHONGYOU_OIL_CARD_PATTERN "^(9…

使用 urllib OpenSSL 时遇到的问题及解决

题意&#xff1a; ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1, currently the ssl module is compiled with LibreSSL 2.8.3 当前使用的 urllib3 版本&#xff08;v2.0&#xff09;仅支持 OpenSSL 1.1.1 或更高版本&#xff0c;但你的 Python 环境中的 ssl 模块…

安装opencv-python出错,怎么办?

安装opencv-python出错 解决方法&#xff1a; 具体版本号&#xff0c;python3.6对应的就是4.3.0.38 pip install opencv-python4.3.0.38 -i https://pypi.tuna.tsinghua.edu.cn/simple

《梦醒蝶飞:释放Excel函数与公式的力量》8.5 COUNTIFS函数

8.5 COUNTIFS函数 COUNTIFS函数是Excel中的一种多条件计数函数&#xff0c;用于统计同时满足多个条件的单元格数量。它是COUNTIF函数的增强版&#xff0c;允许在一个函数中使用多个条件。 8.5.1 函数简介 COUNTIFS函数用于统计符合多个条件的单元格数量。它在数据分析中非常…

Sentinel链路流控模式失效的解决方法

解决方法 1、在pom.xml中增加sentinel-web-servlet的依赖&#xff0c;我使用的版本是1.7.1 <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-web-servlet</artifactId> </dependency>2、在项目中添加一个FilterCon…

uniapp应用如何实现传感器数据采集和分析

UniApp是一种跨平台的应用开发框架&#xff0c;它支持在同一份代码中同时开发iOS、Android、H5等多个平台的应用。在UniApp中实现传感器数据采集和分析的过程可以分为以下几个步骤&#xff1a; 引入相关插件或库 UniApp通过插件或库的形式扩展功能。对于传感器数据采集和分析&…

MySQL 9.0 GA 来了!

2024 年 7 月 2 日&#xff0c;MySQL 9.0 GA 版本正式发布。还记得 MySQL 8.0 版本正式发布于 2018 年 4 月 19 日&#xff0c;中间经过了 6 年之久&#xff0c;MySQL 官方终于发布了大版本号变更得 9.0 版本&#xff0c;接下来由我给大家介绍 MySQL 在 9.0 版本中有哪些新的变…

C++学习笔记---POCO库

在Windows系统中安装POCO 1&#xff09;安装OpenSSL POCO编译安装依赖OpenSSL&#xff0c;如果未安装OpenSSL则应该先安装OpenSSL。 假设将OpenSSL安装在C:\OpenSSL-Win64&#xff0c;将C:\OpenSSL-Win64、C:\OpenSSL-Win64\lib添加到PATH环境变量中2&#xff09;安装POCO 将p…

C++11新特性【下】{lambda表达式、可变模板参数、包装器}

一、lambda表达式 在C98中&#xff0c;如果想要对一个数据集合中的元素进行排序&#xff0c;可以使用std::sort方法。如果待排序元素为自定义类型&#xff0c;需要用户定义排序时的比较规则&#xff0c;随着C语法的发展&#xff0c;人们开始觉得上面的写法太复杂了&#xff0c…

1-讯飞星火大模型API调用示例解析

1官网链接 比赛官网&#xff1a;2024 iFLYTEK A.I.开发者大赛-讯飞开放平台 (xfyun.cn)&#xff1b;控制台官网&#xff1a;控制台-讯飞开放平台 (xfyun.cn)&#xff1b; 2星火模型python调用示例 示例链接&#xff1a;https://xfyun-doc.xfyun.cn/lc-sp-PythonDemo-17163704…

了解MySQL【事务】的功能:确保数据完整性的关键技术

在数据库管理中&#xff0c;事务是确保数据完整性和一致性的核心机制。特别是对MySQL这样广泛应用的开源数据库系统&#xff0c;掌握事务的使用至关重要。在这篇文章中&#xff0c;我们将全面探讨MySQL事务的工作原理、ACID属性、隔离级别以及最佳实践&#xff0c;从而帮助开发…