web后端(javaEE)开发——servlet

news2024/9/24 5:26:24

目录

一、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方法
    @Override
    public void init(ServletConfig config) throws ServletException {

        System.out.println("init");
    }
    /*
    service()接受前端请求,为前段提供服务,每次前端发送请求,就调用service
            HttpServletRequest req:表示请求对象,前端提交的数据,都有服务器封装到该对象中
            HttpServletResponse resp:表示响应对象,用来向前端响应数据
     */
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.out.println("service");
    }
    //服务器关闭时,想要执行的代码
    //没有需要执行的最终的操作时,也可以不用重写,服务器默认调用父类destroy()
    @Override
    public void destroy() {
        System.out.println("destroy");
    }
}

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

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

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

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

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

相关文章

Netty代码阅读

阅读Netty官方文档的时候&#xff0c;提到了Netty主要有三大核心&#xff0c;分别是buffer、channel、Event Model&#xff0c;接下来我们就从阅读Netty代码来理解这三大核心。 示例程序 先给出示例程序&#xff0c;方便自己也方便读者进行debug调试。 Server端代码 # Serv…

mysql启动报错“本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止”

我删除&#xff08;手动删除&#xff09;完 binlog 文件后&#xff0c;重新启动mysql服务报错如下&#xff1a; 查看错误日志可以看到 某个 binlog 文件找不到 打开 binlog.index 可以看到里面引用的正是这个文件 解决方法&#xff1a; 要么手动修改 binlog.index 文件&#…

【C++ Primer Plus习题】4.6

问题: 解答: #include <iostream> using namespace std;typedef struct _CandyBar {string brand;float weight;int calorie; }CandyBar;int main() {CandyBar snack[3] { {"德芙",2.1,20},{"箭牌",2.2,16},{"阿尔卑斯",2.3,18}};for (i…

【GNSS接收机】开源导航接收机

Pocket SDR Pocket SDR是一款基于软件无线电&#xff08;SDR&#xff09;技术的开源GNSS&#xff08;全球导航卫星系统&#xff09;接收机。它由名为“Pocket SDR FE”的RF前端设备、设备的一些实用程序以及用Python、C和C编写的GNSS-SDR AP&#xff08;应用程序&#xff09;组…

linux死锁问题和cpu使用率过高问题排查

1、问题共同点 死锁问题和cpu使用率过高都是需要我们找出对应的问题线程。 死锁问题需要我们找出哪两个线程出现了死锁情况。 cpu使用率过高需要我们找出哪个或哪些线程占用了大量的cpu。 2、命令排查 2.1、查看机器上的Java进程 jcmd或 jps2.2、查看对应Java进程的线程级别…

全文发布|SmartX 金融行业跑批类业务场景探索与实践合集

经过多年在⾦融⾏业的积累和发展&#xff0c;SmartX 已经赢得了 300 多家⾦融⽤户的信任。覆盖了银⾏、保险、证券、基⾦、期货和信托等主要⾦融细分领域。在这个过程中&#xff0c;我们从最初的单⼀超融合⼚商&#xff08;⼩规模起步/快速交付/按需灵活扩容/降低总拥有成本&am…

【Hot100】LeetCode—236. 二叉树的最近公共祖先

目录 1- 思路递归 自底向上 2- 实现⭐236. 二叉树的最近公共祖先——题解思路 3- ACM 实现 题目连接&#xff1a;236. 二叉树的最近公共祖先 1- 思路 递归 自底向上 ① 自底向上的逻辑的话 需要采用后续遍历的方式&#xff0c;最后处理中间结点 ② 递归 2.1 参数和返回值…

Verilog刷题笔记60

题目&#xff1a; Exams/2013 q2bfsm Consider a finite state machine that is used to control some type of motor. The FSM has inputs x and y, which come from the motor, and produces outputs f and g, which control the motor. There is also a clock input called …

openGL文本渲染FreeType常见问题

这里写自定义目录标题 源码下载及编译编译生成的dll及lib使用FreeTypeinclude头文件加载附加包含目录 lib文件加载添加lib文件位置添加lib文件下的lib名 字体使用代码编写代码初始化中文字体输出简单封装 存在问题列表问题1&#xff1a;无法打开stddef.h其他问题后续更新 源码下…

[JAVA]初识线程池及其基本应用

并发是伴随着多核处理器的诞生而产生的&#xff0c;为了充分利用硬件资源&#xff0c;诞生了多线程技术。但是多线程又存在资源竞争的问题&#xff0c;引发了同步和互斥的问题&#xff0c;JDK1.5推出的java.util.concurrent(并发工具包来解决这些问题) 在Java并发包中一个最核心…

光影漫游者:展览空间的新选择—轻空间

在展览业迅速发展的今天&#xff0c;展览空间的设计和应用方式也在不断进化。光影漫游者作为一种创新的移动展馆&#xff0c;凭借其卓越的性能和灵活的应用方式&#xff0c;迅速崭露头角。与传统建筑展示空间和其他类型的移动展馆相比&#xff0c;光影漫游者展现出了多项显著优…

(javaweb)springboot的底层原理

目录 一.配置优先级 二.Bean的管理 1.获取bean ​编辑​编辑 2.bean作用域 3.第三方bean 三.SpringBoot原理 自动配置原理 原理分析&#xff1a; conditional&#xff1a; 自动配置案例&#xff1a;&#xff08;自定义starter分析&#xff09; 总结 一.配置优先级 //命…

leetcode 891. Sum of Subsequence Widths

原题链接 The width of a sequence is the difference between the maximum and minimum elements in the sequence. Given an array of integers nums, return the sum of the widths of all the non-empty subsequences of nums. Since the answer may be very large, retu…

Linux--NAT,代理服务,内网穿透

目录 1.NAT 技术 NAT IP转换过程 2. NAPT&#xff08;NAT转化表&#xff09; NAT 技术的缺陷 3.内网穿透&&内网打洞 内网穿透 内网打洞 两者差别 4.代理服务器 正向代理 反向代理 NAT 和代理服务器 1.NAT 技术 之前我们讨论了, IPv4 协议中, IP 地址数量不…

yd云手机登录算法分析

yd云手机登录算法分析 yd云手机登录算法分析第一步&#xff1a;抓包-登录第二步&#xff1a;定位加密入口第三步&#xff1a;分析加密算法第四步&#xff1a;算法实现 yd云手机登录算法分析 在这篇文章中&#xff0c;我们将详细解析yd云手机的登录算法&#xff0c;涵盖从抓包到…

SpringBoot整合Mybatis,Junit (复现之前写的一个SSM项目)

引言 如下是之前写的一个SSM项目&#xff08;纯注解版&#xff09;&#xff0c;现在我们要把它改造成一个SpringBoot项目&#xff0c;以体现SpringBoot的方便。主要需要关注的文件已经用红框标出。 1.config文件夹里面的是Spring&#xff0c;SpringMvc&#xff0c;Mybatis的配…

机械学习—零基础学习日志(如何理解概率论7)

这里需要先理解伯努利试验。只有A与A逆&#xff0c;两种结果。 正态分布 再来一道习题~&#xff1a; 解析&#xff1a; 《概率论与数理统计期末不挂科|考研零基础入门4小时完整版&#xff08;王志超&#xff09;》学习笔记 王志超老师 &#xff08;UP主&#xff09;

【Python学习手册(第四版)】学习笔记20.1-迭代和解析(二)-生成器函数、表达式详解

个人总结难免疏漏&#xff0c;请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 本文会回顾迭代、列表解析、map&#xff0c;新学习生成器函数及其相关的生成器函数、表达式——这是用户定义的、按需产生结果的方式。较简单。 目录 回顾列表解…

软考-软件设计师(数据结构习题一)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

勇夺三项SOTA!北航爱诗科技联合发布灵活高效可控视频生成方法TrackGo!

论文链接&#xff1a;https://arxiv.org/pdf/2408.11475 项目链接&#xff1a;https://zhtjtcz.github.io/TrackGo-Page/ ★ 亮点直击 本文引入了一种新颖的运动可控视频生成方法&#xff0c;称为TrackGo。该方法为用户提供了一种灵活的运动控制机制&#xff0c;通过结合 masks…