目录
1、基本概念
1.1、简介
WEB(World Wide Web)万维网,它是一种基于超文本和HTTP协议的、全球性的、动态交互的、跨平台的分布式图形信息系统。简单来说web就是网页的意思,所以web开发就是基于网页上进行数据交互的一种开发模式。而以Java语言编写的可以通过浏览器访问的程序叫JavaWeb,核心是请求响应
.
1、请求(Request):客户端发送给服务器的数据。
2、响应(Response):服务器给客户端回传的数据。
请求响应成对出现,当用户根据页面向服务器发送请求,服务器根据请求,从数据库获取相应的数据,再回传到客户端,经浏览器渲染后显示给用户
在Internet上供外界访问的Web资源共有两种:
-
静态web资源:指web页面中那些始终不变的数据。当用户在访问界面时,不需要关联数据库,而返回的必要数据,这些数据无论在什么地方、什么人、什么机器访问都始终不变。
一般是.html和.css类型文件
,页面无法动态更新,用户看到的界面不变,数据无法实现持久化,交互性差。 -
动态web资源:指web页面中随着需求始终在变化的数据。这些数据基本根据用户的需求或其他原因,通过对数据的操作,处理后返回的不同信息,是人机交互的一个重要标志。
一般是Servlet/JSP类型文件
,更新起来比较麻烦,需要重写后台程序,但是与用户有良好的交互性,它可以个数据库相连接,实现数据的持久化。JavaWeb的开发是指对动态web资源开发的技术,如何运用不同的技术实现一个
友好交互
的动态页面。网站访问的步骤: 当在浏览器输入一个域名时,服务器检查C:\Windows\System32\drivers\etc\hosts文件内相应的域名映射,如果存在返回相应的IP地址,如果不存在会去DNS(管理域名)服务器寻找,都找不到则显示不存在。
1.2、程序结构
web开发一般采用B/S(Broswer/Servlet)(浏览器/服务器)结构, 分为前台、后台。用户操作浏览器,发送相应请求给服务器,服务器根据请求调取所需数据返回浏览器渲染样式。
一般用HTML来显示内容、CSS渲染样式、JavaScript进行数据的交换。 主要是供外界访问,提供服务。而这些可以访问的页面本质其实就是一个个的文件(html、css、js、jsp、servlet、java程序、jar包、配置文件等),这些文件部署在服务器(Tomcat)中统一管理运行,供外界访问。
js/Servlet是sun公司主推的一种B/S架构,基于java语言,可以承载高并发、高可用、高性能带来的影响。
1.3、Tomcat服务器
Tomcat是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,由Apache、Sun 和其他一些公司及个人共同开发而成,是Apache软件基金会的Jakarta项目中的一个核心项目。它适用于中小型和并发量不大的程序使用,是开发JSP的首选服务器。
服务器主要是用于处理用户的请求,执行Java代码,将所得的数据响应给客户端。
常见的服务器:
1、Tomcat:免费开源的Web应用服务器,轻量级应用服务器,在中小型系统和并发用户不是很大的场景下适用,是目前比较流行的web应用服务器。
2、Jboss:遵从JavaEE规范开发、免费开源、纯Java的EJB服务器,支持所以JavaEE规范,学习的曲线较高。
3、GlassFish:Oracle公司开发的JavaWeb服务器,属商业级服务器,产品级量,应用少。
4、Resin:CAUCHO公司产品,非常流行的服务器,性能优良,应用较多。
5、WebLogic:Oracle公司产品,应用广泛的web服务器,支持JavaEE规范,适合大型项目使用,适合大公司使用。
1.3.1、下载安装
Tomcat官网:进行下载安装
conf下的Server文件内可以修改端口号、主机等基础信息。
//Tomcat的默认端口号为8080,Mysql为3306,http为80,https为443
//端口号范围1~65535,其中1·1000一般是系统使用的
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
//主机名127.0.1.1(localhost)(可改),网站存放位置webapps
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
配置环境变量:配置环境变量:在系统变量中配置TMOCAT_HTME 值为TomCat的安装路径,然后在在path中设置bin路径
在path中设置如下:
1.3.2、访问测试
在cmd中cd到tomcat的bin目录下使用 service.bat install 命令安装服务。
启动Tomcat,然后访问网址http://localhost:8080/ ,进入即为启动成功
启动成功
启动失败的常见原因:
1、Tomcat已经启动
2、webapps中的项目有错误:可以将项目删除再重启,如果可以重启则为项目错误
内部文件夹名称出错:WEB-INF、classes、web.xml等
web.xml配置文件的配置信息错误
3、JDK等所需环境有误
1.3.3、配置文件
1、server文件
server.xml 是tomcat 服务器的核心配置文件,包含了Tomcat的 Servlet容器的所有配置。根标签是
<server>
....
</server>
内嵌的标签为:
-
Listener:监听器
<Listener className="路径" />
-
GlobalNamingResources:全局命名资源
<GlobalNamingResources> <!-- 可编辑的用户,也可以使用UserDatabaseRealm用来认证用户 --> <Resource /> </GlobalNamingResources>
-
Service:Service 实例,默认名为 Catalina。(一个Server服务器,可以包含多个Service服务。)
<Service name="Catalina"> .... </Service>
内嵌标签为:
-
Executor:Executor 用于配置Service 共享线程池
<Executor name="tomcatThreadPool" 线程池名称 namePrefix="catalina‐exec‐" 每个线程的名称前缀 maxThreads="150" 最大线程数 minSpareThreads="4" 核心池线程数 maxIdleTime="6000" 线程空闲时间,默认6000(1分钟) maxQueueSize="Integer.MAX_VALUE" 被执行前最大线程排队数目 prestartminSpareThreads="false" 启动线程池时是否启动 minSpareThreads部分线程。 threadPriority="5" 线程池中线程优先级,默认值为5,值从1到10。 className="org.apache.catalina.core.StandardThreadExecutor" /> 线程池默认实现类
-
Connector:配置Service 包含的链接器,配置端口号等基础信息
<Connector port="8080" 端口号 protocol="HTTP/1.1" 访问协议 connectionTimeout="20000" 接收连接后的等待超时时间 redirectPort="8443" 不支持SSL请求,接收到了一个请求,符合security-constraint约束,自动将请求重定向到指定的端口 URIEncoding="UTF-8" 编码 executor="tomcatThreadPool"/> 指定共享线程池的名称
-
Engine:用于配置Service中链接器对应的Servlet 容器。
Tomcat中有四种容器,这四个容器之间是父子关系,Engine容器包含Host容器,Host容器包含Context,Context包含Wrapper容器
<!-- name: 用于指定Engine的名称,defaultHost : 默认使用的虚拟主机名称--> <Engine name="Catalina" defaultHost="localhost"> ..... </Engine>
- Host容器:虚拟主机
- Alias:设置别名
- Context:Servlet 容器。
- Wrapper容器
- Valve:处理元素,servlet的执行阀门,可以把servlet需要处理的对象连接起来
- AccessLog组件:访问日志
- Pipeline组件:将不同容器级别串联起来的通道,当请求进来之后就可以通过管道进行流转处理。Tomcat中有4个级别的容器
- Cluster组件:把不同JVM的全局引擎容器内的所有应用都抽象成集群,让它们能在不同的JVM之间互相通信,是会话同步,集群部署得以实现。
- Realm组件:存储了用户、密码以及权限等的数据对象
- LifecycleListener组件:生命周期监听器
- Log组件:日志输出
- Host容器:虚拟主机
-
Tomcat的server.xml文件:
<!--port:Tomcat 监听的关闭服务器的端口-->
<!--shutdown:关闭服务器的指令字符串-->
<Server port="8005" shutdown="SHUTDOWN">
<!--用于以日志形式输出服务器 、操作系统、JVM的版本信息-->
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- 用于服务器启动和停止-->
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<!-- 避免jer内存泄漏 -->
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<!-- 服务器启动和停止的全局命名服务 -->
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<!--用于在Context停止时重建Executor 池中的线程 -->
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<!-- 可编辑的用户数据库,也可以使用UserDatabaseRealm用来认证用户 -->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<!--定义线程池-->
<!--<Executor ....../> -->
<!--配置使用的端口等基础信息 port端口号,protocol访问协议,connectionTimeout接收连接后的等待超时时间,redirectPort不支持SSL请求接收到了一个请求自动将请求重定向到指定的端口,URIEncoding编码-->
<Connector port="8080" 端口号
protocol="HTTP/1.1" 访问协议
connectionTimeout="20000" 接收连接后的等待超时时间
redirectPort="8443" 不支持SSL请求,接收到了一个请求,符合security-constraint约束,自动将请求重定向到指定的端口
URIEncoding="UTF-8" 编码
executor="tomcatThreadPool" 指定共享线程池的名称
maxThreads="150" 池中最大线程数。
minSpareThreads="4" 核心池线程数
acceptCount="" 接收的连接数。
maxConnections="" 接收的最大连接数
compression="on" 是否压缩。
compressionMinSize="" 压缩的大小。
disableUploadTimeout="true" /> 禁用上传超时
<!--配置Servlet 容器Engine -->
<Engine name="Catalina" defaultHost="localhost">
<!-- 集群 -->
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
<!--用户信息 -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<!--配置一个虚拟主机, Servlet 容器Host-->
<Host name="localhost" 当前Host通用的网络名称
appBase="webapps" 当前Host的应用基础目录,默认为webapps
unpackWARs="true" true:在启动时会将appBase目录下war包解压为目录 false:直接从war文件启动
autoDeploy="true"> 控制tomcat是否在运行时定期检测并自动部署新增或变更的web应用
<Alias>给Host添加别名</Alias>
<!--配置Servlet 容器Context -->
<Context docBase="Web应用目录或者War包的部署路径" path="Web应用的Context 路径">
配置一个Web应用
</Context>
<!--web应用程序之间共享认证 -->
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
<!--日志输出 -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
2、tomcat-users
Tomcat Manager是用来配置Tomcat的用户、角色等信息的,在 conf/tomcat-users.xml文件中进行配置管理,用来控制Tomcat中 host-manager、manager的访问权限。
默认情况下,Tomcat Manager是处于禁用状态的。它需要以用户角色进行登录并授权才能使用相应的功能,初始的Tomcat并没有配置任何用户,因此我们需要先进行用户配置后才能使用Tomcat Manager。
- user标签:表示一个用户,username和password表示用户名和密码,roles表示该用户所具备的权限。
- role标签:权限
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<!--
Tomcat Manager 4种角色:
manager-gui 允许访问html接口(URL路径为/manager/html/*)
manager-script 允许访问纯文本接口(URL路径为/manager/text/*)
manager-jmx 允许访问JMX代理接口(URL路径为/manager/jmxproxy/*)
manager-status 允许访问Tomcat只读状态页面(URL路径为/manager/status/*)
-->
<role rolename="manager-gui" /> (权限)
<role rolename="manager-script"/> (权限)
<role rolename="manager-jmx"/> (权限)
<role rolename="manager-status"/> (权限)
<user username="admin" password="123456" roles="manager-gui,manager-script"/> 用户
<user username="robot" password="123456" roles="manager-script"/> 用户
</tomcat-users>
3、web.xml
是Tomcat为所以的WEBA应用配置的一些默认初始值,当使用Tomcat运行web应用时,会先处理此 web.xml 文件,再处理我们自身项目中 WEB-INF下的 web.xml文件(配些会出现覆盖)。
-
Servlet Definitions和Servlet Mappings:默认的servlet映射
<!-- 默认servlet的映射,用来处理所有静态资源的请求 --> <servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- tomcat用来编译与执行jsp页面 --> <servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> <url-pattern>*.jspx</url-pattern> </servlet-mapping>
-
Filter Definitions(默认不配置):内置过滤器定义
-
Built In Filter Mappings(默认不配置):内置过滤器映射
-
Session Configuration:设置Session有效时间,默认30分钟
<session-config> <session-timeout>30</session-timeout> </session-config>
-
MIME Type Mappings:配置定义一些MIME类型。在提供静态资源时,Tomcat 会根据资源的文件扩展名自动生成一个“Content-Type“标头 ,基于这些映射。
<mime-mapping> <extension></extension> <mime-type></mime-type> </mime-mapping>
-
Welcome File List:定义的默认初始页面
<welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
1.3.4、项目部署
-
部署到webapps中:部署到Tomcat里的项目放到webapps文件夹中,名字为项目名字,其中index一般为默认主页,WEB-INF文件夹内有web.xml配置文件、存放java程序的classes文件夹、存放jar包的lib文件夹、存放资源文件(css、js等)的static文件夹
-
在tomcat\conf\Catalina\localhost文件夹下,创建一个xml文件,,这样就不需要把项目放到webapps中就可以访问项目了。
xml文件介绍
xml是一种可扩展的标记性语言。主要用来作为配置文件使用。
xml文档有五部分组成:用法和HTML的标签类似
1、声明: <?xml version="版本" cncoding="utf-8" ?>
2、元素(标签): <></>
3、xml属性:标签内的属性
4、xml注释: <!--注释-->
5、文本区域:标签之间的文本内容;<![cdata[文本]]>这种格式文本内容不会解析
手动打开的html页面和服务器访问的html页面的区别:
1、手动打开的html页面遵循的是file协议,直接根据file后的路径读取,解析在浏览器 2、服务器使用的是http协议,需要有ip地址,端口号,项目名称等信息。然后服务器根据这个请求信息寻找到相应的文件,然后把内容响应给客户端,解析在浏览器。
1.3.5、IDEA整合TomCat
- idea中导入Tomcat
- 创建web项目
- idea使用Tomcat,然后运行项目