【JavaWeb学习笔记】6 - Tomcat

news2025/1/23 4:53:13

项目代码

零、在线文档 

Apache Tomcat 8 (8.0.53) - Documentation Index

WEB开发

1. WEB,在英语中web表示网/网络资源(页面,图片,css,js)意思,它用于表示WEB服务器(主机)供浏览器访问的资源

2. WEB服务器(主机)上供外界访问的Web资源分为:

        静态web资源( 如htmD页面) :指web页面中供人们浏览的数据始终是不变。

        动态web资源,比如Servlet、PHP等。

3.静态web资源开发技术

        Html、CSS等

4.常用动态web资源开发技术:

        Servlet、SpringBoot、 SpringMVC、PHP、ASP.NET等

B/S C/S开发

1. B: browser(浏览器)

2. S: Server(服务端)

1.C:Client(客户端)

2.S:Server(服务端)

(1)兼容性因为浏览器的种类很多,发现你写的程序,在某个浏览器会出现问题,其它浏览器正常

(2)安全性,通常情况下,BS安全性不如CS好控制

(3)易用性, BS好于CS,浏览器电脑有

(4)扩展性, BS相对统一, 只需要写Server
 

一、JavaWeb服务软件

1.介绍

1.学习JavaWeb开发,需要先安装JavaWeb服务软件(我们把安装了JavaWeb服务软件主机称为Web服务器/JavaWeb服务器) 在web服务器中开发相应的web资源。

2.学习JavaWeb开发,Tomcat本质就是一个Java程序, 但是这个Java程序可以处理来自浏览器的HTTP请求

2.模拟简单的Web服务程序

这里,我们需要使用到Java基础(IO/网络)

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author 银小海
 * @version 1.0
 * @email yinhai14@qq.com
 * 这是我们自己写的web服务 可以返回hello.html给浏览器
 */
public class MyTomcat {
    public static void main(String[] args) throws IOException {
        //1.在9999端口监听
        ServerSocket serverSocket = new ServerSocket(9999 );
        int i = 0;
        //如果serverSocket没有关闭就循环监听反复
        while (!serverSocket.isClosed()) {

            //2.等待客户端连接得到socket
            //http://localhost:9999表示浏览器向localhost(127.0.0.1)表示本机的9999端口发出请求
            System.out.println("程序在这句话" + ++i);
            Socket socket = serverSocket.accept();

            //3.得到输出流
            OutputStream outputStream = socket.getOutputStream();
            // outputStream.write("hello,i am mytomcat".getBytes());

            //4.读取hello.html文件返回即可
            BufferedReader bufferedReader = new BufferedReader(new FileReader("tomcat/src/hello.html"));
            String buf = "";
            while((buf = bufferedReader.readLine() )!= null){
                outputStream.write(buf.getBytes());
            }
            outputStream.close();
            socket.close();
        }
        serverSocket.close();
        //如果不使用while循环 查询当把信息返回去之后就马上关闭了 所以不能这么干
    }
}

使用上述传输时,出现以下问题

当前无法使用此页面

localhost 发送了无效的响应。qq浏览器 谷歌浏览器 edge都出现该问题,均能链接到程序但是无法显示

localhost:8080 localhost:9999均尝试了都不太行 确实能连接到 但是就是无法访问,应该是某个安全校验问题吧,使用firefox即可解决该问题

3.常用的JavaWeb服务软件

1. Tomcat:由Apache组织提供的一种Web服务器,提供对jsp和Servlet的支持。它是一种轻量级的javaWeb容器,是当前应用最广的JavaWeb服务器(免费)。

2. Jboss: 是一个遵从JavaEE规范的、它支持所有的JavaEE规范(免费)。

3. GlassFish:由 Oracle公司开发的一款JavaWeb服务器,是一款商业服务器,达到产品级质量(应用很少)。

4. Resin:是CAUCHO公司的产品,是- -个非常流行的服务器,对servlet和JSP提供了良好的支持,性能也比较优良 (收费)。

5. WebLogic [很猛] :是Oracle公司的产品,支持JavaEE规范,而且不断的完善以适应新的开发要求,适合大型项目(收费,用的不多适合大公司)

二、Tomcat的基本介绍

1.Tomcat下载安装

1.双击bin目录下的startup.bat文件

2.输入http:/ /localhost:8080/,显示如下界面代表安装成功

3.注意,不要关闭黑窗口,关闭了,tomcat服务就停止了.

4.也可以在bin目录下使用catalinna run启动

5.关闭最好是使用shutdown. bat

2.启动故障排除

1.双击startup.bat文件,出现-一个小黑窗口然后就没了,原因是因为没有配置好JAVA HOME 环境变量

2. JAVA_ HOME 必须全大写

3. JAVA_ HOME 中间必须是下划线

4. JAVA_ HOME配置的路径只需要配置到jdk的安装目录即可。不需要带上bin目录

5.端口8080被占用[查看端口netstat -anb]

6.如果其它服务程序占用了8080端口,可以关闭该服务,或者修改Tomcat服务的默认端口8080 

7.配置JAVA_ HOME环境变量

3.目录结构

4.Tomcat服务中部署WEB应用

发人员在开发web应用时,按照规定目录结构存放这些文件。否则,在把web应用交给web服务器管理时,不仅可能会使web应用无法访问,还会导致web服务器启动报错。

 

5.浏览器访问web服务器文件UML时序图

6.修改Tomcat端口

三、IDEA开发JavaWeb工程

1.开发javaweb工程 & 配置TomCat启动项目

1.需要:使用IDEA开发开发JavaWeb工程fishWeb,并将网页部署到fishWeb工程,看老师演示

配置完成后如何配置本地tomcat

选择Tomcat的解压位置 

热加载

记得改名

点击绿色的运行执行

在浏览器输入该URL即可访问到Tomcat下的该文件

2.注意事项

(1) on update action :表示当我们更新操作是, Tomcat会自动更新类和资源(当jsp/html文件修改时可以生效)

(2) on frame deactivation :表示IDEA失去焦点(比如最小化),也会导致jsp/html发生更新, 但是java修改了,还是需要redeploy

2.端口修改

server.xml

3. out目录是什么

4.当我们从外部拷贝资源到项目(图片,文件, js等),如果出现404不能访问错误,解决方式rebulid project ->重启Tomcat

四、课后作业

 

注意指定编码格式 

注意是放在web包下 src是用来放java文件的

多看该图 

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

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

相关文章

LeetCode 每日一题 Day 4

2477. 到达首都的最少油耗 给你一棵 n 个节点的树(一个无向、连通、无环图),每个节点表示一个城市,编号从 0 到 n - 1 ,且恰好有 n - 1 条路。0 是首都。给你一个二维整数数组 roads ,其中 roads[i] [ai,…

Myblog01-基于基本的javaWeb设计实现

目录 一、项目概述: 应用技术: 接口实现: 数据库建表,sql脚本: 页面展示:登陆页面 项目源码:myblog01: 初版的个人博客项目-使用基本的javaWeb (gitee.com) 二、对博客系统进行测试 总结 一、项…

怎么给文章润色?文章润色怎么收费?

文章润色,指的是在原有文章基础上,对语言表达、逻辑结构、风格等方面进行优化调整,以提高文章的阅读体验和质量。 润色不同于修改,修改主要针对文章中的错误,如语法、拼写、标点等;而润色则是对文章的整体…

网页抓取为什么要使用http代理?

目录 前言 一、网页抓取的定义 二、使用HTTP代理的原因 1. 防止IP被封锁 2. 提高访问速度 3. 保护隐私 4. 突破地域限制 三、使用Python进行网页抓取并使用HTTP代理 1. 安装必要的Python模块 3. 获取网页源代码 4. 解析网页内容 总结 前言 网页抓取是指从互联网中…

如何解决syntaxerror: more than 255 arguments 报错

如何解决syntaxerror: more than 255 arguments 报错 问题背景解释解决方案 问题背景 今天拼接特征的时候,突然代码报错syntaxerror: more than 255 arguments ,看了一下感觉这个报错非常有意思,估计平时也是没机会碰到,和大家分…

课题学习(十五)----阅读《测斜仪旋转姿态测量信号处理方法》论文

一、 论文内容 1.1 摘要 为准确测量旋转钻井时的钻具姿态,提出了一种新的信号处理方法。测斜仪旋转时,垂直于其旋转轴方向加速度计的输出信号中重力加速度信号分量具有周期性特征,以及非周期性离心加速度分量频率低于重力加速度信号分量频率…

ROS-ROS通信机制-参数服务器

文章目录 一、基础理论知识二、C实现三、Python实现 一、基础理论知识 参数服务器在ROS中主要用于实现不同节点之间的数据共享。参数服务器相当于是独立于所有节点的一个公共容器,可以将数据存储在该容器中,被不同的节点调用,当然不同的节点…

【GAMES101】二维变换和齐次坐标

这几天都在抽空学OpenGL、敲leetcode和看games,这里留点笔记给以后复习 games101第一节课在吹水,第二节课讲了线性代数的入门知识,比较简单,这里稍微回顾一下重点,然后开始讲第三节课的二维变换和齐次坐标 目录 向量…

前端CSS(层叠样式表)总结

CSS2总结 一、CSS基础 1. CSS简介 CSS 的全称为:层叠样式表 ( Cascading Style Sheets ) 。CSS 也是一种标记语言,用于给 HTML 结构设置样式,例如:文字大小、颜色、元素宽高等等。 简单理解: CSS 可以美化…

一篇文章带你详细了解C++智能指针

一篇文章带你详细了解C智能指针 为什么要有智能指针内存泄漏1.什么是内存泄漏,它的危害是什么2.内存泄漏的分类3.如何避免内存泄漏 智能指针的使用及原理1.RAII2.智能指针的原理3.auto_ptr4.unique_ptr5.shared_ptr6.weak_ptr 为什么要有智能指针 C引入智能指针的主…

【SVM】不同数据划分方式导致结果不同...

此帖是一个自我纠查帖,感觉基本不会有其他人踩相同的坑。 背景:在MI分类中使用FBCSPSVM,基于这个方法写了两个分类的.py文件实现,在数据划分上大差不差(都是CV5),但是结果却相差很多 方法一&a…

从零开始学习 JavaScript APl(七):实例解析关于京东案例头部案例和放大镜效果!

大家好关于JS APl 知识点已经全部总结了,第七部部分全部都是案例部分呢!!(素材的可以去百度网盘去下载!!!) 目录 前言 一、个人实战文档 放大镜效果 思路分析: 关于其它…

【C++】String类经典OJ题目分析

目录 字符串相加字符串里面最后一个单词的长度反转字符串||反转字符串中的单词 字符串相加 链接: link class Solution { public:string addStrings(string num1, string num2) {int next 0;//存放进位int end1 num1.size()-1;int end2 num2.size()-1;int ret 0;string …

安全测试工具,自动发现网站所有URL!

作为一个安全测试人员来说,首先要拿到网站所有url,然后根据拿到的url进行渗透测试进行漏洞挖掘。本文给大家介绍的是如何拿到一个网站所有的url。 深度爬取层级控制 现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很…

Android Glide自定义AppCompatImageView切分成若干小格子,每个小格子onDraw绘制Bitmap,Kotlin(1)

Android Glide自定义AppCompatImageView切分成若干小格子,每个小格子onDraw绘制Bitmap,Kotlin(1) 垂直方向的RecyclerView,每行一个AppCompatImageView,每个AppCompatImageView被均匀切割成n个小格子&#…

求职招聘小程序源码系统 全开源源代码:找工作+招人才 平台级别运营版 附带完整的搭建教程

在当前的求职招聘市场中,尽管存在大量的求职者和招聘者,但依然存在着信息不对称、沟通不畅等问题。小编来给大家分享一款求职招聘小程序源码系统,旨在提供一个高效、便捷、安全的求职招聘平台。 以下是部分代码示例: 系统特色功能…

C#事件的本质

event字段本质就是对委托进行私有访问限制,事件的本质就是委托,只不过系统会对用event字段修饰的委托进行了特殊处理,比如自动生成一个私有的委托变量,添加两个事件访问器,同时禁止外部类对事件的Invoke等方法调用。 …

Android的前台服务

概述 前台服务是用户主动意识到的一种服务,因此在内存不足时,系统也不会考虑将其终止。前台服务必须为状态栏提供通知,将其放在运行中的标题下方。这意味着除非将服务停止或从前台移除,否则不能清除该通知。 在 Android 8.0&…

用100ask 6ull配合 飞凌 elf1的教程进行学习的记录 - ap3216

100ask板子 不用改 ap3216.c "ap3216creg.h" 添加到drivers/misc 从这抄的: https://gitee.com/flameboyence/linux_driver_example/tree/master/22_i2c #include <linux/types.h> #include <linux/kernel.h> #include <linux/delay.h> #includ…

java第三十课

电商项目&#xff08;前台&#xff09;&#xff1a; 登录接口 注册接口后台&#xff1a; 注册审核&#xff1a;建一个线程类 注意程序中的一个问题。 这里是 5 条记录&#xff0c;2 条记录显示应该是 3 页&#xff0c;实际操作过程 有审核机制&#xff0c;出现了数据记录动态变…