• 2-22-实现jsp通过tomcat连接mysql


     

    所有软件的版本如下:

    MySQL-Connector-Java: mysql-connector-java-5.1.36

    Tomcat: apache-tomcat-8.0.26

    JDK: jdk-8u60-linux-x64

    MySQL: mysql-5.6.26

    1 安装JDK

    注意:安装之前需要查看下系统是否安装了openjdk,如果安装了openjdk,请先卸载,否则安装不了oracle官方的jdk

    卸载方法:

    [root@xuegod2 ~]# yum remove java-* -y

    安装jdk:

    [root@xuegod2 ~]# rpm -ivh jdk-8u60-linux-x64.rpm

    [root@xuegod2 ~]# java -version //查看当前系统的java版本

    java version "1.8.0_60"

    Java(TM) SE Runtime Environment (build 1.8.0_60-b27)

    Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

    [root@xuegod2 ~]# rpm -pql jdk-8u60-linux-x64.rpm //查看新装的java安装所在的位置/usr/java

    //注意,上面的方式用于最小安装的系统,

    2 安装tomcat

    [root@xuegod2 ~]# tar xvf apache-tomcat-8.0.26.tar.gz -C /usr/local/src/

    [root@xuegod2 ~]# cd /usr/local/src/apache-tomcat-8.0.26/

    注意:Tomcat有两种安装方式,一种是直接解压就可以使用的二进制文件,第二种是编译安装,我们这里采用了第一种方法,下载的tomcat软件直接解压就可以

    执行的二进制文件,因为在官方默认下载的便是使用第一种方法安装,那么下载解压后的目录如下:

    tomcat

    |---bin Tomcat:存放启动和关闭tomcat脚本;

    |---conf Tomcat:存放不同的配置文件(server.xml和web.xml);

    |---lib:包含Tomcat使用的jar文件.unix平台此目录下的任何文件都被加到Tomcat的classpath中;

    |---logs:存放Tomcat执行时的LOG文件;

    |---webapps:Tomcat的主要Web发布目录(包括应用程序示例);

    |--- ROOT:tomcat的家目录

    |--- index.jsp:Tomcat的默认首页文件

    |---work:存放jsp编译后产生的class文件或servlet文件存放

    |---temp:存放Tomcat运行时所产生的临时文件

    [root@xuegod2 apache-tomcat-8.0.26]# ls bin/ //tomcat的执行脚本文件

    bootstrap.jar       commons-daemon-native.tar.gz  digest.sh         startup.bat           tool-wrapper.sh

    catalina.bat        configtest.bat                setclasspath.bat  startup.sh            version.bat

    catalina.sh         configtest.sh                 setclasspath.sh   tomcat-juli.jar       version.sh

    catalina-tasks.xml  daemon.sh                     shutdown.bat      tomcat-native.tar.gz

    commons-daemon.jar  digest.bat                    shutdown.sh       tool-wrapper.bat

    #bat为windows下的脚本(批处理)

    #sh为Linux下的脚本,Shell

    #catalina.sh是一个最关键的脚本,其他的启动脚本如startup,shutdown.sh,都是使用了不同的参数调用了该脚本,startup是以start参

    数调用了catalina脚本,shutdown使用stop调用了catalina脚本!

     

    [root@xuegod2 apache-tomcat-8.0.26]# cd .. ; mv apache-tomcat-8.0.26/ /usr/local/tomcat ; cd

    Tomcat启动脚本

    [root@xuegod2 ~]# vim /etc/init.d/tomcat

      1 #!/bin/bash

      2 #Tomcat init script for Linux

      3 #chkconfig: 2345 96 14

      4 #discription :The Apache Tomcat Server/JSP container

      5 JAVA_OPTS='-server -Xms64m -Xms128m'

      6 JAVA_HOME=/usr/java/jdk1.8.0_60

      7 CATALINA_HOME=/usr/local/tomcat

      8 $CATALINA_HOME/bin/catalina.sh $*

    [root@xuegod2 ~]# chmod +x /etc/init.d/tomcat

    [root@xuegod2 ~]# service tomcat start

    Using CATALINA_BASE:   /usr/local/tomcat

    Using CATALINA_HOME:   /usr/local/tomcat

    Using CATALINA_TMPDIR: /usr/local/tomcat/temp

    Using JRE_HOME:        /usr

    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

    Tomcat started.

    [root@xuegod2 ~]# chkconfig --add tomcat

    [root@xuegod2 ~]# chkconfig tomcat on

    [root@xuegod2 ~]# netstat -anput|grep 8080//查看是否启动

    tcp        0      0 :::8080                     :::*                        LISTEN      2020/java

    3 测试Tomcat

    浏览器打开网址http://192.168.10.32:8080

     

    点击manager App,需要一个用户名和密码:

    创建管理Manger App用户

    [root@xuegod2 ~]# vim /usr/local/tomcat/conf/tomcat-users.xml

    01. [root@XueGod63~]# vim /usr/local/tomcat/conf/tomcat-users.xml

    02. <!--

    03. <role rolename="tomcat"/>

    04. <role rolename="role1"/>

    05. <user username="tomcat" password="tomcat" roles="tomcat"/>

    06. <user username="both" password="tomcat" roles="tomcat,role1"/>

    07. <user username="role1" password="tomcat" roles="role1"/>

    08. -->

    #修改为如下,去掉注释<!-- -->

    01. <role rolename="tomcat"/>

    02. <role rolename="role1"/>

    03. <rolerolename="manager-gui"/> #添加此行

    04. <userusername="redhat" password="123456" roles="manager-gui"/> #修改此行

    05. <user username="both" password="tomcat" roles="tomcat,role1"/>

    06. <user username="role1" password="tomcat" roles="role1"/>

    ################################################################################

    几种角色

    1:“manager-gui”:Allows access tothe html interface(允许通过web的方式登录查看服务器信息)。

    2:“manager-script”: Allows access to the plain textinterface(允许以纯文本的方式访问)。

    3:“manager-jmx”: Allows access to the JMX proxyinterface(允许jmx的代理访问)。

    4:“manager-status”: Allows access to the read-onlystatus pages(允许以只读状态访问)。

    http://tomcat.apache.org/tomcat-8.0-doc/manager-howto.html#Configuring_Manager_Application_Access

    [root@xuegod2 ~]# service tomcat stop

    [root@xuegod2 ~]# service tomcat start //tomcat没有restart命令,只能先stop在start

    测试访问:

    点Manager App按钮,输入用户名redhat ,密码123456 登录

     

    4 搭建基于域名的虚拟主机

    [root@xuegod2 ~]# ls /usr/local/tomcat/conf/

    Catalina         catalina.properties  logging.properties  tomcat-users.xml  web.xml

    catalina.policy  context.xml          server.xml          tomcat-users.xsd

    server.xml是Tomcat的主配置文件(全局),服务器设置的,例如端口设置,路径设置。

    context里设置tomcat数据源,用来连接数据库。

    tomcat_user主要是用户名和密码的设置。

    web是默认首页等等之类的设置

    [root@xuegod2 ~]# vim /usr/local/tomcat/conf/server.xml

    <Host name="xuegod.com" appBase="/var/www/html">

         <Contextpath="" docBase="/var/www/html/web1" />

    </Host>

    <Host name="xuegod.cn" appBase="/var/www/html">

         <Contextpath="" docBase="/var/www/html/web2" />

    </Host>

    #在末尾的</Engine>上面添加上面这几行

    appBase指定应用程序(网站)的基本路径,这里可以存放多个程序(网站),一般是相对路径,相对于tomcat的安装目录。

    Context path=""为虚拟目录,如果是空,表示直接就是/,如果是如path="aa",那么访问的时候就是site:8080/aa

    xuegod.cndocBase="……" 为实际目录,就是可以是绝对路径,如果是相对路径就是基于appBase

    [root@xuegod2 ~]# service tomcat stop ; service tomcat start

    [root@xuegod2 ~]# mkdir -p /var/www/html/{web1,web2}

    [root@xuegod2 ~]# echo xuegod.com > /var/www/html/web1/index.html

    [root@xuegod2 ~]# echo xuegod.cn > /var/www/html/web2/index.html

    客户机hosts文件

    192.168.10.32  xuegod.com

    192.168.10.32  xuegod.cn

    网页测试

    浏览器访问xuegod.com:8080

     

    浏览器访问xuegod.cn:8080

     

    补充:真实的生产环境中,需要一个合法的域名和一个合法的公网IP,把域名解析到IP上,然后在web服务器里修改配置文件

    5 安装tomcat-Native

        Tomcat 可以使用 apr 来提供更好的伸缩性、性能和集成到本地服务器技术。用来提高 tomcat 的性能。 tomcat native 在具体的运行平台上,提供了一种优化技术,它本身是基于 ARP(Apache Portable(轻便) Runtime)技术

    我们应用了 tomcat native 技术之后,tomcat 在跟操作系统级别的交互方面可以做得更好,并且它更像apache 一样,可以更好地作为一台 web server。

    tomcat 可以利用 apache 的 apr 接口,使用操作系统的部分本地操作,从而提升性能APR 提升的是静态页面处理能力

    关于tomcat-native的相关介绍及下载: http://tomcat.apache.org/download-native.cgi

    安装依赖包:

    [root@xuegod2 ~]# yum install apr-devel gcc gcc-c++ openssl-devel openssl

    [root@xuegod2 ~]# tar xf tomcat-native-1.1.34-src.tar.gz -C /usr/local/src/

    [root@xuegod2 native]# ./configure --with-apr=/usr/ --with-java-home=/usr/java/jdk1.8.0_60/ --with-ssl

    [root@xuegod2 ~]# make ; make install ; cd

     

    根据安装提示,需要添加库文件:

    [root@xuegod2 native]# vim /etc/ld.so.conf

    /usr/local/apr/lib    #添加此行

    [root@xuegod2 native]# ldconfig   #加载一下

    重启一下tomcat

    [root@xuegod2 native]# cd /usr/local/tomcat/bin/

    [root@xuegod2 bin]# ./shutdown.sh ; ./startup.sh

    Using CATALINA_BASE:   /usr/local/tomcat

    Using CATALINA_HOME:   /usr/local/tomcat

    Using CATALINA_TMPDIR: /usr/local/tomcat/temp

    Using JRE_HOME:        /usr

    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

    Using CATALINA_BASE:   /usr/local/tomcat

    Using CATALINA_HOME:   /usr/local/tomcat

    Using CATALINA_TMPDIR: /usr/local/tomcat/temp

    Using JRE_HOME:        /usr

    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

    Tomcat started.

    查看native与tomcat结合在一起使用:

    [root@xuegod2 bin]# cat /usr/local/tomcat/logs/catalina.out |grep Native --color

     

    6 安装mysql

    解决依赖:

    [root@xuegod2 ~]# yum install -y cmake ncurses-devel //gcc等相关在编译apache已安装

    [root@xuegod2 ~]# tar xf mysql-5.6.26.tar.gz -C  /usr/local/src/ ; cd /usr/local/src/mysql-5.6.26

    [root@xuegod2 mysql-5.6.26]#

    编译安装

    cmake

     -DCMAKE_INSTALL_PREFIX=/usr/local/mysql

     -DMYSQL_UNIX_ADDR=/tmp/mysql.sock

     -DDEFAULT_CHARSET=utf8

     -DDEFAULT_COLLATION=utf8_general_ci

     -DWITH_EXTRA_CHARSETS=all

     -DWITH_MYISAM_STORAGE_ENGINE=1

     -DWITH_INNOBASE_STORAGE_ENGINE=1

     -DWITH_MEMORY_STORAGE_ENGINE=1

     -DWITH_READLINE=1

     -DENABLED_LOCAL_INFILE=1

     -DMYSQL_DATADIR=/usr/local/mysql/data

     -DMYSQL-USER=mysql

    *****************************************************************************************************************

    DCMAKE_INSTALL_PREFIX #制定mysql的安装根目录,目录在安装的时候会自动创建,这个值也可以在服务器

    启动时,用--basedir来设置

    DMYSQL_UNIX_ADDR #服务器与本地客户端进行通信的Unix套接字文件,必须是绝对路径,默认位

    置/tmp/mysql.sock,可以在服务器启动时,用--socket改变

    DDEFAULT_CHARSET #mysql默认使用的字符集,不指定将默认使用Latin1西欧字符集

    DDEFAULT_COLLATION #默认字符校对

    DWITH_EXTRA_CHARSETS #制定mysql拓展字符集,默认值也是all支持所有的字符集

    DWITH_MYISAM_STORAGE_ENGINE #静态编译MYISAM,INNOBASE,MEMORY存储引擎到MYSQL服务

    器,这样MYSQL就支持这三种存储引擎

    DWITH_INNOBASE_STORAGE_ENGINE

    DWITH_MEMORY_STORAGE_ENGINE

    DWITH_READLINE #支持readline库

    DENABLED_LOCAL_INFILE #允许本地倒入数据,启用加载本地数据

    DMYSQL_DATADIR #mysql数据库存放路径

    DMYSQL-USER #运行mysql的用户

    这些编译参数的帮助寻找方法:

    http://www.mysql.com/→→Documentation→→选择对应的版本(5.6)→→HTML Online→→View→→Installation &

    Upgrades→→Installing MySQL from Source →→MySQLSource-Configuration Options→→

    http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html //最终的URL

     

    [root@xuegod2 mysql-5.6.26]# make ; make install

    [root@xuegod2 ~]# useradd -M -s /sbin/nologin mysql

    [root@xuegod2 ~]# cd && chown -R mysql:mysql /usr/local/mysql/   //属主属组更改

    [root@xuegod2 ~]# cp /usr/local/mysql/support-files/my-default.cnf  /etc/my.cnf

    cp: overwrite `/etc/my.cnf'? y   //覆盖原配置文件

    [root@xuegod2 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld //启动脚本

    [root@xuegod2 ~]# vim /etc/init.d/mysqld /更改启动脚本中指定mysql位置

    basedir=

    datadir=

    #修改为

    basedir=/usr/local/mysql

    datadir=/usr/local/mysql/data

    [root@xuegod2 ~]# chkconfig mysqld on   #开机启动

    初始化数据库

    [root@xuegod2 ~]# /usr/local/mysql/scripts/mysql_install_db  --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

    [root@xuegod2 ~]# ls /usr/local/mysql/data/ //初始化看这个下面有无mysql和test等数据库

    ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  test

    [root@xuegod2 ~]# ln -s /usr/local/mysql/bin/* /bin/ //这个里面是部分命令,让系统直接调用

    [root@xuegod2 ~]# service mysqld start   //启动数据库

    Starting MySQL. SUCCESS!

    [root@xuegod2 ~]# mysql_secure_installation //初始安全设置(设置root密码,123456)[记住,编译安装之前,记得除去mysql mysqldevel mysql-libs三个软件]

    [root@xuegod2 ~]# mysql -uroot -p123456 #登录测试(OK)

    也可以借助下面的脚本来实现,脚本需要修改,注意

    #!/bin/bash

    yumremove -y mysql mysql-server

    clear

    echo'Thisshell will Auto Install Mysql5.6'

    yuminstall -y cmake ncurses-devel

    tar-xf mysql-5.6.26.tar.gz -C /usr/local/src && cd/usr/local/src/mysql-5.6.26

    useradd-M -s /sbin/nologin mysql

    mkdir/usr/local/mysql

    cmake-DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock-DDEFAULT_CHARSET=utf8

    -DDEFAULT_COLLATION=utf8_general_ci-DWITH_EXTRA_CHARSETS=all-DWITH_MYISAM_STORAGE_ENGINE=1-

    DWITH_INNOBASE_STORAGE_ENGINE=1-DWITH_MEMORY_STORAGE_ENGINE=1-DWITH_READLINE=1-

    DENABLED_LOCAL_INFILE=1-DMYSQL_DATADIR=/usr/local/mysql/data-DMYSQL_USER=mysql

    make-j 3 && make install

    chown-R mysql:mysql /usr/local/mysql

    /usr/local/mysql/scripts/mysql_install_db--user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

    rm-rf /etc/my.cnf

    cp/usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

    sed-i '/^[mysqld]/adatadir = /usr/local/mysql/data' /etc/my.cnf

    sed-i '/^[mysqld]/abasedir = /usr/local/mysql' /etc/my.cnf

    cp/usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

    chmod+x /etc/init.d/mysqld

    servicemysqld restart && echo "install success"

    echo"PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile

    source/etc/profile

    echo"source /etc/profile" >> /etc/rc.local

    脚本可能存在问题

    [root@xuegod2 ~]# echo "PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile && source /etc/profile

    [root@xuegod2 ~]# vim /etc/my.cnf

    character-set-server=utf8 #添加此行,修改mysql数据库默认编码(和低版本的mysql写法不一样,低版本的写法是:default-character-set=utf8

    [root@xuegod2 ~]# service mysqld restart

    [root@xuegod2 ~]# mysql_secure_installation #数据库安全初始化

    [root@xuegod2 ~]# mysql -uroot -p123456

    mysql> show variables like "%char%";

    +--------------------------+----------------------------------+

    | Variable_name            | Value                            |

    +--------------------------+----------------------------------+

    | character_set_client     | utf8                             |

    | character_set_connection | utf8                             |

    | character_set_database   | utf8                             |

    | character_set_filesystem | binary                           |

    | character_set_results    | utf8                             |

    | character_set_server     | utf8                             |

    | character_set_system     | utf8                             |

    | character_sets_dir       | /usr/local/mysql/share/charsets/ |

    +--------------------------+----------------------------------+

    8 rows in set (0.00 sec)

    注意:以上安装MySQL部分,根据实际情况来选择安装方式,可以选择编译安装,也可以用rpm包来安装,只要保证服务正常运行即可。

    测试数据

    mysql> create database tomcat;  //测试数据库,为了和后面方便测试,这里创建tomcat

    Query OK, 1 row affected (0.00 sec)

    mysql> use tomcat

    Database changed

    mysql> create table tt(id int,name varchar(128)); //创建测试表

    Query OK, 0 rows affected (0.09 sec)

    mysql> insert into tt values(1,"com on boy"),(2,"come on girl"); //创建测试数据

    Query OK, 2 rows affected (0.02 sec)

    Records: 2  Duplicates: 0  Warnings: 0

    mysql> grant all on tomcat.* to tomcat@localhost identified by 'tomcat'; //授权用户

    Query OK, 0 rows affected (0.02 sec)

    mysql> exit;

    Bye

    [root@xuegod2 ~]# mysql -utomcat -ptomcat //测试tomcat可以登陆(OK)

    7 测试jsp链接mysql

    Jsp连接mysql,官方提供了工具:安装mysql-connector

    安装mysql-connector

    [root@xuegod2 ~]# tar xvf mysql-connector-java-5.1.36.tar.gz -C /usr/local/src/  

    [root@xuegod2 ~]# cd /usr/local/src/mysql-connector-java-5.1.36/

    [root@xuegod2 mysql-connector-java-5.1.36]# ls

    build.xml  CHANGES  COPYING  docs  mysql-connector-java-5.1.36-bin.jar  README  README.txt  src

    [root@xuegod2 mysql-connector-java-5.1.36]# cp mysql-connector-java-5.1.36-bin.jar /usr/local/tomcat/lib/ #只需要复制到tomcat的lib目录下,重启tomcat就可以生效

    [root@xuegod2 ~]# service tomcat stop ; service tomcat start

    测试:

    [root@xuegod1 ~]# vim /usr/local/tomcat/webapps/ROOT/mysql.jsp       //建立测试页面

    <%@ page contentType="text/html;charset=utf-8"%>

    <%@ page import="java.sql.*"%>

    <html>

    <body>

    <%

    Class.forName("org.gjt.mm.mysql.Driver").newInstance();

    String url ="jdbc:mysql://localhost/tomcat?user=tomcat&password=tomcat&useUnicode=true&characterEncoding=utf-8";

    Connection conn= DriverManager.getConnection(url);

    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

    String sql="select * from tt";

    ResultSet rs=stmt.executeQuery(sql);

    while(rs.next()){%>

    step:<%=rs.getString(1)%>

    context:<%=rs.getString(2)%><br><br>

    <%}%>

    <%out.print("Congratulations!!! JSP connect MYSQLIS OK!!");%>

    <%rs.close();

    stmt.close();

    conn.close();

    %>

    </body>

    </html>

    #代码复制注意核对,由于编码问题,复制到vim中可能会增加多余的%号,记得删除

    浏览器访问:http://192.168.10.32:8080/mysql.jsp

     

  • 相关阅读:
    SpringBoot--整合Mybatis
    SpringBoot--使用JDBC连接mysql
    使用docker创建mysql容器
    iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destination 172.17.0.2:3306 ! -i docker0: iptables: No chain/target/match by that name
    SpringBoot--配置文件
    yqq命令
    vim/vm命令后提示错误:Found a swap file by the name ".dockerfile.swp"
    推荐一个十分好看的开源博客系统
    [转]技术的热门度曲线
    逆向学习笔记(2)-这是代码还是数据
  • 原文地址:https://www.cnblogs.com/hailun1987/p/9098070.html
Copyright © 2020-2023  润新知