2-22-实现jsp通过tomcat连接mysql
Posted 北极之光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于2-22-实现jsp通过tomcat连接mysql的主要内容,如果未能解决你的问题,请参考以下文章
搭建tomcat环境实现jsp通过tomcat连接mysql
tomcat环境搭建和管理及实现jsp通过tomcat连接mysql
tomcat+jsp+mysql 实现jsp页面连接mysql
招新系统(jsp+servlet,实现简略前端网页注册登录+后台增删改查,分学生和管理员,Java语言,mysql数据库连接,tomcat服务器)