Tomcat 2022-7-27

本文介绍了JavaWeb中的Tomcat服务器,包括Tomcat的职责、类似产品、官网与版本信息,以及环境变量配置。讲解了如何启动Tomcat服务端,URL的结构,JDBC编程流程和数据库连接池的作用、基本原理与优势。同时,对比了Statement和PreparedStatement在SQL注入及性能上的差异,并简单阐述了JDBC事务的管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

javaweb

是 java 的一个方向, 基于 BS 架构的 web 网站 ,也是 javaEE 方向

JavaSE (标准版)

JavEE (企业版 -> JavaWeb )

JavaME (微型版 -> 移动开发)

Tomcat 

Tomcat 是一款服务器的中间件

1.管理Socket 连接,基于HTTP/HTTPS协议(底层是TCP协议)

2.管理线程池 (每一次请求都会分配一个线程进行处理)

3.管理输入流和输出流 (输入流读取浏览器输出的内容,输出流向浏览器输出内容)

Tomcat相似产品

1.Nginx

2.Netty

3.Undertow

4.Jboss

5.Weblogic

Tomcat 官网和版本

Apache Tomcat® - Welcome!

下载

Tomcat目录

Tomcat环境变量

Tomcat 是 Java 语言编写的,需要 JAVA_Home 环境变量

启动服务端

双击 startup.bat

有乱码

去conf目录下用notepad++ 打开

说明服务端启动成功

在网页输入(注意中英文)

本机IP

localhost:8080

127.0.0.1:8080

本机IP地址

URL地址

URL 一般指同一资源定位系统,统一资源定位系统(uniform resource locator;URL)


协议://ip:端口/资源路径 
(国家://省市区:门牌号/人)

什么是资源:任何一种可以被浏览器解析的文件都是资源

不同的文件的URL地址一定是不一样的,任何一个文件都有自己唯一的URL地址

如果在URL 地址中没有写资源路径

Tomcat 默认返回 ROOT/index.jsp 或者 ROOT/index.html

Tomcat核心配置文件sevel

 把图片放在设置好的目录里 这里是 images

相对路径:

就把  文件 放在webapps 目录 里面 ROOT 目录里面

用 / 访问

JDBC 编程流程

         

数据库连接池的作用

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。

这项技术能明显提高对数据库操作的性能。

连接池的作用:


连接池的作用是为了提高性能,避免重复多次的打开数据库连接而曹诚性能的下降和系统资源的浪费;连接池是将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对数据库进行访问。这样省略了创建和销毁的过程。这样以提高系统的性能。

连接池基本原理:


1、建立数据库连接池对象(服务器启动)。

2、按照事先指定的参数创建对应初始数量的数据库连接(即空闲连接),设置连接池连接数量极值(最大活跃链接)。

3、对于一个数据库的访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲连接,且数量没有达到极值(即:最大活跃链接),创建一个新的数据库连接。

4、存取数据库。

5、关闭数据库,释放大于初始数量的空闲数据库连接。(并非真正关闭,而是将其放入空闲队列中。如实际空闲连接大于初始数量空闲连接则释放连接)。

6、释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。

使用连接池的优势:


1、资源复用:由于数据库连接得到重用,避免了频繁创建、释放引起的大量性能开销。在减少系统消耗的基础上,在另一方面也增进了系统运行环境的平稳性(减少内存碎片及数据库临时进程/线程的数量)

2、更快的系统响应速度:数据库连接池在初始化过程中,往往已经创建了若干个数据库连接置于池中备用,此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有的可用连接,避免了数据库连接初始化和释放过程的时间,从而缩减了系统整体相应时间。

3、统一的连接管理,避免数据库连接泄露:在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接,从而避免了常规数据库连接操作中可能出现的额资源泄露。

应用连接池的三种方式:


1、自定义连接池

2、使用第三方连接池

3、使用服务器自带的连接池
 

JDBC SQL注入隐患(Statement 和 PreparedStatement 的区别)

  

Statement存在sql注入问题,PreparedStatement解决了sql注入问题.

Statement是编译一次执行一次,PreparedStatement是编译一次可以执行n次,PreparedStatement的效率较高一些.

PreparedStatement会在编译阶段做类型的安全检查.
 

JDBC 如何操作事务 (在哪里开 在哪里提交 在哪里回滚)

JDBC事务 - 廖雪峰的官方网站 (liaoxuefeng.com)

"C:\Program Files\Java\jdk1.8.0_221\bin\java.exe" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:50413,suspend=y,server=n -Dmaven.multiModuleProjectDirectory=C:\Users\lzw\Desktop\SSM -Djansi.passthrough=true "-Dmaven.home=C:\Program Files\JetBrains\IntelliJ IDEA 2022.3.2\plugins\maven\lib\maven3" "-Dclassworlds.conf=C:\Program Files\JetBrains\IntelliJ IDEA 2022.3.2\plugins\maven\lib\maven3\bin\m2.conf" "-Dmaven.ext.class.path=C:\Program Files\JetBrains\IntelliJ IDEA 2022.3.2\plugins\maven\lib\maven-event-listener.jar" -javaagent:C:\Users\lzw\AppData\Local\JetBrains\IntelliJIdea2022.3\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "C:\Program Files\JetBrains\IntelliJ IDEA 2022.3.2\plugins\maven\lib\maven3\boot\plexus-classworlds-2.6.0.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2022.3.2\plugins\maven\lib\maven3\boot\plexus-classworlds.license;C:\Program Files\JetBrains\IntelliJ IDEA 2022.3.2\lib\idea_rt.jar" org.codehaus.classworlds.Launcher -Didea.version=2022.3.2 -P tomcat7:run 已连接到目标 VM, 地址: ''127.0.0.1:50413',传输: '套接字'' [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.081 s [INFO] Finished at: 2025-05-27T09:25:06+08:00 [INFO] ------------------------------------------------------------------------ [WARNING] The requested profile "tomcat7:run" could not be activated because it does not exist. [ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoGoalSpecifiedException 与目标 VM 断开连接, 地址为: ''127.0.0.1:50413',传输: '套接字'' 进程已结束,退出代码1
05-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值