CH1 jsp简介
- jsp组成:HTML文件+java片段+jsp标签
CH2 jsp基础
- jsp和servle的关系
本质:
jsp:嵌套java代码的html代码;转换成对应的servlet类运行
servlet:嵌套html代码的Java代码
- jsp生命周期
转译
编译
加载
实例化
初始化: _jspInit()
服务 : _jspService()
销毁: _jspDestroy()
- 语句转换
声明标签:servlet类成员
脚本标签:_jspService()中的代码
html代码:_jspService()中的out.write()
表达式标签:_jspService中的out.write()
CH3 jsp进阶
- 九个内置对象
输入输出: out request response
作用域:session application pageContext
不常用:page config exception
- 作用域
Application 对应 ServletContext
Session
Request
Page
CH4 web组件复用
- 静态包含和动态包含区别
本质区别:先加载原码还是先编译
include伪指令(静态包含 | include动作指令(动作包含) | |
---|---|---|
规则 | <%@include %> | <jsp:include /> |
编译时间 | 较慢(资源必须被解析) | 较快 |
执行时间 | 较快 | 较慢(每次请求资源必须被解析) |
灵活性 | 较差(页面内容必须固定) | 较好(页面在运行时可动态选择) |
动作发生时间 | 页面转换期间 | 请求期间 |
被包含内容 | 文件的内容 | 页面的输出 |
产生servlet数目 | 1 | N(动态包含的页面个数是N+1) |
- forward动作指令与include动作指令
forward动作指令在调用转发操作后不会继续处理指令后的任何代码
include动作指令在调用转发操作后,完成转发操作后将继续处理指令后的代码
CH5 表达式语言
- 11个隐含对象
与范围有关:applicationScope sessionScope requestScope pageScope
与输入有关:param paramValues
其他隐含对象:cookie header headerValues initParam pageContext
- 自定义el函数
- 编写方法所在源文件.java文件:该文件包含el函数的实现
- 编写标签库描述符.tld文件:定义el函数名
- 修改部署描述符web.xml文件:定义标签库描述符地址
- 编写jsp文件.jsp文件:使用el函数
CH6 标准标签库
- JSTL:JSP Standard Tag Library
CH7 自定义标签
- 自定义简单标签步骤
- 编写简单标签实现类
- 编写TLD文件
- 在web.xml中配置TLD文件
- 在JSP页面中使用taglib
- SimpleTag的生命周期
初始化setJspContext()
处理标签内容体 setBody()
调用doTag()
- 标签文件的伪指令
- variable伪指令
- tag伪指令:用于设置全局变量,对整个文件进行设置,类似page指令
- attribute伪指令:指定属性为静态属性;fragment属性为true允许静态属性中插入jsp代码
CH8 安全
- 四种认证机制
都是基于用户名/密码机制
- HTTP基本认证:最简单,最常用,密码不加密
- HTTP摘要认证:密码加密
- HTTPS客户端认证:最安全
- HTTP表单认证:不安全;可以定制表单
CH9 Servlet程序结构与部署
- servlet映射查找:
- 精确查找:请求URL和Servlet映射完全匹配
- 路径映射:servlet映射以/开始,以/*结束
- 扩展映射:以*开始,以.xxx结束
- 映射不匹配:如果没有匹配的路径,找不到对应的Servlet,返回404错误界面
- 在Tomcat中部署javaEE应用的方式
CH10 部署描述符
CH11 JavaMail
- Apache commons-fileupload 使用步骤
1.创建DiskFileItemFactory
2. 使用factory创建一个ServletFileUpload
3. 使用parseRequest方法解析request得到FileItem列表
4. 用FileItem的write方法写到一个目标文件中
分页
- 两种方式
- 一次取出,在内存中分页
优点:只进行一次数据查询,效率高
缺点:数据不够准确,常取得过期数据,内存耗费巨大- 当用户从页面发出查看特定页面的请求,会根据请求数据向数据库取出一页的数据,每次请求都进行一次数据库检索操作
优点:数据准确,节省内存
缺点:多次数据连接都会降低效率(可以使用连接池解决);使用数据库专用的sql语句,通用性低
扩展
- cookie与session
定义:
Cookie: Cookie是HTTP协议的规范之一,它是服务器和客户端之间传输的小数据。浏览器存储在客户端机器上的头信息称作Cookie,它以“ 属性名=属性值; …”方式组成文本信息
Session:session是一次浏览器和服务器的交互的会话在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),一个浏览器独占一个session对象(默认情况下)。服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。
区别:
1、session保存在服务器, cookie保存在客户端
2、session中保存的是对象,cookie中保存的是字符串。
3、session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。
4、session默认需要借助cookie才能正常工作。如果客户端完全禁止cookie,session,这种方法将失效。但是如果服务器端启用了url编码,也就是用URLEncoder.encode(“index.jsp?id=3”,“UTF-8”);…把所有的url编码了,则会在url后面出现如下类似的东西index.jsp:jsessionid=fdsaffjdlksfd124324lkdjsf?id=3服务器通过这个进行session的判断。
5 session在用户会话结束后就会关闭了,但cookie因为保存在客户端,可以长期保存
6 cookie:是服务端向客户端写入的小的片段信息。cookie信息保存在服务器缓存区,不会在客户端显现。