【Javaweb基本知识】

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循环实现,效率最低