web后端(javaEE)开发——servlet

目录

一、web后端开发概述

二、web后端开发环境搭建

1.安装服务器软件

2.安装JDK

三、创建web后端项目

1.创建项目

2.修改设置

3.*在IDEA中集成Tomcat*

四、Servlet创建和应用

1.概述

2.Servlet程序创建与配置

3.分析Servlet程序结构


一、web后端开发概述

        web开发,就是指从网页中向后端程序发送请求,与后端程序进行交互。

        而web服务器的定义也很广,一般人们认为服务器就是运行服务器软件的计算机设备。但这里我们一般指的是运行在计算机上的软件,浏览器可以发送请求,由服务器做出响应。也可以在服务器中部署文件,供用户访问。

        web服务器有很多,目前流行的有Tomcat、WebSphere、WebLogic......

二、web后端开发环境搭建

1.安装服务器软件

进入官网下载Tomcat:Apache Tomcat® - Welcome!

注:tar.gz文件是Linux操作系统下的安装版本

       ● zip文件是Windows系统下的压缩版本 

2.安装JDK

(1)配置两个环境变量——path、JAVA_HOME

        这里我们介绍JAVA_HOME环境变量的配置。桌面找到此电脑,右键点击属性,在弹窗中选择高级系统设置,点击环境变量

注:如果有关于java的JDK安装和path环境配置相关问题,请移步至我的第二篇博客

《一看就会,手把手教学Java环境搭建!_安装java环境-CSDN博客》

(2)安装Tomcat

Tomcat目录介绍:

(3)启动服务器    

双击 bin 目录下的 startup.bat 文件:
        输入 http://localhost:端口号
        或http:127.0.0.1:端口号
        或局域网ip:端口号

        例如这里我输入该网址 :127.0.0.1:8080

注:只有在服务器启动时,我们才能远程访问他

(4)改变端口号

        像上面的网址最后一部分 :8080 有些人会发现他的网页无法正常访问,这很有可能是端口号被占用导致。这里我们推荐下载一款软件:Notepad++ (yingtingw.cn) 

        在我看来,该软件对程序员来说比起记事本好用一万倍,我们通过该软件的打开方式打开我们解压好的Tomcat安装包里的conf目录的server.xml文件

在第69行修改自己心仪的端口号(范围在1~65535),这里我改为了8088

三、创建web后端项目

1.创建项目

        首先在IDEA中创建一个新项目,左侧选择Java Enterprise

        勾选 Web Profile 

        创建项目名字

2.修改设置

        注释或删掉pom.xml中有关 org.junit 的部分

3.*在IDEA中集成Tomcat*

        最后我们点击Apply应用,OK即可

四、Servlet创建和应用

1.概述

        ● Servlet是Server Applet的简称,意思为用Java编写的服务器端的程序. 它运行在web服务器中,web服务器负责Servlet和客户的通信以及调用Servlet方法。
        ● Servlet的作用:
            1.接收用户发送的请求数据
            2.调用其他的java程序来处理请求
            3.根据处理结果,将结果响应给客户端

2.Servlet程序创建与配置

        创建一个类继承javax.servlet.http包下的HttpServlet,写出该类的午餐构造,重写如下三个方法

在web.xml中配置Servlet, <servlet>结构不需要改动,只改其中的黑体字部分

        这时我们就可以启动该服务器,并在浏览器中进行访问(127.0.0.1:端口号/项目名/配置的变量名)如图就可以访问到了,并在控制台进行展示

3.分析Servlet程序结构

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

因此我们可以得知一个Servlet程序的执行周期

Servlet对象生命周期   
       创建:
          第一访问Servlet程序时,由服务器创建
       初始化: 
          在构造方法执行完成后,调用init()执行一些初始化操作
        服务:
           每次请求调用service()
        销毁: 服务器关闭时,会销毁servlet对象,
              并且在销毁servlet对象时,会自动调用destroy(),执行一些最终操作

        以上就是关于一个最基本的web后端Servlet程序的创建应用过程,有关前后端交互的更多相关操作敬请期待接下来的更新!!!

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

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

相关文章

Flutter ListView 实现不同样式 item

我们在实际开发中会创建显示不同类型内容的列表。以下是使用 Flutter 创建此类结构的方法&#xff1a; 1. 创建包含不同类型项目的数据源。 2. 将数据源转换为小部件列表。 创建包含不同类型项目的数据源 项目类型 要表示列表中不同类型的项目&#xff0c;请为每种类型的项目…

基于STM32开发的智能水箱液位控制系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化液位监测与控制水泵控制与状态显示Wi-Fi通信与远程监控应用场景 家庭用水系统的液位控制工业水箱的液位管理常见问题及解决方案 常见问题解决方案结论 1. 引言 智能水箱液位控制系…

初学Python如何快速入门(内附详细攻略),一文讲清

目前python可以说是一门非常火爆的编程语言&#xff0c;应用范围也非常的广泛&#xff0c;工资也挺高&#xff0c;未来发展也极好。 Python究竟应该怎么学呢&#xff0c;我自己最初也是从零基础开始学习Python的&#xff0c;给大家分享Python的学习思路和方法。一味的买书看书…

C语言基础(十二)

指针的用法&#xff1a; 测试代码1&#xff1a; #include "date.h" #include <stdio.h> // 函数声明&#xff0c;用于交换两个整数的值&#xff0c;通过指针传递 void swap(int *a, int *b); int main() { int time getTime();int nums[3] {3, 1, 4};…

【Python】列表和元组

文章目录 概念创建列表访问下标通过下标来修改列表元素获取列表长度下标可以写成负数 切片操作省略后边界省略前边界省略前后边界带有步长的切片 遍历列表元素使用 for 循环使用 for 循环访问下标的方式使用 while 循环 新增元素在末尾新增在任意位置新增 查找元素判定元素是否…

ESP RainMaker OTA 自动签名功能的安全启动

【如果您之前有关注乐鑫的博客和新闻&#xff0c;那么应该对 ESP RainMaker 及其各项功能有所了解。如果不曾关注&#xff0c;建议先查看相关信息&#xff0c;知晓本文背景。】 在物联网系统的建构中&#xff0c;安全性是一项核心要素。乐鑫科技对系统安全给予了极高的重视。ES…

【C# 】使用List<实体类>

1. 使用List<实体类> 要在C#中使用List<EntityTemp>并实现查找数据输出&#xff0c;首先需要定义EntityTemp类&#xff0c;并创建一个List<EntityTemp>类型的列表。然后&#xff0c;你可以使用LINQ或其他方法来查找和输出数据。 假设EntityTemp类具有一个…

Transformer总结(三):组件介绍(位置编码,多头注意,残差连接,层归一化,基于位置的前馈网络)

文章目录 一、位置编码1.1 介绍1.2 简单探讨 二、多头注意力2.1 一般的多头注意力机制2.2 解码器中的掩码多头注意力机制&#xff08;Look-ahead Mask&#xff09; 三、残差连接四、层归一化4.1 对比不同的Normalization4.2 Batch Normalization的实现4.3 Layer Normalization的…

Variomes:支持基因组变异筛选的高召回率搜索引擎

《Bioinformatics》2022 Variomes&#xff1a; https://candy.hesge.ch/Variomes Source code&#xff1a; https://github.com/variomes/sibtm-variomes SynVar&#xff1a; https://goldorak.hesge.ch/synvar 文章摘要&#xff08;Abstract&#xff09; 动机&#xff08;Mot…

电子电气架构--- 智能汽车电子架构的核心诉求

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

8.23工作感悟 关于div样式

一、关于div 样式嵌套在el-dialog框里面,如何让div框里面的东西&#xff0c;例如图片的大小不超出dialog框 首先对div框进行一个自定义class ‌div的class属性‌用于为div元素指定一个或多个类名&#xff0c;类名之间用空格分隔。类名可以在CSS样式表中使用&#xff0c;以定…

统计Statistics | AnyLogic 帮助

统计Statistics | AnyLogic 帮助 统计对象计算一系列数据样本的统计信息&#xff08;平均值、最小值、最大值等&#xff09;&#xff0c;数据类型为double。 根据数据被视为离散还是连续&#xff0c;对象的工作原理不同。 演示模型&#xff1a; 观测次数的统计函数打开AnyL…

【经验】linux下cuda的更换

linux下cuda的更换 查看当前cuda和cudnn的版本 nvcc -Vcudnn版本 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2下载对应版本的cuda 查看驱动版本535.54.03 下载对应的cuda版本 版本查看https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.htm…

内存管理篇-02内存硬件电路和接口

1. 内存硬件实现机制 通过D触发器构建寄存器和内存的结构对比,这里主要先表达sram复杂&#xff0c;dram简单。 2. sram和ddr sdram结构图对比 主要是想对比sram和dram在和CPU连接过程的差异。sram需要的地址线较多&#xff0c;dram需要的较少&#xff0c;但是需要多次发送&…

货车制造5G智能工厂工业物联数字孪生平台,推进制造业数字化转型

货车制造5G智能工厂工业物联数字孪生平台&#xff0c;推进制造业数字化转型。随着5G技术的飞速发展与工业物联网的深度融合&#xff0c;货车制造5G智能工厂工业物联数字孪生平台应运而生&#xff0c;它不仅重新定义了生产模式&#xff0c;更以强大的技术驱动力&#xff0c;推动…

[数据集][目标检测]电力场景输电线防震锤检测数据集VOC+YOLO格式2721张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2721 标注数量(xml文件个数)&#xff1a;2721 标注数量(txt文件个数)&#xff1a;2721 标注…

武汉流星汇聚:亚马逊领跑全球电商,中国卖家迎来前所未有机遇窗口

在数字经济的浪潮中&#xff0c;亚马逊如同一艘巨轮&#xff0c;乘风破浪&#xff0c;引领着全球电商行业的航向。其每月近30亿次的访问量&#xff0c;不仅彰显了其在全球市场的强大影响力&#xff0c;更为中国卖家提供了前所未有的发展机遇。在这个平台上&#xff0c;中国卖家…

Unity URP Shader 修改深度让人物不再被地面遮挡

Unity URP Shader 修改深度让人物不再被地面遮挡 前言项目场景布置代码编写 前言 遇到一个小问题&#xff0c;人物总是被XY平面的地面遮挡&#xff0c;于是在Shader中改一下深度输出&#xff0c;这样地面再也不会挡住人物了。 项目 场景布置 将人物放到XY平面的后面 配置S…

【论文分享】Graviton: Trusted Execution Environments on GPUs 2018’OSDI

目录 AbstractIntroductioncontributions BackgroundGPUSoftware stackHardwareContext and channel managementCommand submissionProgramming modelInitializationMemory allocationHost-GPU transfersKernel dispatch Sharing Intel SGX Threat ModelOverviewGraviton Archi…

设计模式笔记01(java版)

文章目录 设计模式概述学习设计模式的必要性设计模式分类创建型模式结构型模式行为型模式 UML类图概述类图的作用类图表示法类的表示方式类与类之间关系的表示方式1&#xff0c;单向关联2&#xff0c;双向关联3&#xff0c;自关联聚合关系组合关系依赖关系继承关系实现关系 软件…