热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaWeb《一》概念、服务器部署及servlet

🍎道阻且长,行则将至。🍓 本文是javaweb的第一篇,首先介绍了javaweb,然后进行了一个简单的web服务器部署
🍎道阻且长,行则将至。🍓


本文是javaweb的第一篇,首先介绍了javaweb,然后进行了一个简单的web服务器部署,把我的一个网页发布到了云端,且叫他小Sa,目前啥也没有,之后会使用各种技术栈完成对小Sa的升级。最后是一个servlet入门使用分析。
上一篇:小Sa使用了它
下一篇:敬请期待




目录

  • 一、JavaWeb的概念🍓
    • 1.JavaWeb技术栈
    • 2.Web的访问过程
  • 二、Web服务器🍎
    • 1.Tomcat相关
    • 2.web部署
    • 3.Maven创建Web项目
    • 4.发布到云
  • 三、Servlet🍇
    • 1.Servlet类的使用入门
    • 2.Servlet程序执行流程
    • 3.Servlet的生命周期




一、JavaWeb的概念🍓

Web是全球广域网,也称为万维网(www),就是我们通过浏览器访问的网站。而JavaWeb是用Java技术来解决web互联网领域的技术栈。


1.JavaWeb技术栈


  • B/S架构
    B/S 即 Browser/Server,浏览器/服务器模式,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器。
    这种架构的好处就是易于维护升级:服务器端升级后,客户端无需任何部署就可以使用到新的版本。

  • 静态资源
    主要是页面的展示:HTML、CSS、Javascript、图片等。说这些是静态的,并不是只内容不会动,而是说所有的人看到的内容是一模一样。就像在CSDN中每个人有个账户,登录进去有各自不同的内容。

  • 动态资源
    动态资源主要包含Servlet、JSP等,主要用来负责逻辑处理。这个过程中又会访问一些数据,这些数据就是来自于数据库。

  • 数据库
    主要负责存储数据。

  • Web服务器
    负责解析 HTTP 协议,解析请求数据,并发送响应数据。

  • HTTP
    HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
    参考HTTP数据格式


2.Web的访问过程

在这里插入图片描述



二、Web服务器🍎

Web服务器是安装在服务器端的一款软件,例如tomcat,把我们写的Web项目部署到Tomcat服务器软件中,服务器软件启动后,部署在Web服务器软件中的页面就可以直接通过浏览器来访问了。
有人可能说我写好的一个html网页不需要部署直接可以在浏览器浏览。其实这只是在你自己的浏览器阅读,你不能再其他设备上这样正常的浏览;而部署到服务器上的是可以在其他设备访问,在同一个局域网下你可以用手机浏览器通过主机ip:端口号加目录项浏览这个网页。


1.Tomcat相关

Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范。
在这里插入图片描述
Tomcat就是这么一只有点奇怪的猫~~
我们可以从Tomcat官网下载改软件解压就能使用。下载解压完成后就算是安装成功了,启动文件在bin文件夹,conf是配置文件夹,包括端口设置,webapps就是存放你的web项目的文件夹。
在这里插入图片描述
打开bin文件夹,下面这两个就是启动和关闭文件。
在这里插入图片描述

如果启动出错检查你的端口情况、jdk环境配置(这个java用的没问题一般不会出错)。
关闭服务器的时候你也可以选择在控制台通过ctrl+C,尽量不直接关闭控制台窗口。


2.web部署

将web项目文件放置到webapps目录下,就会自动部署完成。也可以把项目打包为war包,然后将war包放到Webapps目录下,Tomcat会自动解压缩war文件完成部署。

3.Maven创建Web项目


在IDEA中创建Maven Web项目

我简单写了一个http,暂且叫他小Sa吧,之后我想把这个页面部署进去。

<html>
<head><link rel&#61;"shortcut icon" href&#61;"img/pic1.png"><title>Super algorithmtitle><meta charset&#61;"UTF-8">
head>
<body>
<img src&#61;"img/pic1.png">br>
<font color&#61;#5f9ea0>Super algorithm&#96; blog ~_~font>br>
<font >本站正在建设中&#xff0c;可以点击按键进入临时站点C~font>br>
<input type&#61;"button" value&#61;"点我进行跳转CSDN" style&#61;"width:240px;height:130px" onclick&#61;"a()"> br>
body>
<script>(function (doc, win) {var docEl &#61; doc.documentElement,resizeEvt &#61; &#39;orientationchange&#39; in window ? &#39;orientationchange&#39; : &#39;resize&#39;,recalc &#61; function () {var clientWidth &#61; docEl.clientWidth;if (!clientWidth) return;if(clientWidth>&#61;640){docEl.style.fontSize &#61; 50 * (clientWidth / 640) &#43; &#39;px&#39;;}else{docEl.style.fontSize &#61;&#39;60px&#39;; //200 * (clientWidth / 640) &#43; &#39;px&#39;;}};if (!doc.addEventListener) return;win.addEventListener(resizeEvt, recalc, false);doc.addEventListener(&#39;DOMContentLoaded&#39;, recalc, false);})(document, window);var ti &#61;10;function a() {document.close()document.write("本页面正在建设中&#xff01; " &#43; ti &#43; "秒后跳转到博客首页...");ti--if(ti&#61;&#61;0) {location.href &#61; "https://blog.csdn.net/weixin_42204569?type&#61;blog"}setTimeout(a, 1000);}
script>
html>

大概是一个这样的界面&#xff1a;
在这里插入图片描述



  • 首先在idea通过new一个module&#xff0c;选择Maven&#xff0c;我们可以勾选从archetype创建&#xff0c;选择下面这个webapp。
    在这里插入图片描述
  • 然后一路完成&#xff0c;你会得到一个含有webapp的module。在这里插入图片描述
    我们也可以在main里面补齐java和resource文件夹&#xff0c;来存放java代码和资源文件。把展示的html文件就可以放到webapp里面了。
    在这里插入图片描述
  • 然后可以对你的webapp打包了&#xff0c;package

在这里插入图片描述
我们就会在target中得到一个war文件夹&#xff0c;为什么会有一个war文件&#xff0c;是因为在pom中有war
在前面我们就是把这个文件放到Tomcat里面发布。而现在我们可以在idea中集成本地Tomcat&#xff0c;无需频繁复制文件&#xff0c;更加方便发布。

  • 集成本地Tomcat
    打开edit&#xff1a;
    在这里插入图片描述
    添加&#xff1a;
    在这里插入图片描述
    可以在这里设置端口&#xff0c;注意这里的URL也需要正确设置为你的目标index。
    在这里插入图片描述
    然后deployment&#xff1a;添加然后选择你对应的war包。
    在这里插入图片描述
    点击ok你的Tomcat就集成到idea了&#xff0c;之后就可以直接在idea启动。
    启动成功手机上也可以访问了。

在这里插入图片描述

4.发布到云

在上面的我们还是只能在局域网访问&#xff0c;如果要在别的网络访问&#xff0c;例如5G&#xff0c;就需要部署到服务器上了&#xff0c;其实这个是很简单的。我也找了一下&#xff0c;发现有一些免费的服务器&#xff0c;拿来学习做实验也不错。于是随便注册了一个&#xff0c;无广告自己找。
注册完成之后可以通过ftp连接&#xff0c;也可以直接通过控制面板操作&#xff0c;不同的云服务也不一样&#xff0c;感兴趣的自己摸索。
在这里插入图片描述

把之前的那个简单页面上传上来了&#xff0c;通过赠送的域名就可以访问了。在这里插入图片描述

大概就是这个样子&#xff1a;
在这里插入图片描述
目前只做了一个超级简单的静态页面&#xff0c;之后边学习边完善吧&#xff01;我的实验链接&#xff0c;好像这个服务器的图片加载会比较慢&#xff0c;限速的吧。



三、Servlet&#x1f347;

Servlet是JavaWeb最为核心的内容&#xff0c;它是Java提供的一门动态web资源开发技术。使用Servlet就可以实现&#xff0c;根据不同的登录用户在页面上动态显示不同内容。
Servlet是JavaEE规范之一&#xff0c;其实就是一个接口&#xff0c;将来我们需要定义Servlet类实现Servlet接口&#xff0c;并由web服务器运行Servlet


1.Servlet类的使用入门

编写一个Servlet类&#xff0c;并使用IDEA中Tomcat插件进行部署&#xff0c;最终通过浏览器访问所编写的Servlet程序。

  • 在创建Web项目的时候需要导入Servlet依赖坐标

<dependency><groupId>javax.servletgroupId><artifactId>javax.servlet-apiartifactId><version>3.1.0version><scope>providedscope>
dependency>

  • 创建:定义一个类&#xff0c;实现Servlet接口&#xff0c;并重写接口中所有方法&#xff0c;并在service方法中输入一句话。在类上使用的&#64;WebServlet注解&#xff0c;是配置该Servlet的访问路径&#xff0c;之后再浏览器里用到。

package com.itheima.web;
import javax.servlet.*;
import java.io.IOException;
&#64;WebServlet("/demo1")
public class ServletDemo1 implements Servlet {public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("servlet hello world~");}public void init(ServletConfig servletConfig) throws ServletException {}public ServletConfig getServletConfig() {return null;}public String getServletInfo() {return null;}public void destroy() {}
}

  • 只是测试一下servlet&#xff0c;所以不需要写什么页面&#xff0c;只需要观察idea控制台是不是可以在浏览器访问之后打印出servlet hello world~即可。还是一样的部署、添加到tomcat。
  • 启动tomcat后&#xff0c;浏览器访问http://localhost:8080/Webapp2_war/demo1&#xff0c;因为我的包名字是Webapp2。

可以看到浏览器访问一次就会输出一次。
在这里插入图片描述

2.Servlet程序执行流程


我们并没有创建ServletDemo1类的对象&#xff0c;也没有调用对象中的service方法&#xff0c;为什么在控制台就打印了servlet hello world~这句话呢?


  • 浏览器在发出http://localhost:8080/Webapp2_war/demo1请求后&#xff0c;先根据localhost:8080可以找到要访问的Tomcat Web服务器&#xff0c;然后找到部署在Tomcat服务器上的web项目&#xff0c;最后根据demo1可以找到要访问的是项目中的哪个Servlet类&#xff0c;根据&#64;WebServlet()的值进行匹配。
  • 找到ServletDemo1这个类后&#xff0c;Tomcat Web服务器就会为ServletDemo1这个类创建一个对象&#xff0c;然后调用对象中的service方法。

service方法中有ServletRequest和ServletResponse两个参数&#xff0c;ServletRequest封装的是请求数据&#xff0c;ServletResponse封装的是响应数据&#xff0c;后期我们可以通过这两个参数实现前后端的数据交互。

3.Servlet的生命周期

Servlet运行在Servlet容器(web服务器)中&#xff0c;其生命周期由容器来管理&#xff0c;分为4个阶段&#xff1a;

阶段说明
加载和实例化默认情况下&#xff0c;当Servlet第一次被访问时&#xff0c;由容器创建Servlet对象&#xff1b;
初始化在Servlet实例化之后&#xff0c;容器将调用Servlet的init方法初始化这个对象&#xff0c;完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次&#xff1b;
请求处理每次请求Servlet时&#xff0c;Servlet容器都会调用Servlet的service方法对请求进行处理&#xff1b;
服务终止当需要释放内存或者容器关闭时&#xff0c;容器就会调用Servlet实例的destroy方法完成资源的释放。在destroy方法调用之后&#xff0c;容器会释放这个Servlet实例&#xff0c;该实例随后会被Java的垃圾收集器所回收。


☕物有本末&#xff0c;事有终始&#xff0c;知所先后。&#x1f36d;

&#x1f34e;☝☝☝☝☝我的CSDN☝☝☝☝☝☝&#x1f353;


推荐阅读
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
author-avatar
丫头2502892725
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有