首页 > 代码库 > Java笔记(10)

Java笔记(10)

第一天 ----- 第十天 知识点复习
day1 XML 语法和两种约束技术
1、XML语法写法、规范: 根元素必须唯一、元素名称与属性名称不能以数字开始、元素标记必须结束、元素不能交叉嵌套、属性值必须加引号(双引号、单引号) ----- 考试:排错
2、CDATA块 与 特殊字符转义在 使用上区别 ?
<book> <p>标记的作用 </book>  ----- 标记内容 <p> 是一个特殊内容
CDATA : <book> <![CDATA[ <p>标记的作用 ]]> </book> ---- 特殊内容<p> 不会被解析器解析
转义字符:<book> &lt; p &gt;标记的作用 </book> 
* 在实际开发中CDATA 比转义更好
* 在转义是,一般只需要转义 < 就可以了,不需要转义 >   ------ <book> &lt; p>标记的作用 </book> 
3、DTD 约束 ---- 三种DTD :内部 <!DOCTYPE 根元素[]> 、外部 <!DOCTYP 根元素 SYSTEM "dtd路径" >、
公共 <!DOCTYPE 根元素 PUBLIC "dtd名称" "dtd网络路径"


4、<!ELEMENT 元素 、 <!ATTLIST 属性 、 <!ENTITY 实体数据 
5、Schema 开发流程 
使用W3C 预定义元素和类型 ----- 定义自己Schema中元素 ----- 为自定义Schema元素绑定名称空间上 ----在XML文件中通过名称空间引用自定义Schema元素


6、Schema中名称空间作用?  ------ 唯一标识元素来自哪个Schema文件 


day2 XML解析 
1、XML解析方式 : DOM 和 SAX  ---- JDK6新增 STAX
2、JAXP DOM操作函数 ---- 完成XML文档增删改查 
3、JAXP SAX编程思路,掌握推模式 基于事件xml解析方式
4、XML Pull解析器使用 -------  Xml2List  List2Xml 
* XmlPullParser XmlSerializer 


day3 Java基础加强 
JDK5.0 新特性 和 反射技术 
1、泛型 掌握两点 : 使用泛型在编译时检查集合元素类型安全(遍历List、Set 、Map) 、使用泛型编写通用程序(数组元素交换位置,数组元素倒序)


2、枚举在什么情况使用 ? 固定取值,取值范围3个以上 
* 一个值 常量、两个值 boolean ----- 例如:字段表示男还是女 boolean isMale ,当变量为true 男 ,当变量为false 女
3、根据星期数字 打印中文星期几 ?
4、枚举实例、下标、名称 直接转换 name() ordinal() values() valueOf() 


5、for/in语句在什么情况下使用? 类本身实现 Iterable接口,在类中实现 iterator()方法 
6、for/in 移除练习 并发修改异常解决:1) 使用iterator.remove方法、2) 当删除只有一个元素时,删除后调用break 3) CopyOnWriteArrayList 


7、反射技术 
获取一个类字节码文件 三种方式:类名.class、对象.getClass 、 Class.forName
通过Class对象,创建字节码文件对应类实例 无参数: c.newInstance 有参数 c.getConstructor获得构造器 ,通过构造器.newInstance进行对象创建 
如何设置对象属性 : Field f = c.getDeclaredField("属性名称"); f.setAccessable(true) ; f.set或者f.get进行属性读写 


调用方法 获得方法反射对象:Method m = c.getDeclaredMethod("方法名", 类型Class可变参数) 
m.invoke(obj,参数); 通过反射执行 该方法


day4 Tomcat与HTTP协议 
1、Tomcat安装配置 ---- 修改server.xml 改变tomcat默认端口
* 当tomcat启动时,如果端口被占用 cmd>netstat -ano 查看端口进程 编号


2、将web应用 发布tomcat 中 三种方式
1) 映射conf/server.xml 
2) 在conf/Catalina/localhost/xxx.xml 
3) 直接将web应用 复制tomcat/webapps  ----- 将web应用制作war文件 


3、Tomcat虚拟主机配置 ----- 修改hosts文件 
*可以在tomcat中配置多台虚拟主机,只有一台虚拟主机可以通过ip去访问 ----- defaultHost 缺省的虚拟主机 


4、MyEclipse中配置tomcat,发布web工程


5、HTTP请求方式 get和post区别
6、HTTP响应常见状态码 200 302 304 404 500 
7、常用头信息 referer 防止盗链 refresh自动刷新 Location重定向 Content-Encoding: gzip 配置tomcat使用gzip压缩 , tomcat内部缓存策略 If-Modified-Since 与 Last-Modified  * Etag与If-None-Match 


day5 Servlet编程入门
1、编写第一个Servlet 继承HttpServlet 覆盖doGet与doPost方法 
2、servlet运行需要外部jar ----- tomcat/lib/servlet-api.jar 
3、URL-Pattern三种写法: 完全路径匹配 、目录匹配、扩展名匹配
4、路径问题:服务器端路径 / 开始代表当前web应用; 客户端路径 /day10/路径 ,/ 代表Web服务器根目录 
* 打印乘法表 
5、ServletConfig 和 ServletContext 都可以提供初始化参数,Config当前Servlet可用  Context 所有Servlet可用 
6、Servlet生命周期 init service destroy 
7、通过ServletContext 获得web工程中文件绝对磁盘路径  ---- getServletContext().getRealPath("/1.txt") ; 
* 这里 / 代表WebRoot目录 
8、缺省Servlet ------ 所有你访问静态web资源,都是通过缺省Servlet返回 客户端的


day6 Request和Response
1、通过Response向客户端输出数据 response.getWriter response.getOutputStream 
* 如果 输出数据包含中文 response.setContentType("text/html;charset=utf-8");


2、response操作状态码和头信息 setStatus setHeader 案例:重定向、自动刷新、禁止缓存


3、request 获得客户请求提交数据 request.getParameter 
* 如果客户提交中文
post  ----- request.setCharacterEncoding(编码集)
get ----- 1) 修改tomcat默认解码集 <Connector 添加 URIEncoding="utf-8" 
2) 手动重新编码  new String(原来内容.getBytes("ISO=8859-1"),"utf-8")


4、request获得请求行信息 getContextPath 工程名  getRequestURI 访问全路径 
* 截取当前访问资源路径 getRequestURI().substring(getContextPath().length); 
* 获得 IP  getRemoteAddr() 


5、request获得头信息 ------ 防盗链 
* 通过URL URLConnection 模拟客户端,添加头信息referer、避开防盗链程序


day7 Session和Cookie 
1、Session和Cookie区别?
Cookie保存客户端,Session保存服务器端  


2、Cookie案例:上次访问时间、商品浏览记录


3、关闭浏览器,再次打开,session中数据还存在 ? 因为jsessionId在客户端持久化 ---- 持久Cookie保存


4、Session案例:购物车、使用一次性验证码用户登录 


5、Cookie禁用 通过URL重写 追踪Session


6、Cookie生命周期和Session 生命周期
创建cookie ---- response.addCookie  
销毁cookie 会话cookie和持久cookie ----- 会话cookie关闭浏览器销毁,持久cookie在cookie过期时销毁(cookie删除 maxAge为0 )


创建Session request.getSession()
销毁Session 三种:1) 服务器关闭 2) Session过期(可以在web.xml配置) 3) 调用invalidate销毁Session
* 当Session销毁后,当中所有数据都会销毁 


7、Servlet三种数据范围: request、session、ServletContext 如何使用?


day8 JSP技术 + EL +JSTL 
1、JSP 与 Servlet关系 
2、JSP运行原理 
3、JSP <%! 声明  <%= 表达式  <% 脚本片段
4、JSP三种注释 
5、错误友好页面配置 JSP page属性 errorPage 和 isErrorPage ----- 常用配置web.xml 
6、<%@include 与 <jsp:include 原理与区别 ?
7、JSP九个内置对象 page request session application response out config pageContext exception 
8、在JSP存在四个数据范围 page、request、session、application


9、JSTL + EL ----- c:if c:forEach EL主要用来取值 ---- empty 判断 
10、<jsp:forward>  <c:redirect> 在JSP 页面完成转发和重定向 
 
day9 JSP模式和案例
1、JSP Model1 和 JSP Model2
2、什么是 MVC
3、BeanUtils使用和原理 ---- 原理就是内省
4、计算器案例 --- 基于model1
5、用户登录注册案例 基于model2 


基于MVC编程思路
1、编写页面 以表单或者链接方式 提交请求 <form action="" >  <a href=http://www.mamicode.com/"" >
例如 注册:regist.jsp 登录login.jsp 


2、当客户端提交请求,服务器创建控制器 接收请求 Servlet 
例如: 注册 RegistServlet 登录 LoginServlet 


3、在控制器Servlet中需要将请求数据 封装 JavaBean对象中
BeanUtils开发包 ---- 创建JavaBean : User 


4、在控制器 将数据JavaBean 传递 处理数据JavaBean 进行数据处理
UserModel 将 User对象传递UserModel  进行注册、登录


5、UserModel 处理业务数据,将结果返回控制器Servlet ,Servlet根据返回结果,决定跳转哪个页面
* 跳转页面时,需要传递一些信息给页面 request.setAttribute 、request.getRequestDispatcher().forward() ----- 一般用来传递提示信息 
* 在用户登陆之后,用户信息 保存到Session中