JavaWeb面试题 (一)
1. 常见的软件系统结构
1. C/S
- C/S结构即客户端/服务器(Client/Server),例如QQ;
-
缺点:软件更新时需要同时更新客户端和服务器端两端,比较麻烦;
-
优点:安全性比较好
2. B/S
-
B/S结构即浏览器/服务器(Browser/Server);
-
优点:只需要编写服务器端程序;
-
缺点:安全性较差。
2. 常见的Web服务器
服务器 所属公司
- Tomcat (Apache)
- Websphere (IBM)
- JBoss (JBoss)
- Weblogic (Oracle)
3.Servlet的生命周期, 和线程安全
出生(初始化) ——> 服务 ——> 死亡
1. Servlet的出生
服务器会在Servlet 第一次被访问时创建Servlet, 创建Servlet后, 会立刻调用init()方法, init()方法在Servlet的一生中只会被调用一次, 若下次继续访问该Servlet, 就不会创建实例了, 继续用上次创建的实例
2. Servlet的服务
当服务器每次接收到请求时,都会去调用Servlet的service()方法来处理请求。 服务器接收到一次请求,就会调用service() 方法一次
3. Servlet的死亡
当服务器关闭时, Servlet会调用destroy()方法来终结自己, 可以把释放资源的代码放到Servlet的destroy()
4. Servlet和线程安全
因为一个类型的Servlet只有一个对象, 所以会出现一个Servlet处理多个请求, 那么Servlet不是线程安全的
所以我们不应该在Servlet中创建成员变量,因为可能会存在一个线程对这个成员变量进行写操作,另一个线程对这个成员变量进行读操作。
4. 处理请求的两种方式
1. 请求转发
场景: 客户端向服务器发起请求, Servlet处理完后, 转发到另一个Servlet进行处理
特点:
- 只发送一次请求
- 地址不会变化
2. 重定向
场景: 客户端向服务器发起请求, 服务器通知客户端不能处理, 让客户端重新访问另一个地址
特点:
- 会发送两次请求
- 地址会发生变化