Java学习日记(day18)
一、软件的结构
C/S (Client - Server 客户端-服务器端)
典型应用:QQ软件 ,飞秋,印象笔记。
特点:
- 必须下载特定的客户端程序。
- 服务器端升级,客户端升级。
B/S (Broswer -Server 浏览器端- 服务器端)
典型应用: 腾讯官方(www.qq.com) 163新闻网站(俗称:网站)
特点:
- 不需要安装特定的客户端(只需要安装浏览器即可!!)
- 服务器端升级,浏览器不需要升级!!!!
JavaWeb的程序就是b/s软件结构!!!
常见的市面上 应用服务软件
- WebLogic: BEA 公司的产品。 收费的。
- WebSphere : IBM公司的产品。收费的。
- JBoss: Redhat 公司的产品。收费的。
- Tomcat : 开源组织 Apache 的产品。免费的。
服务器作用:把服务器端的资源共享给外部访问。
二、IDEA、Tomcat环境搭建
1、如何将项目变成Web项目:
1、Help中点击Find Action

2、搜索Add Framework Support

3、勾选Web Application


2、配置tomcat
1、点击Edit Configurations

2、点击加好,选择Tomcat Server Local


-Dfile.encoding=UTF-8
浏览器既可以访问JSP也可以访问Servlet,但是绝大部分情况下浏览器不直接访问JSP,JSP主要用来展示数据,
所以绝大部分情况是先访问Servlet查找出数据来之后转发到JSP页面进行展示。
三、Servlet
1、什么是Servlet
Servlet运行在服务端的Java小程序,是sun公司提供的一套规范(接口),用来处理客户端的请求、响应动态资源给浏览器
JSP本质是Servlet
实现步骤:
1、创建类继承HttpServlet
2、覆盖未实现的方法--service方法


2、Servlet生命周期
JSP+Servlet是一个半成品的框架,我们是在这套框架上开发,所以要学习和遵守他的规范
Servlet 程序的生命周期由 tomcat服务器控制 的!!!!
Servlet 重要的四个生命周期方法
- 什么时候初始化
- 什么时候被调用
- 什么时候被销毁
构造方法:创建servlet对象的时候被调用。默认情况下,第一次访问这个servlet的时候调用构造方法创建对象。
构造方法只被调用一次,servlet对象在tomcat是单实例的。
init方法:initial 创建完servlet对象时候调用。只调用1次。
service:每次浏览器发出请求时候调用这个方法。调用n次。
destory:销毁servlet对象的时候调用。停止服务器或者重新部署web应用时候会销毁servlet对象。只调用1次。
Servlet只创建一次,是单例模式(这个类的对象只会有一个)。每次请求的时候会创建一个新的request、response。
LifeServlet.LifeServlet()
LifeServlet.init()
LifeServlet.service()
LifeServlet.service()
LifeServlet.service()
LifeServlet.destroy()
四、JSP
Servlet的作用: 用Java语言开发动态资源的技术!!!
JSP的作用:用Java语言(+html语言)开发动态资源的技术!!!
JSP本质就是Servlet!!!
1、JSP的脚本:(脚本就是一段代码)
语法:
作用: 执行java代码
2、JSP表达式:
语法:
作用: 向浏览器输出变量的值或表达式计算的结果
//http://localhost:8080/JavaWeb/index.jsp
//http://localhost:8080/JavaWeb/student
@WebServlet("/student")
public class StudentServlet extends HttpServlet {//默认访问service@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("StudentServlet.service");Connection connection = null;PreparedStatement preparedStatement = null;ResultSet resultSet = null;List<Student> list = new ArrayList<>();try {connection = JDBCUtil.getConnection();String sql = "SELECT id,name,age,gender FROM student";//预编译preparedStatement = connection.prepareStatement(sql);resultSet = preparedStatement.executeQuery();while (resultSet.next()) {//判断下一个有没有,如果返回true而且指向下一个,没有返回falseint id = resultSet.getInt("id");String name = resultSet.getString("name");int age = resultSet.getInt("age");String gender = resultSet.getString("gender");Student student = new Student(id, name, age, gender);list.add(student);}for (Student student : list) {System.out.println(student);}} catch (SQLException throwables) {throwables.printStackTrace();} finally {JDBCUtil.close(connection, preparedStatement, resultSet);}//把list数据放到req里面req.setAttribute("list", list);//转发到student_list.jsp页面进行展示req.getRequestDispatcher("student_list.jsp").forward(req, resp);}
}
<%@ page import="com.situ.web.pojo.Student" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><link rel="stylesheet" href="static/bootstrap-3.4.1-dist/css/bootstrap.css">
</head>
<body><%//JSP页面中可以嵌套Java代码//JSP脚本:在这里可以写任意的Java代码//request、response:JSP页面的内置对象List<Student> list = (List<Student>) request.getAttribute("list");%><table class="table table-striped table-bordered table-hover table-condensed"><tr><td>ID</td><td>名字</td><td>年龄</td><td>性别</td><td>编辑</td><td>删除</td></tr><%for (Student student : list) {%><tr><td><%=student.getId()%></td><td><%=student.getName()%></td><td><%=student.getAge()%></td><td><%=student.getGender()%></td><td>编辑</td><td>删除</td></tr><%}%></table>
</body>
</html>
五、URL路径
http://localhost:8080/JavaWeb/index.jsp?method=selectAll&id=2
http : 协议(http协议)
localhost:域名(为了方便记忆,最终定位地址还是要将域名转换为ip地址) local:本地 host:主机
本地域名:localhost 127.0.0.1
外部域名:www.baidu.com
8080:端口号
8080:tomcat默认端口
3306:mysql默认端口
JavaWeb:找到部署到webapps下面的JavaWeb这个应用
index.html:资源的名字

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
张微博 weibo 微博
六、Tomcat
1、Tomcat 的目录结构
|-bin: 存放 tomcat 的命令。binary
startup.bat
shutdown.bat
|- conf : 存放 tomcat 的配置信息。其中 server.xml文件是核心的配置文件。 configuration
|-lib :支持 tomcat软件运行的 jar 包。其中还有技术支持包,如 servlet ,jsp lib: library
|-logs :运行过程的日志信息
|-temp: 临时目录 temp:temporary
|-webapps : 共享资源目录。 web 应用目录。 application 应用程序
|-work : tomcat的运行目录。 jsp 运行时产生的临时文件就存放在这里

2、项目部署
工作空间项目(写代码看到的) 和 tomcat部署的web项目是有差别的:
真正访问的是部署到tomcat的web项目下面的所有资源
tomcat部署的web项目:
--WEB-INF目录:
-- web.xml:web项目的核心配置文件
-- classes目录:放置字节码文件的目录(把src下面java代码编译后放到这个目录下面)
-- lib目录:放置依赖的jar包
--index.jsp

七、tomcat中文乱码问题


-Dfile.encoding=UTF-8


相关文章:
Java学习日记(day18)
一、软件的结构 C/S (Client - Server 客户端-服务器端) 典型应用:QQ软件 ,飞秋,印象笔记。 特点: 必须下载特定的客户端程序。服务器端升级,客户端升级。 B/S (Broswer -Server 浏览器端- 服务器端&a…...
Oracle(61)什么是外部表(External Table)?
外部表(External Table)是Oracle数据库中的一种特殊表类型,用于访问存储在外部文件系统中的数据,而不需要将数据实际加载到数据库内部。外部表的主要优势在于允许数据库用户在不移动或复制数据的情况下,直接查询和处理…...
物联网HMI/网关搭载ARM+CODESYS实现软PLC+HMI一体化
物联网HMI/网关搭载CODESYS实现软PLCHMI一体化 硬件:ARM平台,支持STM32/全志T3/RK3568/树莓派等平台 软件:CODESYS V3.5、JMobile Studio CODESYS是一款功能强大的PLC软件编程工具,它支持IEC61131-3标准IL、ST、FBD、LD、CFC、…...
Java中Stream流
Java中Stream流 Stream 使用flatMap处理嵌套集合: 有一个对象列表,每个对象又包含一个列表,可以使用flatMap来“展平”这个结构。 List<List<String>> listOfLists Arrays.asList(Arrays.asList("a", "b"),Arrays.a…...
纯css实现多行文本右下角最后一行展示全部按钮
未展开全部: 展开全部: 综上演示按钮始终保持在最下方 css代码如下: <div class"info-content"><div class"info-text" :class"!showAll ? mle-hidden : "><span class"show-all"…...
WPF篇(17)-ListBox列表控件+ListView数据列表控件
ListBox列表控件 ListBox是一个列表控件,用于显示条目类的数据,默认每行只能显示一个内容项,当然,我们可以通过修改它的数据模板,来自定义每一行(元素)的数据外观,达到显示更多数据…...
HAProxy 全解析:驾驭网络负载均衡与高可用的强大引擎
一、什么是HAproxy HAProxy是一个免费、开源的高性能TCP/HTTP负载均衡器和代理服务器软件,主要用于实现以下功能 一、负载均衡 多种负载均衡算法支持: 轮询(Round Robin):它依次将请求均匀分配到后端的各个服务器。例…...
陶瓷材质的防静电架空地板越来越受欢迎的原因
目前市面上的陶瓷防静电架空地板主要分为两种:钢基和硫酸钙基。前者是以全钢冲孔裸板作为板基,经粘接、固定整型和灌浆的方式加工而成,后者是以复合硫酸钙板为基材,表面粘接防静电陶瓷砖,四周导电PVC边条封边。近年来陶…...
Mariadb数据库本机无密码登录的问题解决
Mariadb数据库本机无密码登录的问题解决 安装了mariadb后,发现Mariadb本机无密码才能登录 百度了很多文章,发现很多人是因为root的plugin设置的值不正确导致的,unix_socket可以不需要密码,mysql_native_password 是正常的。 解…...
校园外卖平台小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,商家管理,菜品信息管理,菜品分类管理,购买菜品管理,订单信息管理,系统管理 微信端账号功能包括:系统首页&a…...
Python3 第八十一课 -- urllib
目录 一. 前言 二. urllib.request 三. urllib.error 四. urllib.parse 五. urllib.robotparser 一. 前言 Python urllib 库用于操作网页 URL,并对网页的内容进行抓取处理。 本文主要介绍 Python3 的 urllib。 urllib 包 包含以下几个模块: url…...
Vue 3+Vite+Eectron从入门到实战系列之(五)一后台管理登录页
前面已经讲了不少基础知识,这篇开始,我们进行实操,做个后台管理系统,打包成多端的,可安装的桌面app!!其中,登录,退出的提示信息用系统的提示,不使用elemengplus的弹窗提示!ÿ…...
Docker 网络代理配置及防火墙设置指南
Docker 网络代理配置及防火墙设置指南 背景 在某些环境中,服务器无法直接访问外网,需要通过网络代理进行连接。虽然我们通常会在 /etc/environment 或 /etc/profile 等系统配置文件中直接配置代理,但 Docker 命令无法使用这些配置。例如&am…...
基于PostGIS(Postgres)+Node.js实现的xyz瓦片地图服务器
背景介绍 前两天研究GeoServer发布存储在PostGIS中栅格数据,最终目的是想在PostGIS中存储金字塔瓦片,用GeoServer发布,但是最后经过研究不改GeoServer源码的情况下,好像只支持将大图tif存在PostGIS数据库中进行发布,金…...
浙大数据结构慕课课后题(06-图3 六度空间)
题目要求: 输入格式: 输入第1行给出两个正整数,分别表示社交网络图的结点数N(1<N≤103,表示人数)、边数M(≤33N,表示社交关系数)。随后的M行对应M条边,每行给出一对正…...
Windows File Recovery卡在99%怎么解决?实用指南!
为什么会出现“Windows File Recovery卡在99%”的问题? Windows File Recovery(Windows文件恢复)是微软设计的命令行应用程序。它可以帮助用户从健康/损坏/格式化的存储设备中恢复已删除/丢失的文件。 通过输入相关命令,设置源/…...
数据结构之数组
写在前面 看下数组。 1:巴拉巴拉 数组是一种线性数据结构,使用连续的内存空间来存储数据,存储的数据要求有相同的数据类型,并且每个元素占用的内存空间相同。获取元素速度非常快,为O(1)常量时间复杂度,所…...
springboot集成sensitive-word实现敏感词过滤
文章目录 敏感词过滤方案一:正则表达式方案二:基于DFA算法的敏感词过滤工具框架-sensitive-wordspringboot集成sensitive-word步骤一:引入pom步骤二:自定义配置步骤三:自定义敏感词白名单步骤四:核心方法测…...
C++ 之动手写 Reactor 服务器模型(一):网络编程基础复习总结
基础 IP 地址可以在网络环境中唯一标识一台主机。 端口号可以在主机中唯一标识一个进程。 所以在网络环境中唯一标识一个进程可以使用 IP 地址与端口号 Port 。 字节序 TCP/IP协议规定,网络数据流应采用大端字节序。 大端:低地址存高位,…...
qt 在vs2022 报错记录
1,qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed 需要把SSL 相关的库加入进去,如ssleay32.dll,libeay32.dll。 2,在一个文件中已定义,编译器在链接时,在多处报 已在.*…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
