Apache+Tomcat 简单理解
web服务器(静态解析,如HTML),并且通过配置也可以支持PHP 通过 http://localhost/ 打开默认⻚面
java应用服务器(动态解析,如JSP) Tomcat可以独立于apache运行,同为服务器,Tomcat的特别之处在于它还是Java的Web容器,能够处理JSP;而Apache一般是与PHP结合,并不能处理JSP。 通过 http://localhost:8080 打开默认⻚面
总结:
如果客户端请求的是静态⻚面,则只需要Apache服务器响应请求 如果客户端请求动态⻚面,则是Tomcat服务器响应请求(因为jsp是服务器端解释代码的,这样整 合就可以减少Tomcat的服务开销)
一、安装Apache服务器
1、启动Apache
// 在mac查看Apache是否安装
打开Mac的终端,输入下面的命令,开启Apache服务(因为sudo是系统管理命令,所以需要输入Mac密码):
Air ~ % sudo apachectl -v
Password:
Server version: Apache/2.4.48 (Unix)
Server built: Oct 1 2021 20:08:18
// 开启Apache服务
Air ~ % sudo apachectl start // 开启
Air ~ % sudo apachectl restart // 重启
Air ~ % sudo apachectl stop // 停止
查看Apache服务是否开启成功,在浏览器中输入:localhost:80(80是默认端口),如果浏览器中显示 It Works!则证明Apache服务开启成功。
image.png
2、改变Apache服务的端口
Apache服务默认安装路径:/etc/apache2,进入Apache的安装目录,打开httpd.conf,搜索Listen 80,修改成你想要的端口号即可。(注:对配置文件修改过后要一定要重启Apache服务)
image.png
image.png
image.png
image.png
3、Apache服务默认项目目录
Apache服务部署路径在 /Library/WebServer/Documents 目录下,使用快捷键command+空格 后输入:/L 后回车,进入Library(资源库),进入到/WebServer文件夹下的Documents目录就是Apache服务的部署路径,项目需要放在此目录下。
4、改变Apache服务默认项目部署路径
修改默认部署路径,可以在/etc/apache2目录下找到并打开httpd.conf文件,找到 DocumentRoot ,更改路径即可,然后重启服务。
image.png
二、配置Tomcat服务器
1、下载tomcat
登录Apache Tomcat官网,地址 http://tomcat.apache.org
,点击左边的Download,下载右边Core下的第一个资源zip。
2、设置本地放置路径
下载后解压下来重名名为ApacheTomcat,并放到磁盘的/usr/local下:打开Finder—>前往文件夹—> /usr/local/ 目录下,把下载下来包解压,之后然后命名为apache-tomcat8,放进来这里。
image.png
image.png
image.png
image.png
image.png
3、启动Tomcat
打开终端,切换路径到apache-tomcat8的bin目录下并执行启动文件:
Air ~ % cd /usr/local/apache-tomcat8/bin/
Air bin % ./startup.sh
如果提示Permission denied:那是因为没有.sh的权限。
zsh: permission denied: ./startup.sh
可以使用下面的chmod命令开放所有.sh文件权限:
Air bin % chmod u+x *.sh
再次执行 startup.sh 即可启动服务
Air bin % ./startup.sh
Using CATALINA_BASE: /usr/local/apache-tomcat8
Using CATALINA_HOME: /usr/local/apache-tomcat8
Using CATALINA_TMPDIR: /usr/local/apache-tomcat8/temp
Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
Using CLASSPATH: /usr/local/apache-tomcat8/bin/bootstrap.jar:/usr/local/apache-tomcat8/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
打开我们的浏览器,然后网址输入 http://localhost:8080/
,如果出现一只猫,则证明配置成功~
4、修改使用的端口号
如果使用的端口号8080不能使用,可通过修改conf文件下的server.xml配置文件来使用其他端口:
修改69行的port为新的端口号(以8090为例)
修改前
image.png
修改后
image.png
重新启动服务
,在浏览器中访问http://localhost:8090/:
Air bin % ./shutdown.sh
Using CATALINA_BASE: /usr/local/apache-tomcat8
Using CATALINA_HOME: /usr/local/apache-tomcat8
Using CATALINA_TMPDIR: /usr/local/apache-tomcat8/temp
Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
Using CLASSPATH: /usr/local/apache-tomcat8/bin/bootstrap.jar:/usr/local/apache-tomcat8/bin/tomcat-juli.jar
Using CATALINA_OPTS:
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
Air bin % ./startup.sh
Using CATALINA_BASE: /usr/local/apache-tomcat8
Using CATALINA_HOME: /usr/local/apache-tomcat8
Using CATALINA_TMPDIR: /usr/local/apache-tomcat8/temp
Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
Using CLASSPATH: /usr/local/apache-tomcat8/bin/bootstrap.jar:/usr/local/apache-tomcat8/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
image.png
5、配置Tomcat应用管理GUI用户
打开conf文件夹下的tomcat-users.xml 添加一个用户:
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat8" roles="manager-gui"/>
image.png
重新启动服务
,访问 http://localhost:8090 , 点击Manager App:
Air bin % ./shutdown.sh
Using CATALINA_BASE: /usr/local/apache-tomcat8
Using CATALINA_HOME: /usr/local/apache-tomcat8
Using CATALINA_TMPDIR: /usr/local/apache-tomcat8/temp
Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
Using CLASSPATH: /usr/local/apache-tomcat8/bin/bootstrap.jar:/usr/local/apache-tomcat8/bin/tomcat-juli.jar
Using CATALINA_OPTS:
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
liying@liyingdeAir bin % ./startup.sh
Using CATALINA_BASE: /usr/local/apache-tomcat8
Using CATALINA_HOME: /usr/local/apache-tomcat8
Using CATALINA_TMPDIR: /usr/local/apache-tomcat8/temp
Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
Using CLASSPATH: /usr/local/apache-tomcat8/bin/bootstrap.jar:/usr/local/apache-tomcat8/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
image.png
输入用户名与密码,即刚设置的 tomcat 与 tomcat8
image.png
image.png
6、Tomcat的目录结构及作用
|- bin:存放tomcat的命令。
catalina.bat命令:
startup.bat-> catalina.bat start
shutdown.bat- > catalina.bat stop
|- conf:存放tomcat的配置信息。其中server.xml文件是核心的配置文件。
|-lib:支持tomcat软件运行的jar包。其中还有技术支持包,如servlet,jsp
|-logs:运行过程的日志信息
|-temp:临时目录
|-webapps:共享资源目录。web应用目录。(注意不能以单独的文件进行共享)
|-work:tomcat的运行目录。jsp运行时产生的临时文件就存放在这里
|- WebRoot :web应用的根目录
|-静态资源(html+css+js+image+vedio)
|-WEB-INF:固定写法。
|-classes:(可选)固定写法。存放class字节码文件
|-lib:(可选)固定写法。存放jar包文件。
|-web.xml
注意:
1)WEB-INF目录里面的资源不能通过浏览器直接访问
2)如果希望访问到WEB-INF里面的资源,就必须把资源配置到一个叫web.xml的文件中。
7、Tomcat_web.xml配置详解
tomcat生命周期 :web.xml的加载过程是context-param >> listener >> fileter >> servlet
- 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param>
- 紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.
- 容器将<context-param></context-param>转化为键值对,并交给ServletContext.
- 容器创建<listener></listener>中的类实例,即创建监听.
web.xml标签
<context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/applicationContext*.xml
</param-value>
</context-param>
作用:该元素用来声明应用范围(整个WEB项目)内的上下文初始化参数。param-name 设定上下文的参数名称。必须是唯一名称param-value 设定的参数名称的值
<listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
作用:只初始化一次,随web应用的停止而销毁。主要作用是: 做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等 例子表示初始化Spring上下文
常用监听:
-
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> :spring自动装配application
-
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>:Spring 刷新Introspector防止内存泄露
<filter>
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>xxxxx.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
作用:针对url配置的过滤器类
<session-config>
<session-config>
<session-timeout>2</session-timeout> //2分钟后session失效
</session-config>
- 优先级:Servlet中API设置 > 程序/web.xml设置 > Tomcat/conf/web.xml设置
<error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type> //没有处理此类异常进入
<location>/common/500.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/common/500.jsp</location>
</error-page>
作用:系统的最后屏障,对某些异常和异常状态码的最后检测防止系统进入不可预计的页面
<jsp-config>
作用:配置Jsp页面相关信息
- <taglib>:自定义标签库
记得重启tomcat,终端输入:brew services restart tomcat
网友评论