菜鸟笔记
提升您的技术认知

tomcat服务器-ag真人游戏

静态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服务器的使用

  1. 准备:ag真人试玩娱乐官网上下载并解压(同时必须配置好java_home的环境变量)
  2. 开启服务器:startup.bat
  3. 关闭服务器:shutdown.bat
  4. 测试:先开启tomcat服务器,然后你访问localhost:8080后就可以看到tomcat的ag真人游戏主页面 

注意:

  1. 此页面(localhost:8080)对应到了你tomcat的webapps目录里面,如果里面有项目,则可以按照特定的路径直接访问此项目。
  2. 项目必须放在特定的项目目录里才能被访问,此目录被叫做项目名称)

举例:

比如我的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配置文件下有没有这个域名映射

  1. 有:直接返回对应的ip地址
  2. 没有:去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)

注意:

  1. 项目名目录必须存在
  2. 在项目名称目录里面具体的内容与web-inf平级。
  3. web-inf这个目录下的资源是受保护的,浏览器不能直接访问
  4. 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

结果:数据库查询成功。

网站地图