JavaWeb相关java
一、参数传递编程
二、会话跟踪的四种实现方式数组
三、cookie浏览器
四、session安全
五、Filter服务器
六、Propertiescookie
七、日志session
八、反射(xml、)app
九、内联函数ide
十、事件处理模型
十一、良好的代码习惯
十二、Java的三大注解( 由虚拟器控制给出注解,提示开发人员注意编码规则 )
1三、存根类(Stub)
1四、扩展方法
1五、数组复制
一、参数传递
基本类型传递值,引用类型传递地址,在方法中,可根据地址改变引用类型的成员变量值。
值传递不能够改变原变量的内容和地址(仅副本作局部变量)。
引用传递不能够改变原变量地址,但可经过引用改变值。
一个方法不能修改一个基本数据类型的参数(数值、布尔),===>值传递
一个方法能够改变一个对象(引用)的值,一个方法不可改变对象的原引用。==>引用类型
若将一个变量(常量)赋值给一个引用类型,则等于new一次引用类型对象,与方法外没有关系。????
2、会话跟踪的四种实现方式
1) 表单域:<input type=”hidden”>,很是适合须要大量数据存储的会话应用
2) URL重写:URL能够在后面附加参数,和服务器的请求一块儿发送,url&name=value
3) Cookie:Cookie是一个小的,已命名的数据元素,服务器使用set-Cookie头标记它为HTTP响应的一部分,发送给客户端,客户端保存cookie的值,在对同一服务器的后续请求中使用cookie将内容返回给服务器,cookie保存在客户端,可设置保存时间。(session的Id存储在cookie中)。
4) session:使用setAttribute(String str,Object obj)方法将对象捆绑到一个会话上。
每一个session对象有一个惟一的Id,保存在客户端的Cookie中,关闭浏览器SessionId消失。
若是客户端禁用cookie,可使用url重写的方法实现会话跟踪。
session用来表示用户会话,session对象在服务端维护。
cookie存放在客户端,能够分为内存cookie和磁盘cookie,超时消失。
隐藏域在页面中对于用户是不可见的,在表单中插入的目的是收集和发送消息。
三、cookie
四、session
五、Filter
servlet中的过滤器格式:
<filter>
<filter-name> xxxx</filter-name>
<filter-class> xxxx.aaaa</filter-class>
</filter>
<init-param>(可选)
<parma-name>charset</param-name>
<param-value> UTF-8</param-value>
</init-param>
<filter-mapping>
<filter-name> xxxx</filter-name>
<url-pattern> /* </url-pattern>
</filter-mapping>
filter-mapping可映射到一个或者多个servlet或JSP文件,<url-pattern>可映射到任意特征的URL。
六、Properties
Properties实现了Map接口,是线程安全的。(setProperties方法中有synchronized)
Properties是HashTable的子类,不过Properties添加了两个方法,load()和store()能够直接导入或者将映射写入文件。另外Properties是<String,String>的映射。
主要用于导入配置文件信息。
七、日志
日志的级别大小关系:ALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFF
log4j建议只使用四个级别:优先级从高到低:ERROR>WARN>INFO>DEBUG
八、反射(xml、)
反射破坏了原有的访问修饰符的访问限制。
9、内联函数 应用于 代码量小,且频繁调用
java中的内联函数从空间换时间,===》递归适宜用内联(原理是使用方法时不须要再调用)
final关键字会告诉编译器,能够将final函数视为内联函数,但编译器最终会权衡性能再作肯定。final有助于锁定方法和提升效率。缺点是占用空间,消耗内存。
十、事件处理模型
Java提供的事件处理模型是一种人机交互模型,有三个基本要素。
1) 事件源:事件发生的场所,指各个组件,如按钮。
2) 事件: 事件封装了组件上发生的事件,好比按钮单击、按钮松开等。
3) 事件监听器:负责监听事件源上发生的特定类型的事件,当事件到来时,还必须负责处理响应的事件。
十一、良好的代码习惯
一、面向接口编程:List myList = new ArrayList(); === 接口名 xxx = new 接口实现类
Map map = new HashMap();
(1)程序规范化设计 (2)团队协同开发 (3)转换为组件 (4)代码复用
二、Java中路径用 “/” 才是正确的,若是使用了 “\”表示路径,须要转义。”\”也是转义符。
十二、Java的三大注解( 由虚拟器控制给出注解,提示开发人员注意编码规则 )
(1)@SuppressWarnings(“deprecation”); ==>屏蔽相应的警告,(通常在方法上标注)
(2)@Override; 指定被注解的方法须要覆写超类的方法(1.5实现接口方法不能写,6.0可写)
(3)@Deprecated;代表程序调用一个废弃元素(方法),编译器应该显示警告(不能被使用)
元注解(Meta-Annotations,Java注解类型):Target、Retention、Documented、inherited。
@Target:注解代表注解类型适用于哪一种目标元素,@Target(ElementType TYPE)适用任何类的元素包括:元素字段、方法、参数、构造函数、局部变量、类型自己。
1三、存根类(Stub)
Stub是一个类,它实现了一个接口。继承该类就可使用(间接)接口的方法,(不用全实现)。RMI采用Stub和Skeletons来进行远程对象的通信,Stub充当客户端代理(运行在本地虚拟机),远程对象的调用其实是经过调用该对象的客户端代理Stub来完成的。
每个远程对象都包含一个代理对象Stub,当运行在本地虚拟机上的程序想调用远程Java虚拟机上的方法时,1)在本地建立该对象的代理对象Stub,而后调用代理对象上的方法,在远程有一个skeleton对象与Stub呼应,接受来自Stub对象的调用。(运行时动态连接??)
1四、扩展方法
扩展方法只能访问所扩展类的public成员。
1五、数组(数组复制)
(1)System.arrayCopy用本地方法(C语言)实现==>使用java间接操做硬件
(2)clone() 定义:protected native Object clone() throws CloneNotSupportedException{}
(3)arrays.CopyOf 调用了system.arraycopy 方法实现
(4)用for循环实现,效率最低