web相关概念
- 软件架构:
C/S:客户端/服务器端
B/S:浏览器/服务器端
- 资源分类:
静态资源:所有用户访问之后,得到的结果都是一样的。静态资源可以直接被浏览器解析。如html、css、JavaScript
动态资源:每个用户访问相同的资源之后,得到的结果可能不一样。动态资源被访问之后,需要先转换为静态资源,再返回给浏览器。如servlet、jsp、php、asp。
- 网络通信三要素
IP:电子设备(计算机)在网络中的唯一标识
端口:应用程序在计算机中为唯一标识
传输协议:规定了数据传输的规则
基础协议:
tcp:安全协议,三次握手。
udp:不安全,速度快
web服务器软件
服务器:安装了服务器软件的计算机
服务器软件:接收用户的请求,处理请求,作出响应
web服务器软件:除了服务器软件的功能,还可以部署web项目,让用户通过浏览器访问项目。
常见Java相关web服务器软件:
webLogic:Oracle公司,大型javaEE服务器,支持所有的JavaEE规范,收费的。
(JavaEE,Java语言在企业开发中的使用的技术规范的总和,一共规范了13项大的规范)
webSphere:IBM公司,大型javaEE服务器,支持所有的JavaEE规范,收费的。
JBOSS:JBOSS公司,大型javaEE服务器,支持所有的JavaEE规范,收费的。
Tomcat:Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范servlet/jsp,开源的、免费的。
Tomcat
文件夹目录解读:
启动可能遇到的问题:
黑窗口一闪而过
原因:未正确配置JAVA_HOME
启动报错:
找到占用8080端口的进程PID,关掉
命令窗口:netstat --ano
或者修改自身的端口
Tomcat/conf/server.xml
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
修改默认端口号
关闭:
bin/shutdown.bat
或者命令窗口:Ctrl+c
部署:
部署项目的方式:
1、直接将项目放入webapps目录下
项目的访问路径===》虚拟目录
简化部署:将项目打包成war包,再放入webapps目录下,war包会被自动
解压缩。
2、配置文件:server.xml
<Host>标签中部署
<!--部署项目--> <Context docBase="D:\English\IntelliJIDEAProjects\Java\webLearning\hello" path="/aaa"/>
docBase是项目路径
path是访问时的虚拟路径
3、server是Tomcat核心配置,不建议随意修改。
conf\Catalina\localhost目录下创建xml文件,加入代码:
<Context docBase="D:\English\IntelliJIDEAProjects\Java\webLearning\hello"/>
静态项目和动态项目
目录结构:
java动态项目:
根目录
WEB-INF目录
web.xml(web项目核心配置文件)
classes目录:放置字节码文件的目录
lib目录:放置依赖jar包
集成IDEA
servlet
1、概念:运行在服务器端的小程序
servlet是一个借口,定义了java类被浏览器访问的规则
我们定义一个类,实现servlet接口即可
2、快速入门:
创建JavaEE项目
定义一个类,实现servlet接口
实现接口中的抽象方法
配置Servlet:在src/main/webapp/WEB-INF/web.xml中配置
<!--配置servlet--> <servlet> <servlet-name>demo1</servlet-name> <servlet-class>com.zhang.myfirstjavaee.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>demo1</servlet-name> <url-pattern>/demo1</url-pattern> </servlet-mapping>
3、执行原理:
当服务器接收到客户端浏览器的请求之后,会解析请求URL路径,获取访问的Servlet的资源路径。
查找web.xml文件,是否有对应的<url-pattern>标签体内容
如果有,则再找到对应的<servlet-class>全类名
Tomcat会将字节码文件加载到内存,创建对象
调用方法
4、Servlet中的方法:
inti():初始化方法,在Servlet被创建的时候执行,且只会被执行一次
getServletConfig():Servlet的配置对象
service():提供服务的方法,在Servlet被访问时执行,可执行多次
getServletInfo():获取Servlet的一些信息:版本、作者、...
destroy():销毁方法,在服务器被正常关闭时执行,且执行一次
5、Servlet中的生命周期:
被创建:执行init方法,只执行一次
默认情况下,第一次被访问时创建
可以修改创建时机——在web.xml文件中,<serclet/>标签内,加入<load-on-startup>标签,当值为负数时,表示第一次被访问时就创建,如果为0或者正整数,则表示当服务器启动时被创建。
Servlet的init方法只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的;多个用户访问时可能存在线程安全问题。尽量不要在Servlet中定义成员变量,及时定义了,也不要赋值。
提供服务:执行service方法,执行多次
每次访问Servlet时,都要调用
被销毁:执行destroy方法,执行一次
服务器关闭,Servlet销毁
只有服务器正常关闭时,才会执行
一般用于释放资源
6、注解配置(不用写web.xml了)
在类上使用注解代替配置xml文件
7、Servlet体系
可以不用实现Servlet接口,而是继承其实现类,这样就可以不用把每一个Servlet的抽象方法都去重写
实现类有:
GenericServlet:将其他方法作为空实现,只将service方法作为抽象方法
HttpServlet:(主用)
8、Servlet相关配置
注解里面的值是一个数组,所以可以配置多个访问路径
路径定义规则:
/XXX
/XXX/XXX,多层路径,目录结构
*.do:do是自定义拓展名