Linux云计算架构-实现jsp通过Tomcat连接Mysql

Linux云计算架构-实现jsp通过Tomcat连接Mysql

1. 概念介绍

1.1 Tomcat

官网:http://tomcat.apache.org/

Tomcat 5支持最新的Servlet 2.4 和jsp 2.0规范。

Tomcat是目前较为流行的web应用服务器。优点是:技术先进、性能稳定、免费。

Tomcat服务器是一个免费的开放源代码的web应用服务器,是一种轻量级的应用服务器,在中小型系统和并发访问用户不多的场景下被普遍使用,也是开发和调试JSP程序的首选。也具有html页面处理能力。

Tomcat 工作模式和端口

模式:B/S 模式

端口:8080

1.2 JSP

JSP,即Java Server Pages(java 服务器页面),是一种动态网页技术标准。JSP技术是在传统的HTML文件(.htm,.html)中插入java程序段(scriptlet)和JSP(tag)标记,形成JSP文件,后缀名为(*.jsp),用JSP开发的web应用是跨平台的,既能在linux上运行,也能在其他操作系统上运行。

用JSP开发的web应用:

oracle公司的weblogic:这个应用服务,是一种基于JAVAEE架构的中间件。是用于开发、集成、部署和管理大型分布式web应用、网络应用、数据库应用的java服务器。

IBM公司的websphere:是web应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施。

1.3 中间件

中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。

中间件位于客户机/服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。

连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。

执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或 OS 环境。

中间件是一类连接软件组件和应用的计算机软件,它包括一组服务。以便于运行在一台或多台机器上的多个软件通过网络进行交互。该技术所提供的互操作性,推动了一致分布式体系架构的演进,该架构通常用于支持并简化那些复杂的分布式应用程序,它包括 web 服务器、事务监控器和消息队列软件。

1.4 JAVA

JDK : java development kit (套件) 。JDK 是面向开发人员使用的 SDK,它提供了 Java的开发环境和运行环境。是 Java 开发工具,是进行 Java 开发的基础。(JDK是一种JAVA SDK)

JDK 已经成为使用最广泛的 Java SDK。JDK 是整个 Java 的核心,包括了 Java 运行环境,Java工具和 Java 基础的类库。

SDK:Software Development Kit(软件开发工具包),为建立特定的软件包、软件框架、硬件平台、操作系统等应用软件时的开发工具的集合。可以包括函数库、编译程序等。

JRE:java Runtime Enviroment (Java 的运行环境),是面向 Java 程序的使用者,而不是开发者,是运行 JAVA 程序所必须的环境的集合,包含 JVM 标准实现及 Java 核心类库。Java Runtime Environment(包括 Java Plug-in)是 Sun 的产品,包括两部分:Java Runtime Environment 和 Java Plug-in。

JRE 是可以在其上运行、测试和传输应用程序的 Java 平台。它包括 Java 虚拟机(jvm)、Java核心类库和支持文件。它不包含开发工具(JDK)–编译器、调试器和其它工具。JRE 需要辅助软件–Java Plug-in,以便在浏览器中运行 applet。

JVM:java virtual machine(java 虚拟机)。JVM 是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM 是 java的核心和基础,在 java 编译器和 OS 平台之间的虚拟处理器。它是一种基于下层的操作系统和硬件平台并利用软件方法来实现的抽象的计算机,可以在上面执行 java 的字节码程序。java 编译器只需面向 JVM,生成 JVM 能理解的代码或字节码文件。Java 源文件经编译器,编译成字节码程序,通过 JVM 将每一条指令翻译成不同平台机器码,通过特定平台运行。

JRE是java运行环境,JVM是java虚拟机,在JDK的安装目录下的jre目录下,有bin和lib文件夹,其中bin可以看作是JVM,而lib是JVM工作所需要的类库。 即jre=jvm+lib

Java se:是Java 程序设计语言和 Java 平台的总称。用 Java 实现的 HotJava 浏览器(支持 Java applet)显示了 Java 的魅力:跨平台、动态的 Web、Internet 计算。从此,Java 被广泛接受并推动了 Web 的迅速发展,常用的浏览器现在均支持 Java applet。

Applet:小应用程序是采用 Java 编程语言编写的程序,该程序可以包含在 HTML(标准通用标记语言的一个应用)页中,与在页中包含图像的方式大致相同。

SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从 JDK 5.0 开始,改名为 Java SE。

EE(J2EE),enterprise edition,企业版,使用这种 JDK 开发 J2EE 应用程序,从 JDK 5.0 开始,改名为 Java EE。

ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的 java 应用程序,从 JDK5.0 开始,改名为 Java ME。

总的来说,没有 JDK 的话,无法编译 Java 程序,如果想只运行 Java 程序,要确保已安装相应的 JRE。(JDK编译java程序、JRE运行java程序)

2. Tomcat相关软件下载

JDK工具下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
在这里插入图片描述
Tomcat下载地址:https://tomcat.apache.org/download-80.cgi
在这里插入图片描述
MySQL-Connector-Java下载地址:http://dev.mysql.com/downloads/connector/
在这里插入图片描述
在这里插入图片描述

Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络 IO 操作,以提升性能。即是用 tomcat-native 这个软件来提高 tomcat 处理静态页面的性能,但tomcat处理静态页面的能力还是不如apache。(已经包含在tomcat的bin目录下)

MysqlServer:建议使用5.5、5.6、5.7、8.0等版本。

常见网页类型具体描述
HTML& HTMHyperText Markup Language 超文本标记语言 .html .htm
ASPActive Server Page 动态服务器页面 .asp
ASP.net建立在通用语言上的程序架构 .aspx
PHPHypertext Preprocessor 超文本标记语言 .php .php5 .phps
JSP.jsp

3. 部署jdk

# 卸载原来的openjdk,安装oracle-jdk
# oracle-jdk性能比openjdk好,兼容性大。
[root@master ~]# java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
[root@master ~]# yum remove -y java-* 

# 下载oracle-jdk,解压到/usr/local/下
[root@master ~]# tar xzvf /usr/local/src/jdk-8u191-linux-x64.tar.gz -C /usr/local/

# 在/usr/local目录下做一个软连接
[root@master ~]# cd /usr/local/
oot@master local]# ln -s jdk1.8.0_191 jdk1.8

# 配置环境变量
[root@master ~]# vim /etc/profile.d/jdk8.sh
[root@master ~]# cat /etc/profile.d/jdk8.sh 
export JAVA_HOME=/usr/local/jdk1.8.0_191
export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jar/tools.jar:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

# 使环境变量生效
[root@master ~]# chmod +x /etc/profile.d/jdk8.sh
[root@master ~]# /etc/profile.d/jdk8.sh
[root@master ~]# bash

# 查看jdk版本
# 不配置环境变量的话可以做一个软连接
[root@master local]# ln -s /usr/local/jdk1.8/bin/java /usr/bin/java
[root@master local]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

4. 部署tomcat

[root@master ~]# ll /usr/local/src/apache-tomcat-8.5.35.tar.gz 
-rw-r--r-- 1 root root 9642757 6月  21 19:16 /usr/local/src/apache-tomcat-8.5.35.tar.gz
[root@master ~]# cd /usr/local/src/
[root@master src]# tar xf apache-tomcat-8.5.35.tar.gz 
[root@master src]# ll apache-tomcat-8.5.35
总用量 124
drwxr-x--- 2 root root  4096 6月  28 08:09 bin
-rw-r----- 1 root root 19539 11月  4 2018 BUILDING.txt
drwx------ 2 root root   238 11月  4 2018 conf
-rw-r----- 1 root root  6090 11月  4 2018 CONTRIBUTING.md
drwxr-x--- 2 root root  4096 6月  28 08:09 lib
-rw-r----- 1 root root 57092 11月  4 2018 LICENSE
drwxr-x--- 2 root root     6 11月  4 2018 logs
-rw-r----- 1 root root  1726 11月  4 2018 NOTICE
-rw-r----- 1 root root  3255 11月  4 2018 README.md
-rw-r----- 1 root root  7142 11月  4 2018 RELEASE-NOTES
-rw-r----- 1 root root 16262 11月  4 2018 RUNNING.txt
drwxr-x--- 2 root root    30 6月  28 08:09 temp
drwxr-x--- 7 root root    81 11月  4 2018 webapps
drwxr-x--- 2 root root     6 11月  4 2018 work
[root@master src]# mv /usr/local/src/apache-tomcat-8.5.35 /usr/local/tomcat

# 编写启动脚本
# 也可以找到tomcat的启动脚本进行启动
# 启动脚本路径为:/usr/local/tomcat/bin/startup.sh
[root@master src]# vim /etc/init.d/tomcat
[root@master src]# cat /etc/init.d/tomcat 
#!/bin/bash
## tomcat startup script for the Tomcat server
# chkconfig: 345 80 20
# description: start the tomcat deamon
## Source function library
JAVA_HOME=/usr/local/jdk1.8.0_191
export JAVA_HOME
CATALANA_HOME=/usr/local/tomcat
export CATALANA_HOME
case "$1" in
start)
echo "Starting Tomcat..."
$CATALANA_HOME/bin/startup.sh
;;
stop)
echo "Stopping Tomcat..."
$CATALANA_HOME/bin/shutdown.sh
;;
restart)
echo "Stopping Tomcat..."
$CATALANA_HOME/bin/shutdown.sh
sleep 2
echo
echo "Starting Tomcat..."
$CATALANA_HOME/bin/startup.sh
;;
*)
echo "Usage: $prog {start|stop|restart}"
;;
esac
exit 0
[root@master ~]# chmod +x /etc/init.d/tomcat
[root@master ~]# service tomcat start
Starting Tomcat...
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8.0_191
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
# 可以看到以下界面,说明tomcat已经启动完成。
# 如果看不到,请开放8080端口号,或者直接清空或者关闭iptables

在这里插入图片描述

# 以下两种方法都可以查看是否已经启动8080端口号。
[root@master ~]# netstat -antup | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      11755/java          
[root@master ~]# lsof -i:8080
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    11755 root   49u  IPv6  66980      0t0  TCP *:webcache (LISTEN)

# 设置下次开机自启tomcat
[root@master ~]# chkconfig --add tomcat
[root@master ~]# chkconfig tomcat on

5. 搭建虚拟主机

# 修改tomcat的配置文件,配置文件存放在以下目录
[root@master ~]# ll /usr/local/tomcat/conf/
总用量 224
drwxr-x--- 3 root root     23 6月  28 08:20 Catalina
-rw------- 1 root root  13548 11月  4 2018 catalina.policy
-rw------- 1 root root   7746 11月  4 2018 catalina.properties
-rw------- 1 root root   1338 11月  4 2018 context.xml
-rw------- 1 root root   1149 11月  4 2018 jaspic-providers.xml
-rw------- 1 root root   2313 11月  4 2018 jaspic-providers.xsd
-rw------- 1 root root   3622 11月  4 2018 logging.properties
-rw------- 1 root root   7511 11月  4 2018 server.xml
-rw------- 1 root root   2164 11月  4 2018 tomcat-users.xml
-rw------- 1 root root   2633 11月  4 2018 tomcat-users.xsd
-rw------- 1 root root 169322 11月  4 2018 web.xml

# 在大概164行加入以下内容,创建虚拟主机
[root@master ~]# vim /usr/local/tomcat/conf/server.xml
164         </Host>
165         <Host name="www.abong.com" appBase="/var/www/html">
166         <Context path="" docBase="/var/www/html/web1" />
167         </Host>
168         <Host name="www.abong.cn" appBase="/var/www/html">
169         <Context path="" docBase="/var/www/html/web2" />
170         </Host>

# 重启tomcat服务
[root@master ~]# service tomcat restart 

# 编辑两个网页到/var/www/html/下
[root@master ~]# mkdir -p /var/www/html/web{1,2}
[root@master ~]# echo "this is web1" > /var/www/html/web1/index.html
[root@master ~]# echo "this is web2" > /var/www/html/web2/index.html


# 由于配置的虚拟主机的域名并非公开合法的,需对客户端的主机进行配置,否则无法访问到该域名。
# 编辑文件C:\Windows\System32\drivers\etc\hosts,添加以下内容,完成域名解析
192.168.8.125 www.abong.com
192.168.8.125 www.abong.cn

# 访问网址,可以看到以下内容
# http://www.abong.com:8080/
# http://www.abong.cn:8080/

在这里插入图片描述

6. 使用tomcat-native技术优化tomcat

tomcat可以使用 apr(apache portable runtime技术)进行优化,可以提高伸缩性、提高性能并且集成到本地服务器。

使用 tomcat native 技术之后,tomcat 在跟操作系统的交互方面可以做得更好,可以更好地作为一台 web server。 tomcat 可以利用 apache 的 apr 接口,使用操作系统的部分本地操作,从而提升性能。 APR 提升的是静态页面处理能力。

# tomcat8自带源码包
[root@master ~]# ll /usr/local/tomcat/bin/tomcat-native.tar.gz 
-rw-r----- 1 root root 411789 11月  4 2018 /usr/local/tomcat/bin/tomcat-native.tar.gz
[root@master ~]# cp /usr/local/tomcat/bin/tomcat-native.tar.gz /usr/local/src/
[root@master ~]# ll /usr/local/src/tomcat-native.tar.gz 
-rw-r----- 1 root root 411789 6月  28 21:23 /usr/local/src/tomcat-native.tar.gz
[root@master ~]# cd /usr/local/src/
[root@master src]# tar xzvf tomcat-native.tar.gz 
# 解决源码包依赖
# 源码包安装tomcat-native
[root@master ~]# yum -y install apr-devel gcc gcc-c++ openssl-devel openssl

[root@master ~]# cd /usr/local/src/tomcat-native-1.2.18-src/native/

[root@master native]# ./configure --with-apr=/usr/ --with-java-home=/usr/local/jdk1.8.0_191 --with-ssl

[root@master native]# make && make install
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/apr/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

# 报错缺少/etc/ld.so.conf,编辑并添加以下内容
[root@master native]# vim /etc/ld.so.conf
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib

# 变量文件立即生效
[root@master native]# source /etc/profile.d/jdk8.sh

tomcat 有三种运行模式,分别是:bio、nio、apr

①bio 是阻塞式I/O操作,使用的是传统的 java I/O 处理方式,对于每一个请求都要创建一个线程来进行处理,所以开销较大不适合处理高并发的场景。

②nio 是基于 java 中非阻塞 I/O 操作的 API 实现,比传统的 i/o 处理方式有更高的并发运行性能。

③apr 是从操作系统级别解决异步I/O问题,大幅度提高服务器的并发处理性能,也是 Tomcat 生产环境运行的首选方式

# 指定tomcat以apr运行
# 主配置文件的103行有apr协议的全称,可用来修改69行
[root@master ~]# vim /usr/local/tomcat/conf/server.xml 
69	protocol="org.apache.coyote.http11.Http11AprProtocol"

# 编辑catalina.sh,引用apr
[root@master ~]# vim /usr/local/tomcat/bin/catalina.sh 
254 JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib"

[root@master ~]# service tomcat restart 
 
# 查看catalina.out日志文件,可以看到tomcat已经以apr正常运行了。
[root@master ~]# tail -n 3 /usr/local/tomcat/logs/catalina.out 
28-Jun-2020 23:35:56.529 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-8080"]
28-Jun-2020 23:35:56.539 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
28-Jun-2020 23:35:56.544 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 515 ms
[root@master ~]# cat /usr/local/tomcat/logs/catalina.out | grep Native

7. 使用jsp连接mysql

# 创建tomcat数据库,tomcat用户,并授予tomcat操作tomcat数据库中所有对象的权限
[root@master ~]# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 33
Server version: 5.7.19 Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database tomcat;
Query OK, 1 row affected (0.00 sec)

mysql> use tomcat;
Database changed

mysql> grant all on tomcat.* to tomcat@localhost identified by "tomcat"; 
Query OK, 0 rows affected, 1 warning (0.01 sec)

# 创建测试数据
mysql> create table test(name varchar(50),sex varchar(30));
Query OK, 0 rows affected (0.01 sec)

mysql> insert into test values('abong','man'),('yuan','woman');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> exit
Bye
# 登录tomcat用户测试,可以看到登录正常。
[root@master ~]# mysql -utomcat -ptomcat
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 34
Server version: 5.7.19 Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
# 解压mysql-connector-java
[root@master ~]# cd /usr/local/src/
[root@master src]# tar xzvf mysql-connector-java-8.0.13.tar.gz 
# 复制解压目录下的jar文件到tomcat的lib目录下
[root@master src]# cp mysql-connector-java-8.0.13/mysql-connector-java-8.0.13.jar /usr/local/tomcat/lib/
[root@master src]# service tomcat restart 
# 建立jsp测试页面
[root@master ~]# vim /usr/local/tomcat/webapps/ROOT/mysql.jsp
<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%
Class.forName("com.mysql.cj.jdbc.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 test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){%>
name:<%=rs.getString(1)%>
sex:<%=rs.getString(2)%><br><br>
<%}%>
<%out.print("Congratulations!!! JSP connect MYSQL IS OK!!");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>

访问http://192.168.8.125:8080/mysql.jsp 验证结果是否正常。

在这里插入图片描述

8. 总结

1、部署jdk和tomcat,然后搭建虚拟主机,验证tomcat是否支持html静态页面。

2、使用tomcat-native技术,使得tomcat的运行模式为APR,tomcat可以利用apache的apr接口,使用操作系统的部分本地操作,提升静态页面处理能力,从而提升性能。

APR 是从操作系统级别解决异步I/O问题,大幅度提高服务器的并发处理性能,是 Tomcat 生产环境运行的首选方式

3、通过mysql-connector-java的jar,使得jsp网页可以插入java代码块,可以连接mysql数据库,获取数据库中的数据,使得jsp成为动态网页。

4、通过以上技术,可以使用tomcat很好的处理静态页面,也可以使用JSP动态页面。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值