目录
1.关于系统架构
系统架构包括C/S架构和B/S架构
2.C/S架构是什么?
C/S全称是Client/Server,也就是客户端/服务器。
C/S架构的软件有QQ、英雄联盟等。
特点:需要安装特定的客户端软件。
优点:
速度快、体验好、界面酷炫、服务器压力小、安全等
缺点:
升级维护比较麻烦
3.B/S架构是什么?
B/S全称是Browser/Server,也就是浏览器/服务器。
实际上B/S结构的系统还是一个C/S,只不过这个C比较特殊,这个Client是一个固定不变的浏览器软件。
优点:
升级维护方便、不需安装软件即可操作
缺点:
速度慢、体验差、不安全
4.Web服务器与应用服务器
Web服务器有:Tomcat、jetty
应用服务器:JBOSS、WebLogic、WebSphere
web服务器与应用服务器之间的区别?
应用服务器实现了JavaEE的所有规范(JavaEE有13个不同的规范)
Web服务器只实现了JavaEE钟大哥Servlet + JSP两个核心规范
5.tomcat中startup.bat的执行流程
执行startup.bat,实际上是指向执行了catalina.bat文件,catalina.bat里面又使用了JAVA_HOME,再找到MAlNCLASS=org.apache.catalina.startup.Bootstrap,也就是main方法,启动服务器。
6.前端访问路径的简写形式
正常的地址访问形式如href="http://127.0.0.1:8080/oa/login.html",可以简化掉协议、IP地址以及端口号,直接href="/oa/login.html"即可,注意开头有个斜杠。
7.Servlet对象的生命周期
默认情况下,服务器在启动的时候,Servlet对象并不会被实例化(因为构造方法未执行)。
如果想要让Servlet对象在服务器启动时就创建,需要在web.xml中的<servlet>标签中添加<load-on-startup>子标签,中间填写整数即可,数字越小,优先级越高,如写0。
用户在发送第一次请求的时候, 先执行构造方法,然后执行init方法,且都只执行一次。然后执行service方法,每次请求执行一次service方法。
所以,Servlet对象是单例的(单实例的,但是,Servlet对象是单实例的,Servlet类并不符合单例模式,我们称之为假单例。之所以单例是因为Servlet对象的创建我们程序员管不着,这个对象的创建只能是Tomcat来说了算,Tomcat只创建了一个,所以导致了单例,但是属于假单例。真单例模式,构造方法是私有化的。)
服务器关闭前,destroy会被调用。
8.ServletConfig接口详解
一个Servlet对象对应一个ServletConfig对象。(一对一关系)
ServletConfig里面包装了web.xml中<servlet>标签中的内容。
可以获取初始化参数的key和value,通过getInitParameter(String)和getInitParameterNames()方法
9.ServletContext接口详解
对于一个webapp来说,ServletContext对象只有一个。
常用方法:
public string getInitParameter(string name); //通过初始化参数的name获取value
public Enumeration<string> getInitParameterNames(); // 获取所有的初始化参数
// 以上两个方法是ServletContext对象的方法,获取的是如下配置在web.xml中的信息:
<context-param>
<param-name>pageSize</param-name>
<param-value>10</param-value>
</context-param>
<context-param>
<param-name>startIndex</param-name>
<param-value>0</param-value>
</context-param>
常用方法:
getContextPath():获取应用上下文的根路径
getRealPath(String):获取文件的绝对路径,从web根目录下开始获取,可以写“/”或者不写。
ServletContext对象还有另一个名字:应用域(后面还有其他域,例如:请求域、会话域)
如果所有的用户共享一份数据,并且这个数据很少被修改且数据量很少,可以将这些数据放到ServletContext这个应用域中
10.HttpServlet的继承结构
HttpServlet继承GenericServlet,GenericServlet实现Servlet
11.Get请求和Post请求的区别?
get请求只能携带普通的字符串,且发送的长度有限制。
post请求可以发送任何类型的数据,包括字符串、视频、声音、图片等,理论上没有限制。
get请求支持缓存,get请求的响应结果会被缓存起来。实际上每次get请求,浏览器都先会在缓存中找&#x