# 学习目标
## 1. Tomcat & Servlet
- [ ] 能够理解WEB动态资源概念
- [ ] 能够安装、启动和关闭Tomcat服务器
- [ ] 掌握运用Tomcat服务器部署WEB项目的三种方式
- [ ] 能够说出Servlet的编写流程
- [ ] 能够说出Servlet的生命周期
- [ ] 能够使用注解开发Servlet
- [ ] 能够理解HTTP协议请求内容的格式
- [ ] 能够处理HTTP请求参数的乱码问题
- [ ] 能够使用Request对象获取HTTP协议请求头的值
## 2. cookie& session
- [ ] 能够说出会话的概念
- [ ] 能够说出两种会话技术的区别
- [ ] 能够创建、发送、接收、删除cookie
- [ ] 能够说出cookie执行的原理
- [ ] 能够获取session对象、添加、删除、获取session
- [ ] 能够说出session执行的原理
- [ ] 能够说出session的创建、销毁机制
## 3. EL && JSTL
- [ ] 能够说出el表达式的作用
- [ ] 能够使用el表达式获取javabean的属性
- [ ] 能够使用jstl标签库的if标签
- [ ] 能够使用jstl标签库的foreach标签
# 5. filter & listener
- [ ] 能够说出过滤器的作用
- [ ] 能够编写过滤器
- [ ] 能够说出过滤器声明周期相关方法
- [ ] 能够根据过滤路径判断指定的过滤器是否起作用
- [ ] 能够理解什么是过滤器链
- [ ] 能够完成filter完成用户登录验证案例
- [ ] 能够理解动态代理对类的方法进行增强
- [ ] 能够了解listener概念
# day13 Tomcat&Servlet
## 1. web服务器软件
#### 1. 服务器
安装了服务器软件的计算机
#### 2. 服务器软件
接收用户的请求,处理请求,做出响应
web服务器软件:接收用户的请求,处理请求,做出响应
- 在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目
- web容器
#### 3. 常见java相关的web软件
- webLogic: oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费
- webSphere: IBM
- JBOSS: JBOSS公司
- Tomcat: Apache基金组织,中小型,支持少量javaEE规范servlet/jsp,开源的,免费的
#### 4. javaEE:
java语言在企业级开发中使用的技术规范的综合,一共规定了13项大的规范。
## 2. Tomcat
### 1. 安装卸载相关
1. 下载
2. 安装
3. 卸载
4. 启动
- `bin/startup.bat`,双击运行该文件即可
- 访问:浏览器输入:`http://localhost:8080` `http:别人的ip:8080`
5. 关闭
- 正常关闭 `ctrl+c` 或者打开`shutdown.bat`
- 暴力关闭 直接点close
6. 配置
启动可能遇到的问题:
1. 黑窗口一闪而过:
- 原因:没有正确配置JAVA_HOME环境变量,或者CATALINA_HOME之类的环境变量错误
- 解决方案:正确配置JAVA_HOME环境变量,或者在CMD命令行启动,会报相应的错
- 或者编辑 `startup.bat`,在末尾加一个pause
2. 启动报错
- 暴力:找到占用的端口号,并且找到对应的进程,杀死该进程
- `netstat -ano`
- 温柔:修改自己的端口号
- `conf/server.xml`
- `<Connector port="8888" protocol="HTTP/1.1"`
- 一般会将tomcat的默认端口号修改为80。80端口号是http协议的默认端口号。
### 2. 配置 部署项目的方式
#### 直接将项目放到webapps目录下
(使用的较多,方便,针对小项目)
- `/hello:`项目的访问路径--> 虚拟目录
- 简化部署:将项目打包为war包,再将war包放到webapps目录下
- war包会自动解压缩
#### 配置conf/server.xml文件
(强烈不建议使用)
在`<Host>`标签体中配置 `<Context docBase="D:/hello" path="/hehe" />`
docBase 项目存放的位置,path虚拟目录
#### 热部署
在conf/Catalina\localhost创建任意名称的xml文件,在文件中编写
`<Context docBase="D:\hello">`
- 虚拟目录:xml文件的名称 热部署,想删除,修改扩展名为xxx_bat即可
### 3. 静态项目和动态项目
#### 1. java动态项目的目录结构
```
-- 项目的根目录
|
|