1 概念
协议: HTTP协议 B/S
TCP/IP协议 C/S
C/S: Client Server 客户端/服务器 微信 qq
劣势: 需要安装客户端, 更新麻烦
优势: 对网络环境要求没有那么高, 流畅
B/S: Browser Server 浏览器/服务器 www.baidu.com www.taobao.com -> web应用
优势: 不需要安装客户端, 不需要手动更新
劣势: 对网络环境要求很高
web应用: 服务器中运行的Java程序
服务器: 其他的客户端都可以访问到
1.硬件: 电脑 (网络) 刀片机
2.软件: 不同的软件/程序, 例如: mysql服务器, web服务器
2 tomcat
1 目录结构
bin: 脚本 - 命令
.sh -> linux
.bat -> windows
conf: 配置文件
server.xml
web.xml
lib: 类库 -> JavaEE要使用的类库
servlet-api.jar
jsp-api.jar
webapps: web applications
部署web应用
2 部署方式
1.在外部随意创建一个目录, 放置一些 web 静态资源
将这个目录打包 xx.war 格式
(在服务器启动的情况下) xx.war 复制到 webapps下
应用名就是 war 文件的名字 (hi)
访问: http://localhost:8081/hi/hi/table.html
卸载: 删除 xx.war 文件
好处: 部署和卸载 都不需要重启服务器
2.在外面随意创建一个目录, 放置一些 web 静态资源
创建一个xml文件 xx.xml
内容:
xml文件移动到 conf/catalina/localhost/
例: 文件夹(haha) hehe.xml
虚拟目录: xml文件的名字
卸载: 删除xml文件 不需要重启服务器
IDEA使用的部署方式, 最常用的部署方式
3 常见状态码
200 ok 响应成功
404 not found 资源没有找到
304 访问缓存
500 web应用出现异常
302 重定向 location.href
403 4xx 5xx 3xx
4 web目录结构
1 web应用目录结构
应用 Hello
|- web静态资源 html css js 图片…txt
css/xx.css 目录结构随意
|- WEB-INF: 资源受保护的, 客户端不能直接访问
|- classes(D): java代码编译后类路径
|- lib(D): jar包
|- web.xml: web应用的描述文件
2 web工程的结构
src: java相关代码和配置文件
web:
web静态资源
WEB-INF
5 单例模式
程序运行期间, 类只有一个对象
1.构造器私有
2.给外面提供一个静态方法, 用于获得单例对象
3.自己类中定义一个静态的自己类型的成员变量(引用)
// 单例模式: 懒汉模式 饿汉模式
public class Single {
// 懒汉模式: 在静态方法中初始化
/*private static Single single;*/
// 饿汉模式: 声明完直接初始化
private static Single single = new Single();
// 1.构造器私有
private Single() {
}
// 2.给外部提供一个静态方法 - 获得单例对象
public static Single getInstance() {
if (single == null) {
single = new Single();
}
return single;
}
}
6 Servlet
作用: 接收请求, 返回响应
1 使用步骤
1.继承 HttpServlet 类
HttpServlet extends GenericServlet
实现了service方法
调用service(HttpServletRequest req, HttpServletResponse resp)
判断请求方式, 从而决定调用 doGet 还是 doPost
GenericServlet implements Servlet
public class Demo3Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException