2)Cookie技能: 会话数据保存在浏览器客户端。
Cookie核心的API:
2.1 在做事器端创建Cookie工具
Cookeie cookie = new Cookie("name","value");
2.2 把cookie发送给浏览器端(通过相应头:set-cookie)
response.addCookie(cookie);
2.3 浏览器带着cookie信息访问做事器(通过要求头:cookie),做事器得到cookie信息
Cookie[] cookies = request.getCookies();
局限:
1)只能保存字符串类型,不能保存中文
2)一个cookie不能超过4kb
3)Session技能:会话数据保存在做事器端。(内存)
Session核心的API:
3.1 创建或得到session工具
HttpSession session = request.getSession(); //创建或得到session工具
request.getSession(false); //得到session工具
3.2 会话数据保存session工具中,和得到会话数据
session.setAttribute("name",Object); 保存数据
session.getAttribute("name") 得到数据
把稳:
1)session.setIntactiveInterval(韶光); 设置session过期韶光
2)session.invalidate() 手动销毁session工具
2 Session案例用户登录场景
3 编程实战通讯录程序
软件的生命周期
3.1 需求剖析(需求剖析师)功能剖析:
1)添加联系人
2)修正联系人
3)删除联系人
4)查询所有联系人
功能流转
美工设计: 设计软件的静态原型
3.2 需求设计(系统剖析师/架构师/资深开拓职员)1)设计实体(抽象实体)
联系人实体:
class Contact{ private String id; private String name; private String gender; private int age; private String phone; private String email; private String qq;}
2)设计"数据库",(xml代替"数据库")
contact.xml<contactList><contact id="1"><name>张三</name><gender>男</gender><age>20</age><phone>13433334444</phone><email>zs@qq.com</email><qq>43222222<qq></contact></contactList>
3)设计涉及的接口
DAO接口(数据访问工具):实体工具的CRUD方法。
项目原则: 常日一个实体工具就会对应一个DAO接口和一个DAO实现类
interface ContactDao{ public void addContact(Contact contact);//添加联系人 public void updateContact(Contact contact);//修正联系人 public void deleteContact(String id);//删除联系人 public List<Contact> findAll(); //查询所有联系人 public Contact findById(String id);//根据编号查询联系人}
4)设计项目的目录构造
项目名称: contactSys_web
目录构造:
|- contactSys_web |-src |-gz.itcast.contactSys_web.entity : 存放实体工具 |-gz.itcast.contactSys_web.dao : 存放dao的接口 |-gz.itcast.contactSys_web.dao.impl: 存放dao的实现类 |-gz.itcast.contactSys_web.servlet: 存放servlet的类 |-gz.itcast.contactSys_web.test: 存放单元测试类 |-gz.itcast.contactSys_web.util: 存放工具类 |-gz.itcast.contactSys_web.exception: 存放自定义非常类 |-WebRoot |-html文件 |-images:目录。存放图片资源 |-css:目录。存放css资源 |-js:目录。存放js资源
3.3 编码实现(软件开拓工程师/攻城狮)开拓顺序:
设计数据库-> 实体 -> DAO接口,DAO实现-> Servlet+html页面
3.4 功能测试(测试攻城狮)3.5 性能测试(测试攻城狮)3.6 支配上线(履行攻城狮)3.7 掩护阶段(履行攻城狮)4 Jsp根本4.1 Jsp引入Servlet的浸染: 用java措辞开拓动态资源的技能!
!
!Jsp的浸染:用java措辞(+html措辞)开拓动态资源的技能!
!
!Jsp便是servlet!
4.2 Jsp的特点
!
!1)jsp的运行必须交给tomcat做事器!
!
!
!tomcat的work目录: tomcat做事器存放jsp运行时的临时文件
2)jsp页面既可以写html代码,也可以写java代码。
(html页面不能写java代码 。而jsp页面可以写java代码)
4.3 体验jsp页面浸染需求:显示当前韶光到浏览器上
可以把jsp页面当做html页面在tomcat中访问!
4.4 Jsp的实行过程
!
!问题: 访问http://localhost:8080/day12/01.hello.jsp 如何显示效果?
1)访问到01.hello.jsp页面,tomcat扫描到jsp文件,在%tomcat%/work把jsp文件翻译成java源文件
(01.hello.jsp -> _01_hello_jsp.java) (翻译)
2)tomcat做事器把java源文件编译成class字节码文件 (编译)
(_01_hello_jsp.java -> _01_hello_jsp.class)
3)tomcat做事器布局_01_hello_jsp类工具
4)tomcat做事器调用_01_hello_jsp类里面方法,返回内容显示到浏览器。
第一次访问jsp:
走(1)(2)(3)(4)
第n次访问jsp:
走(4)
把稳:
1)jsp文件修正了或jsp的临时文件被删除了,要重新走翻译(1)和编译(2)的过程
4.5 疑问问题: 为什么Jsp便是servlet!
!
!jsp翻译的java文件:
public final class _01_hello_jsp extends org.apache.jasper.runtime.HttpJspBaseimplements org.apache.jasper.runtime.JspSourceDependent {
HttpJspBase类:
public abstract class org.apache.jasper.runtime.HttpJspBase extends javax.servlet.http.HttpServlet implements javax.servlet.jsp.HttpJspPage {
结论: Jsp便是一个servlet程序!
!
!servlet的技能可以用在jsp程序中
jsp的技能并不是全部适用于servlet程序!
Servlet的生命周期:
1)布局方法(第1次访问)
2)init方法(第1次访问)
3)service方法
4)destroy方法
Jsp的生命周期
1)翻译: jsp->java文件
2)编译: java文件->class文件(servlet程序)
3)布局方法(第1次访问)
4)init方法(第1次访问):_jspInit()
5)service方法:_jspService()
6)destroy方法:_jspDestroy()
5 Jsp语法5.1 Jsp模板jsp页面中的html代码便是jsp的模板
5.2 Jsp表达式语法:<%=变量或表达式%>
浸染: 向浏览器输出变量的值或表达式打算的结果
把稳:
1)表达式的事理便是翻译成out.print("变量" );通过该方法向浏览器写出内容
2)表达式后面不须要带分号结束。
5.3 Jsp的脚本语法:<%java代码 %>
浸染: 实行java代码
把稳:
1)事理把脚本中java代码原封不动拷贝到_jspService方法中实行。
5.4 Jsp的声明语法:<%! 变量或方法 %>
浸染: 声明jsp的变量或方法
把稳:
1)变量翻译成成员变量,方法翻译成成员方法。
5.5 Jsp的注释语法: <%!-- jsp注释 --%>
把稳;
1)html的注释会被翻译和实行。而jsp的注释不能被翻译和实行。
6 Jsp的三大指令6.1 include指令浸染: 在当前页面用于包含其他页面
语法: <%@include file="common/header.jsp"%>
把稳:
1)事理是把被包含的页面(header.jsp)的内容翻译到包含页面(index.jsp)中,合并成翻译成一个java源文件,再编译运行!
!
,这种包含叫静态包含(源码包含)2)如果利用静态包含,被包含页面中不须要涌现全局的html标签了!
!
!
(如html、head、body)6.2 page指令
浸染: 见告tomcat做事器如何翻译jsp文件
总结:
<%@ pagelanguage="java" --见告做事器利用什么动态措辞来翻译jsp文件import="java.util." --见告做事器java文件利用什么包导入包,多个包之间用逗号分割pageEncoding="utf-8" --见告做事器利用什么编码翻译jsp文件(成java文件)contentType="text/html; charset=utf-8" 做事器发送浏览器的数据类型和内容编码把稳:在开拓工具中,往后只须要设置pageEncoding即可办理中文乱码问题errorPage="error.jsp"isErrorPage="false"buffer="8kb"session="true"isELIgnored="false"%>
6.3 taglib指令1)编码实战:
1.1 servlet运用
1.2 初步理解软件开拓流程
2)Jsp根本
2.1 Jsp的实行事理(翻译-》编译-》servlet的生命周期)
2.2 语法(jsp表达式,jsp脚本)
2.3 指令
include指令
page指令