JavaWeb
是基于请求响应来开发的。
请求?是指客户端给服务器发送数据,Request
响应?是指服务器给客户端回传数据,Response
关系?它们是成对出现的
Web资源的分类?
按照技术和呈现的效果不同,分为静态和动态两种。
静态资源:html
页面,css
样式,js
代码,text
文本,mp4
视频,jpg
图片…
动态资源:jsp
页面,servlet
程序…
常用的Web服务器?
Tomcat
⭐:由Apache组织提供的,开源免费,提供对jsp和servlet的支持,是一种轻量级的JavaWeb容器(服务器)
Jboss
:遵循JavaEE规范,开源免费,纯Java的EJB服务器,支持所有的JavaEE规范
GlassFish
:是Oracle公司的,强健的商业服务器,达到产品级重量(收费,应用不多)
Resin
:是CAUCHO公司的,也流行,也对提供对jsp和servlet的良好支持,性能比较优良,Java语言开发(收费,应用较多)
WebLogic
:是Oracle公司的,收费中应用最广泛的Web服务器,支持JavaEE,还在不断完善,适合大型项目(收费,用的不多,适合大公司)
Tomcat
服务器和Servlet
版本的对应关系
Tomcat | Servlet/JSP | JavaEE | 运行环境 |
---|---|---|---|
… | |||
7.0 | 3.0/2.2 | 6.0 | JDK6.0 |
8.0 | 3.1/2.3 | 7.0 | JDK7.0 |
一般企业都是用 7.0/8.0 版本
Servlet程序2.5版本是现在市面使用最多的版本(xml配置)。到了3.0之后,就是注解版本的Servlet使用了
官网找到对应版本下载解压就行,官网:Apache Tomcat® - Welcome!
目录结构:
bin
目录:存放tomcat服务器的可执行程序
conf
目录:存放tomcat服务器的配置文件
lib
目录:存放tomcat服务器jar包,对JavaEE规范的实现类
logs
目录:存放tomcat服务器运行时输出的日记信息
temp
目录:存放tomcat服务器运行时产生的临时数据
webapps
目录:存放部署的web工程。一个目录一个工程
work
目录:是tomcat服务器工作时的目录,用来存放tomcat运行时jsp翻译为Servlet的源码和Session动画的目录
启动Tomcat服务器?
找到tomcat/bin/startup.bat
双击打开
打开命令行,cd
到Tomcat的bin
目录下,敲 catalina run
测试是否启动成功? 在浏览器中输入 http://localhost:8080
出现就说明启动成功
启动不成功可能是
JAVA_HOME
环境变量没配置好
停止Tomcat服务器?
1.关闭启动时的那个窗口,直接点❌ ,或者 ctrl + c
2.找到tomcat/bin/shutdown.bat
双击!
如何修改Tomcat端口号?
默认端口号是8080,tomcat/conf/server.xml
, 打开找到Connector
标签,修改port
属性就行了(范围1-65535)
插曲:http协议默认端口号是80,写不写都是80,例如
http://www.baidu.com:80
第一种:只需要整个web工程的目录拷贝到 tomcat/webapps/
目录下即可。
如何访问我们的工程?输入http://localhost:8080/项目名
http://localhost:8080
是到webapps目录下,/项目名
是到我们的工程(默认访问项目下的 index.html
)
把localhost改为本机的ip,这样所有人都能访问这个页面了,
http://192.168.177.xxx:8080/mybook/index.html
第二种:tomcat/conf/Catalina/localhost
在这个目录建立一个xml文件,例如abc.xml,里面写:
<Context path="/abc" docBase="D:\book" />
ROOT工程的访问?以及默认 index.html页面 的访问??
当输入
http://ip:port/
没有输入工程名时,默认访问ROOT工程,默认是那个头同时当输入
http://ip:port/工程名
没有输入资源名时,默认访问工程中的 index.html 页面
把文件直接拖到浏览器打开
,和在浏览器输入 http://ip:prot/工程名
访问有什么区别?
手托html页面到浏览器,浏览器显示 file://D:/工程名/资源名
,是file协议,表示告诉浏览器直接读取file协议后面的路径,解析展示在浏览器上即可,完全不走网络。
后者,浏览器显示http://ip:port/工程名/资源名
,是http协议,背后的原因和前者完全不同。客户端(浏览器)请求发给服务器,服务器收到请求后,读取你要访问的资源文件,然后回传给客户端的页面内容,客户端(浏览器)得到资源文件/页面内容,解析展示在浏览器上
(作者用的是IDEA2020.1版本)
整合:
File | Settings | Build, Execution, Deployment | Application Servers | +号 添加 Tomcat Servers,选中当初解压的路径到 apache-tomcat-8.5.73 就行了
创建的工程的适合就能选中服务器了
File | New | Project | Java Enterprise | Application Servers选择你需要的服务器 | Next
创建工程/创建模块 -> 选择JDK,JavaEE,Application Servers的版本 -> 下面勾选上 Web Application
动态WEB工程目录介绍:
工程/web
目录:存放web工程的资源文件,例如html页面,css文件,js文件…
工程/web/WEB-INF
目录:是受服务器保护的目录,浏览器无法直接访问到此目录的内容
工程/web/WEB-INF/web.xml
: 它是整个web工程的配置部署描述文件,可以在这里配置很多web的组件,例如Servlet程序,Filter过滤器,Listener监听器,Session超时…
我们习惯在工程/web/WEB-INF
目录下,创建一个lib目录,专门存放第三方的jar包,记得Add library
工程/src
目录:存放自己编写java源代码
右上角,点锤子右边的那个矩形,点Edit Configurations -> Name
(修改web工程对应的Tomcat运行实例名称,要不然多个工程就分不开了,建议和当前模块名/工程名一致)
点Edit Configurations -> Deployment
(在Name下面), 可以修改当前Tomcat运行实例跑的web工程(可以将需要部署的web工程添加/删除到Tomcat运行实例中),
最下面是它默认生成的工程路径。Application context
:/dynamicobject_war_exploded,一般改为和模块名/工程名一致,即/dynamicobject
点Edit Configurations -> Service
(在Name下面),Service 的里面的 url
是启动Tomcat运行实例时默认打开访问的地址,里面的 On frame deactivation
可以改为 update classes and resource(热部署),当页面发送变化时,刷新就会看到。
点右上角绿色的箭头 启动Tomcat运行实例(启动后自动访问上面那个url地址),点红色方块是 停止运行实例
运行后,有个循环的箭头是重启
,有下面四个选择:
update resource
是更新web工程中的资源到Tomcat运行实例中update classes and resource
是更新资源和Class字节码。前面两个都是热部署Redeploy
是重新部署web模块,但不重启Tomcat运行实例Restart Service
重启Tomcat实例,并更新web模块内容