静态web与动态web
- 静态web:html,css(提供给所有人看的数据几乎不会变)
- 动态web:提供给所有人看的数据会发生变化,每个人在不同时间,不同地点看到的信息各不相同。
javaweb:动态web资源开发的技术统称为javaweb
web应用程序:可以提供浏览器访问的程序
注意:
- 我们能访问到的任何一个页面或资源,都存在这个世界的某一个角落的计算机上,我们通过url进行访问
- 一个web应用程序由多部分组成(静态web、动态web)
- web应用程序编写完毕后,若想提供给外界访问,则需要一个服务器进行统一的管理
web服务器:服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息。
访问web应用程序内在流程:
客户端发起请求准备访问服务器的某个页面,则web服务器就会去找他有没有这个页面,若找到了则将此页面返回给客户端(通过web服务)
含义:比较流行的web应用服务器(开源,免费,轻量级)
tomcat的目录结构
- bin:存放tomcat中可执行文件的目录
- conf:存放tomcat中配置文件的目录
- lib:存放tomcat服务器运行时依赖的jar包
- logs:存放tomcat服务器运行时产生日志文件的目录(记录每次启动关闭的一些信息)
- temp:存放tomcat服务器产生的临时文件目录(tomcat会自己清理该目录,可以忽略)
- work:存放tomcat服务器产生的工作文件
- webapps:tomcat服务器中存放网站的目录
tomcat服务器的使用
- 准备:ag真人试玩娱乐官网上下载并解压(同时必须配置好java_home的环境变量)
- 开启服务器:startup.bat
- 关闭服务器:shutdown.bat
- 测试:先开启tomcat服务器,然后你访问localhost:8080后就可以看到tomcat的ag真人游戏主页面
注意:
- 此页面(localhost:8080)对应到了你tomcat的webapps目录里面,如果里面有项目,则可以按照特定的路径直接访问此项目。
- 项目必须放在特定的项目目录里才能被访问,此目录被叫做项目名称)
举例:
比如我的webapps里面有browser项目,browser里面有index.html页面和app.html页面
直接访问browser里面的默认index.html页面:http://localhost:8080/browser/
访问browser里面的特定app.html页面:http://localhost:8080/browser/app.html
tomcat端口号以及主机名的修改
注意:在conf文件中server.xml为tomcat服务器的核心配置文件,在这里面可以改访问tomcat服务器的端口名以及主机的名称(主机名通过hosts文件来实现)。
监听关闭端口
注意:
- 当执行shutdown.sh关闭tomcat就是链接8005端口执行shutdown命令;由此,我们直接用telnet向8005端口执行shutdown来关闭tomcat,这也是比较正统的关闭方式,如果这个端口没被监听,那么sh脚本就是无效的。
- 实际上这个端口是可以直接屏蔽不监听的。设置时候将其port值修改为-1就可以。
与其他http服务器集成的端口
注意:负责和其他的http服务器建立连接。再把tomcat与其他http服务器集成时,就需要用到这个连接器。
浏览器访问tomcat服务器用到的端口
注意:该端口负责建立http连接,在通过浏览器访问tomcat服务器的web应用时,使用的就是这个连接器。
将其改为8081后重启tomcat访问成功:http://localhost:8081
修改主机名称
hosts文件目录:c:\windows\system32\drivers\etc
在主机hosts文件内增添映射主机地址:127.0.0.1 www.cjc.com
在tomcat的server.xml文件内配置主机名:www.cjc.com
重启tomcat访问成功:http://www.cjc.com:8080/
当我们输入url(里面有域名)回车后
计算机会检查本机的c:\windows\system32\drivers\etc\hosts配置文件下有没有这个域名映射
- 有:直接返回对应的ip地址
- 没有:去dns服务器找到域名所对应的ip地址
tomcat的context.xml配置文件
每个context标签代表了运行在虚拟主机上的单个web应用
监控资源文件,如果web.xml改变了,则自动重新加载应用
web-inf/web.xml
使用resource时将数据库的驱动程序copy到tomcat的lib目录下,这一部是要害,假如没有copy 当运行程序的时候后报-找不到驱动-的异常
jdbc/数据库名" 表示指定的jndi名称(这个名称可以随意起)
auth="container" 描述当前资源交给容器管理
type="javax.sql.datasource" 表示类型为java扩展包下的数据源
maxactive="100" 连接池支持的最大连接数
maxidle="30" 连接池中最多可空闲maxidle个连接
maxwait="10000" 连接池中连接用完时,新的请求等待时间,单位毫秒
username="root" 表示数据库用户名
password="root" 表示数据库用户的密码
driverclassname="com.mysql.jdbc.driver" 表示数据库的驱动类
url="jdbc:mysql://localhost:3306/数据库名"/> 表示数据库url地址
context.xml与server.xml文件的区别:
本身context作为server的host标签内的一个context标签,但是server.xml是不可动态重加载的资源,服务器一旦启动了以后,要修改这个文件,就得重启服务器才能重新加载。而context.xml文件则不然,tomcat服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。
webapps目录
webapps=>项目名目录=>web-inf(classes,lib,web.xml)
注意:
- 项目名目录必须存在
- 在项目名称目录里面具体的内容与web-inf平级。
- web-inf这个目录下的资源是受保护的,浏览器不能直接访问
- web-inf名字不可更改(更改后就可以访问里面内容),但是大小写可以更改(更改后不可以访问里面内容)
web-inf里面有3个文件及目录classes、lib、web.xml,其中作用如下:
- classes:用于存放编译后的class文件(即java程序)
- lib:用于存放web应用所依赖的jar包
- web.xml:用于存放web应用相关的一些配置信息
前言
在tomcat容器中配置数据库连接池有2种形式,一种直接在server.xml或context.xml文件中进行连接池的配置(希望tomcat内多个项目共用一个数据库时使用该配置),另一种直接在具体的web项目(meta-inf目录下的context.xml文件)中进行数据库连接池的配置(每个项目有单独的数据库时使用该配置)
tomcat数据库连接池的设计结构
理解:首先必须提供sql数据库,在连接池之中需要保存若干个连接对象(这些对象是可以动态扩充的,但并不是无限扩充),所有的连接池需要被javax.sql.datasource接口实例所管理,他所描述的就是数据接口,而数据库连接池中的每一个连接都在数据源的管理之中,而datasource被jndi所管理
jndi:即java的命名及目录接口,其就相当于一个map集合,你可以根据map中的key的名称查询到对应的value(datasource的接口实例)
tomcat数据库连接池实践
具体原理
通过jndi名称找到datasource->通过datasource找到connection->connection关闭表示归还连接
具体实践
创建一个web项目
创建servlet(dataall)类用于数据库连接池测试
@webservlet(name = "getdata")
public class dataall extends httpservlet {
protected void doget(httpservletrequest request, httpservletresponse response){
connection connection=null;
preparedstatement preparedstatement=null;
resultset resultset=null;
try {
//使用jndi获取连接对象
//1初始化上下文,context为数据库连接池的上下文对象(context.xml文件)
context context = new initialcontext();
//获取与逻辑名相关联的数据源对象——传入参数:java:comp/env/ jndi名称
datasource lookup = (datasource)context.lookup("java:comp/env/jdbc/db");
//从连接池中获取连接
connection=lookup.getconnection();
string name="小昭";
integer age=45;
string sql="select * from emp where name=? or age=?";
preparedstatement = connection.preparestatement(sql);
preparedstatement.setobject(1, name);
preparedstatement.setobject(2, age);
resultset = preparedstatement.executequery();
while (resultset.next()){
//这里的i表示该行的列数
for (int i=1;i<9;i ){
system.out.println(resultset.getobject(i));;
}
}
}catch (exception e){
e.printstacktrace();
}finally {
try {
resultset.close();
preparedstatement.close();
connection.close();
}catch (exception e){
e.printstacktrace();
}
}
}
}
配置web.xml映射规则
dataall
cn.tedu.dataall
dataall
/getdata
配置tomcat程序
我配的tomcat程序为localhost的8080端口,然后虚拟项目名用的是jndi
向tomcat的lib目录中放入mysql的驱动包(因为我用的是mysql数据库)
配置tomcat中conf目录下的context.xml文件(当然也可以选择配置单个项目的数据库连接池,那么就在项目的meta-inf目录下添加context.xml文件)
web-inf/web.xml
${catalina.base}/conf/web.xml
注意:resource标签可以设置多个,每一个都相当于一个数据源,该数据源中存放着多个连接对象,而数据源被jndi所管理,可以通过jndi名称找到对应的数据源
完成后访问:http://localhost:8080/jndi/getdata
结果:数据库查询成功。