引言:Tomcat用于搭建支持java的动态页面
1 概念
1.1 中间件
中间件是位于平台(硬件、操作系统、网络与数据库)和应用之间的通用服务,不会像应用程序一样提供业务,上面有很多应用接口。当系统升级时,只需要将中间件升级,接口的标准不变,这样上层的应用就可以照常使用。
1.1.1 中间件有以下几个功能
1)由于中间件有很多不同类型的应用接口,所以不同的应用之间、不同的操作系统之间、以及不同的应用与不同操作系统可以通过中间件通信。即相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。
2)中间件可以为上层应用程序提供运行与开发的环境;
3)提供Java脚本的动态网页服务。用PHP脚本编写的动态网页,在被客户端访问时,客户端会访问到web服务器后直接访问数据库调用存储的数据;而用Java脚本编写的动态网页在被客户端访问时,客户端在访问到web服务器后还需要通过中间件才能访问数据库进而调用存储的数据。
注1:数据库是软件,类似于高级的文件系统,定义了共享存储的存储和访问的格式。
注2:HTML语法编写的网页属于静态网页,静态网页被客户端访问时,web服务器会直接从本地的 /var/www/html 下调用页面返回给客户而不需要访问数据库。
1.1.2 中间件的分类
web应用型中间件:如Tomcat(free)、weblogic(pay)
消息性中间件:如rabbit(free,是erlang语言编写的)、mq(IBM)(pay)
缓存型中间件:如memcached(PHP语言编写的)
业务型中间件:如WAS、tuxedo
rabbit消息型中间件的工作原理——例如,Windows系统A想要传达消息给Linux系统B,那么A会采用断点续传的方式发送消息给rabbit的,类似于发短信,A发出消息给rabbit后不会理会到底能不能传到、什么时候能传到;如果B此时宕机不能立即收到消息,则等B恢复正常后还是能收到消息。
缓存型中间件工作模型:client——VIP——若干node节点——缓存型中间件——数据库——共享存储。所以当客户访问VIP时,VIP会根据算法分配任务给某一个节点,那么该节点就会访问数据库调用存储的数据。而缓存型中间件有缓存功能,当访问过VIP的客户再次访问时,节点可以直接调用中间件缓存中的数据,这样就能减缓数据库的压力,并且能加快数据的调用速度。
1.1.3 中间件应具有如下一些特点
1)满足大量应用的需要 ;
2)运行于多种硬件和OS平台;
3)支持分布计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互;
4)支持标准的协议;
5)支持标准的接口。
1.2 web应用型中间件——Tomcat
Tomcat 技术先进、 性能稳定,是一个免费的开放源代码的Web 应用服务,是比较流行的Web 应用服务器。是开发和调试JSP 程序的首选。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP页面和Servlet。另外,Tomcat和IIS(Windows的网页服务)等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。
Servlet(Server Applet),全称Java Servlet。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。JSP也是Java的一个程序,据说是server let的前身。
servlet动态页面工作原理:客户端通过浏览器访问页面,如果是静态页面,服务器直接调用HTML的页面发给客户端,浏览器翻译过来呈现给用户;如果是动态页面,插件server let会访问数据库,随机生成一个动态页面返回给服务器,进而发给客户端。
2 使用Tomcat 提供一个动态页面服务
2.1 测试环境
一台虚拟机作为Tomcat服务器。让自己的真机能连到虚拟机,能ping通学校的服务器172.19.0.254。将虚拟机网卡选为桥接模式。
2.2 配置Tomcat服务器
2.2.1 首先,使Tomcat测试页面能正常访问
第一步 从服务器下载要用到的文件
#wget http://172.19.0.254:/softs/JDK/day.java
#wget http://172.19.0.254:/softs/JDK/jdk.8u40-linux-x64.rpm
1)其中Java脚本day.java的内容如下:
import java.util.Calendar;
class day {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DATE);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
System.out.println(year + "/" + month + "/" + day + " " + hour + ":" + minute);
}
}
2)安装JDK # rpm -ivh jdk-8u40-linux-x64.rpm
第二步 编辑环境变量
1)#vim /etc/profile 在文件尾添加:
export JAVA_HOME=/usr/java/default //声明变量
export PATH=$PATH:$JAVA_HOME/bin //增加PATH
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
2)然后使环境变量生效 #source /etc/profile 或者 # . /etc/profile
第三步 编译day.java
#javac day.java
#java day //显示出日期,说明已编译成功
第四步 安装Tomcat软件
1)解压软件包 #tar xvfz apache-tomcat-8.0.30.tar.gz
2)创建安装目录 #mkdir -v /usr/tomcat8
3)将解压完成的软件转移至指定目录:#mv apache-tomcat- 8.0.30/* /usr/tomcat8/
4)创建用户: #useradd -M -d /usr/tomcat8 tomcat8
//创建用户tomcat8,创建时不创建用户家目录,指定/usr/tomcat8为用户家目录
5)修改指定目录的属主: #chown -R tomcat8. /usr/tomcat8
//也可以写tomcat8:tomcat8
第五步 配置Tomcat 服务,编辑配置文件
#vim /usr/lib/systemd/system/tomcat.service ,里面写上:
[Unit]
Description=Apache Tomcat 8 //声明Tomcat版本
After=network.target //网络服务启动之后再启动
[Service]
Type=oneshot //只启动一次
ExecStart=/usr/tomcat8/bin/startup.sh //指定开启Tomcat要执行startup.sh
ExecStop=/usr/tomcat8/bin/shutdown.sh //指定关闭Tomcat要执行shutdown.sh
RemainAfterExit=yes //关联服务关闭(启动)后再关闭(启动)
User=tomcat8 //指定用户
Group=tomcat8 //指定用户组
[Install]
WantedBy=multi-user.target //指定在多用户级别安装
第六步 重启服务并设置开机自启
#systemctl restart tomcat
#systemctl enable tomcat
第七步 用真实机浏览器测试Tomcat服务,课件Tomcat测试页
http://Tomcat服务器ip:8080
2.2.2 接下来使Tomcat开启支持Java
第一步 下载要用到的文件
daytime.java //这个是网上找的一段程序
1)Java脚本daytime.java的内容如下:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Calendar
public class daytime extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Calendar cal = Calendar.getInstance();
out.println("<html>\n<head>\n<title>DayTime</title>\n</head>\n<body>");
out.println("<div style=\"font-size: 40px; text-align: center; font-weight:bold\">");
out.println(cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1)+ "/" +cal.get(Calendar.DATE) + " " + cal.get(Calendar.HOUR_OF_DAY) + ":" +cal.get(Calendar.MINUTE));
out.println("</div>\n</body>\n</html>");
}
}
第二步 创建Java程序存放目录并编译daytime.java
# mkdir /usr/tomcat8/webapps/ROOT/WEB-INF/classes
# cd /usr/tomcat8/webapps/ROOT/WEB-INF/classes
#mv /root/daytime.java /usr/tomcat8/webapps/ROOT/WEB-INF/classes
# javac -classpath /usr/tomcat8/lib/servlet-api.jar daytime.java
第三步 编辑辑web.xml文件 。#vim /usr/tomcat8/webapps/ROOT/WEB- INF/web.xml 。在<web-app>至</web-app>之间加入:
<servlet>
<servlet-name>daytime</servlet-name>
<servlet-class>daytime</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>daytime</servlet-name>
<url-pattern>/daytime</url-pattern>
</servlet-mapping>第四步 使用真实机浏览器测试,按住F5刷新,一会会看到时间变了
http://tomcat_server _ip:8080/daytime
2.2.3 隐藏Tomcat的访问端口8080——设置透明代理
第一步 安装apache并启动 #yum install httpd -y
#systemctl restart httpd
第二步 编辑apache的proxy_ajp.conf。 #vim /etc/httpd/conf.d/ , proxy_ajp.conf写入:
ProxyPass /tomcat ajp://Tomcat服务器IP:8009
第三步 重启服务:systemctl restart httpd
第四步 使用真实机浏览器访问,会看到Tomcat欢迎页面
http:// Tomcat服务器IP /tomcat/
注:AJP是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过TCP连接和SERVLET容器连接。为了减少进程生成socket的花费,WEB服务器和SERVLET容器之间尝试保持持久性的TCP连接,对多个请求/回复循环重用一个连接。一旦连接分配给一个特定的请求,在请求处理循环结束之前不会再分配。
转载请注明出处,谢谢!