大数据正式26
javaWeb复习
- 概述
- 静态web资源--本质上是文件
- html
- css
- JavaScript
- 其他文件资源--图片、视频、音频等
- 动态web资源--本质上是程序
- Servlet
- jsp
- web容器
- Tomcat
- HTTP协议
- 数据库
- MySql
- JDBC
- 静态web资源--本质上是文件
- HTML Css JavaScript Jquery
- 属于web前端技术
- 这块能看懂即可【^~^】
- web容器--Tomcat
- 常见的web服务器
- Tomcat:开发、测试、部分网站的后台
- WebLogic
- WebSphere
- Tomcat
- 虚拟主机:tomcat中允许配置多个网站,多个网站外界访问向访问多个服务器一样
- web应用:一个站点内可能不止提供一种功能,每个功能相当于一个web应用,一个web应用资源按照一定结构放置
- web的虚拟路径映射:web应用的存放为了安全,不应该暴露给用户,所以可以将真实的路径映射为一个虚拟路径供外界访问
- web应用的目录结构
- 虚拟主机的配置
- 在conf下的server.xml中配置
Host 【name AppBase】
- 还需要在DNS上配置映射关系--ip和主机
- 在conf下的server.xml中配置
- web应用的配置
- Context【path docBase】
- xml文件名称为虚拟路径,内容为Context【docBase】
- 直接放在webApps下
- war包
- 通用web.xml和context.xml----通用默认的配置文件
- MyEclipse发布应用
- 常见的web服务器
Http协议
- 概述
- Http是一种通用的应用层协议,客户端和服务端通讯的规则---底层是Tcp/Ip协议
- 基本原则
- 基于请求响应模式
- 一次请求,一次响应
- 请求只能客户端发起
- 版本区别
- HTTP1.0--一次请求,一次响应,不能保持连接
- HTTP1.1--短时间提供保存后连接
- HTTP请求
- 一个请求行
- GET /index.jsp Http/1.1
- 请求方式,7种【常见的是GET、POST】
- 若干请求头
- 空行
- 请求体
- 一个请求行
- HTTP响应
- 一个状态行
- HTTP/1.1 200 ok
- 若干响应头
- 一个空行
- 实体内容
- 一个状态行
Servlet
- Servlet是什么:动态web资源开发
- 开发步骤
- 编写Servlet
- web.xml配置
- 继承结构
- Servlet
- GenericServlet
- Http Servlet
- GenericServlet
- Servlet
- Servlet的生命周期
- 第一次访问进行创建init,然后常驻内存调用Service方法,销毁之前调用destory方法
- 开发步骤
Request
- 概述
- http请求的对象
- 继承结构
- ServletResponse
- HTTPServletResponse
- ServletResponse
- 主要功能
- 获取请求头
- getHeader(name)
- getHeaderNames()
- getIntHeader(name)
- getDataHreader
- 获取请求参数
- getParameter
- 实现转发包含
- request.getRequestDispatcher("").forword(req,resp);
- request.getRequestDispatcher("").include(req,resp);
- 作为域来使用
- 生命周期:请求开始,请求结束销毁,整个过程中共享数据
- 乱码
- new String(get:request.getParameter("name").getBytes("encode"),"encode")
- post:request.setCharacterEncoding("encode");
- 获取请求头
Response
- 概述
- 继承结构
- ServletResponse
- HTTPServletResponse
- ServletResponse
- 主要功能
- 设置状态码
- setState(int)
- setState(int,String)
- 设置相应头
- setHeader()
- setIntHeader
- setDataHeader()
- 获取输出流
- resp.getPrintWriter();
- 实现重定向
- sendRedirect
- 定时刷新
- refresh,url
- 禁止缓存
- expires
- cache
- progma
- 乱码
- response.setCharacterEncoding("encode");
- response,setContentType("text/html;charset=encode");
- 设置状态码
ServletConfig
- 概述
- 当前的Servlet的参数
- 获取
- servlet。getContextConfig
- 方法
- getInitParameter(name)
- getInitParameterNames()
ServletContext
- 概述
- 代表当前web对象
- 生命周期:web应用开始到web应用结束
- 获取
- servletConfig.getServletContext();
- this.getServletContext();
- 获取参数<context-param></context-param>
- 作用域:
- 生命周期
- 与web应用一样长
- 作用范围
- 整个web周期
- 主要功能
- web应用范围共享数据
- 生命周期
- 路径难题
- web的路径怎们写都不对
- 相对路径--tomcat/bin下
- 绝对路径--换主机可能出错
- context.getRealPath()//动态获取
- 没有Context,则可以通过类加载器来获取资源的路径
- web的路径怎们写都不对
会话
- 浏览器为了实现一个功能,多次访问服务器,开始到结束的多次请求和响应
Cookie
- 基于HTTP,set-Cookie响应头和Cookie的请求头
- Cookie Api
- setMaxAge();//不设置在浏览器内存,设置保存相应的时间
- Cookie cookie=new Cookie(naem,value);
- path携带:父目录及其子目录
- 删除:同名和同path
Session
- 在服务器内部创建空间保存用户的数据
- 原理:特殊的Cookie--JSESSIONID来识别
- 生命周期
- 第一次调用getSession()
- 死亡
- 自杀
- 意外身亡
- 超时
- 作用范围
- 整个会话
- 功能
- 会话范围内共享数据
ajax
- 异步请求,局部刷新
Url编码:解决url乱码
三种资源的跳转方式
- 转发
- 重定向
- 刷新
jsp
- 概述
- 看起像HTML,但是可以编写java代码
- jsp语法
- 模板元素
- 脚本表达式
- 脚本片段
- jsp声明
- jsp注释
- jsp指令
- page
- incline
- taglib
- jsp的九大域对象
- page
- request
- response
- config
- application
- session
- out
- exception
- pageContext
- 获取其他八大隐式对象
- 作为入口参数获取四大域
- jsp标签
- <jsp:include>
- <jsp:forward>
- <jsp:param>
- el表达式
- 获取数据
- 常量数据
- 变量数据
- 集合、数组中的数据
- javaBean的属性
- 执行运算
- 算数
- 比较
- 逻辑
- empty
- 三元
- 使用内置对象
- pageContext
- pageScope
- requestScope
- sessionScope
- 获取数据
- jstl标签
- C
- fn
- fmt
- sql
- xml
- <c:out>
- <c:set>
- ...
javaEE开发模式
- 发展
- servlet
- jsp
- jsp+javabean
- jsp+servlet+javabean
- mvc(model+View+controller)
- javaee的经典架构(web,service,dao)
- 耦合
- 高内聚,低耦合
- 配置文件+工厂模式
过滤器
- 三大组件之一
- filter
- before+after
- 步骤
- 实现Filter接口
- web.xml配置
- 流程
- init
- doFilter
- destory
- filterConfig
- filterChain
- 应用
- 全栈乱码
- 继承
- 装饰
- 动态代理
- 自动登录
- MD5加密算法,不可逆向操作
- 密码数据加密
- 文件校验
- 数字签名
- MD5加密算法,不可逆向操作
- 全栈乱码
监听器
- Listener
- 三大主键之一
- servlet
- filter
- listener
- 八大监听器
- 三大主用域
- 三大作用域属性
- 在session中自我感知
文件上传
- 必须项
- name
- post
- enctype
- 服务器
- 自己写
- fileupload
- commons-io
- commons-fileupload
- 问题
- 存放位置
- 重名
- hash分级目录
sql
- 安装配置
- SQL语言
- c
- r(普通查询、条件查询、分组查询、聚合查询、排序查询、分页查询(limit)、子查询、自查询)
- u
- d
- sql设计
- 多表设计
- 1:1(任意)
- 1:m(m)
- m:m(另外一张表)
- 多表查询
- 笛卡尔
- 内连接
- 外链接
- 左外
- 右外
- 全外(union)
jdbc
- 操作数据库的接口
- 数据库驱动
- 步骤
- jar包
- 注册驱动
- 获取连接
- 获取传输器
- 执行sql
- 处理结果
- 关闭连接
- sql注入攻击
- 解决:PrepareStatement
- 批处理
- 连接池
- c3p0
数据库的事务
- 事务
- 逻辑上的一组操作
- sql事务
- start transaction
- commit
- rollback
- jdbc控制事务
- conn.setAutoCommit(false)
- conn.commit()
- conn.rollback(sp)
- 事务的四大特性
- 原子性
- 一致性
- 隔离性
- 持久性
- 四大隔离
- read uncommited
- read commited
- repeatable read
- Serializable
- 避免
- 脏读
- 可不重复读
- 虚读(幻读)
数据库的锁机制
- 共享锁
- 共享锁和共享锁可以共存
- 共享锁和其他锁不可以共存
- 排它锁
- 排它锁与任何锁都可以共存
- 读(Serializable+排它锁;其他不加锁)
- 增删改(都加排它锁)
- 死锁:退出一方,继续另外一个
更新丢失
- 两个并发的事务同时执行,导致数据库可能更新异常
- 解决方案
- Serializable
- 悲观锁for update
- 乐观锁【加条件,and 。。。】
ThreadLocal
- Thread中有个map外界访问不到
- 有程序的上游向下游传递数据
- 各个的线程都可以保存各自的数据
- 方法
- get()
- set(obj)
- remove()
EasyMall
- 用户模块
- 商品模块