摘要:
Swing是目前Java中不可缺少的窗口工具组,是建立图形化用户界面(GUI)程序的强大工具。JavaSwing组件自动产生各种事件来响应用户行为。Java将事件封装成事件类,并且为每个事件类定义了一个事件监听器。一个组件注册事件监听器方法,表明该组件要响应指定事件。也就是说我们可以通过注册监听器,监听事件源产生的事件,从而在事件处理程序中处理我们所需要处理的用户行为。 JavaSwing中处理各组件事件的一般步骤是: 1.新建一个组件。 2.将该组件添加到相应的面板。 3.注册监听器以监听事件源产生的事件 4.定义处理事件的方法。 注册事件我们一般采用两种方式:一是:利用一个监听器以及多.. 阅读全文
摘要:
静态成员是一组比较特殊的成员,它不属于某个特定的类实例。它独立于该类。也就是说它不依赖类特定的实例,而被类的所有实例共享。 类的静态成员一般可以分为3种:静态成员变量,静态方法,静态代码块。它们都具有以下几个特点: 1、在类加载的时候,就进行创建和初始化或执行代码; 2、它们对于一个类来说,都只有一份; 3、类的所有实例都可以访问到它们; 1)、静态成员变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫做静态变量;另一种是没有被static修饰的变量,叫做实例变量。两者的区别在于: 静态变量在内存中只有一个拷贝,JVM只为静态分配一次内存,在加载类的过程中完. 阅读全文
摘要:
equal和“==”都是表示相等的意思,但是它们在进行实际的相等判定的时候,却有着非常大的区别 先看看一个例子 1 public class EqualTest{ 2 public static void main(string[] args){ 3 String str1 = "abcd"; 4 String str2 = "abcd"; 5 String str3 = new String("abcd"); 6 7 System.out.println(str1==str2); 8 System.ou... 阅读全文
摘要:
今天在看javascript的时候,突然发现数组array竟然可以利用字符串做为其下标,这个以前我还真的不知道,在我的印象当中数组用来遍历,怎么可以用字符串呢?哎。。孤陋寡闻啊..... 首先Array是从Object那里继承下。它具备Object所有的功能和特性。下面是Object的情况: 新建: var object = new Object(); 增加: object[strIndex ] = value; (strIndex 为string) 删除: delete object[strIndex ]; 遍历: for ( var strObjIndex in ... 阅读全文
摘要:
1 window.onload = myfunction(); 假如我们希望某个函数在网页加载完毕之后就立即执行。网页加载完毕时会触发一个onload事件,所以我们可以利用onload事件来加载这个函数。Onload事件与window对象相关联。如: 把myfunction函数绑定到这个事件上: 一个函数我们可以利用上面的解决,那两个、三个甚至更多呢?怎么解决?? 假如我们有firstFunction和secondFunction两个函数,是不是就是下面这样写呢:1 window.onload = firstFunction;2 window.onload = seco... 阅读全文
摘要:
前面介绍了一些拦截器的配置和基本的使用方法,所以这次将介绍拦截器的实用功能。 实用拦截器完成权限控制 当浏览者需要执行某个操作时,应用需要先检查浏览者是否登录,以及是否有足够的权限来执行该操作。 本示例要求用户登录且必须为指定用户名才可以查看系统中的某个试图,否则用户直接转入到登录界面。 检查用户是否登录,通常都是跟踪用户的Session来完成的,通过ActionContext即可访问到session的属性,拦截器的interceptor方法的invocation参数可以很轻易地访问到请求相关的ActionContext实例。 权限检查拦截器类代码如下: 1 public class Aut. 阅读全文
摘要:
一旦定义了拦截器和拦截器栈后,就可以使用这个拦截器或拦截器栈来拦截器Action了。拦截器的拦截行为将会在Action的execute方法执行之前执行。一、实现拦截器类 虽然Struts2框架提供了许多拦截器,这些拦截器也实现了Struts2的大部分功能。但是用户仍然可以开发自己的拦截器。 实现自己的拦截器,应该实现com.opensymphoney.xwork2.interceptor.Interceptor接口 该接口包含三个方法:init()、destroy()、interceptor(ActionInvocationinvocation); init():在该拦截器被实例化之后,在该. 阅读全文
摘要:
今天打算复习下oracle,本来oracle是以前安装的,重新安装了系统,大概重新装了系统对其有影响吧,在服务表中发现没有了lister该项。于是为了保险起见重新安装了oracle。配置什么都是正确的,但是通过http://localhost:5560/isqlplus时,突然发现http://localhost:5560/isqlplus打不开了。 解决方案: 首先进入CMD 1.用命令:netstat -an 查看端口5560是否打开 2.用isqlplusctl start 启动 3.打开IE 输入http://localhost:5560/isqlplus就可以打开了! 阅读全文
摘要:
拦截器体系是Struts2框架的重要组成部分,我们可以把Struts2理解成一个空容器,而大量的内建拦截器完成了该框架的大部分操作。 Struts2拦截器是可插拔式的设计:如果我们需要使用某个拦截器,只需要在配置文件中应用该拦截器即可;如果不需要使用该拦截器,只需要在配置文件中取消应用拦截器。但是不管是否应用某个拦截器,对于Struts2框架都不会有任何影响。 拦截器与Action的关系以下主要讲一些关于拦截器的配置1、配置拦截器在struts.xml文件中定义拦截器只需要为拦截器类指定一个拦截器名,就可以完成拦截器的定义。定义拦截器使用<interceptor.../>元素,如下 阅读全文
摘要:
一般来说,文件下载只需要直接在页面给出一个超级链接,该链接的href属性值等于要下载文件的文件名,就可以实现文件下载,如:<ahref=”checkbox.rar”>checkbox.rar</a>。但是这样下载存在着一些缺陷:如果该文件的文件名是中文文件名时,下载则会导致下载失败;如果在下载时需要对用户的身份进行判断,来验证用户是否有权限来下载该文件时,那么单独的超级链接是不可能实现的。这个时候,我们需要用Struts2来控制文件下载。 Struts2提供了stream结果类型,该结果类型就是专门用于支持文件下载功能的。通过Struts2的文件下载支持,允许系统控制浏 阅读全文
摘要:
通常对于Web应用,我们可以云寻浏览者上传图片、上传压缩文件等,但是除此之外,我们必须对浏览者上传的文件大小、类型进行限制。因此必须在文件上传中进行文件过滤。 一、手动实现文件过滤 如果需要手动实现文件过滤,可以按照如下步骤进行 1、在Action中定义一个专用于进行文件过滤的方法。方法名任意,该方法的逻辑判断上传文件的类型是否为允许类型。 1 // 过滤文件类型 2 public String filterType(String[] types) { 3 // 获取希望上传的文件类型 4 String fileType = getUploadCont... 阅读全文
摘要:
为了能够上传文件,我们必须将表单的method设置为POST,将entype设置为multipart/form-data,只有在这种情况下,浏览器才会把用户选择文件的二进制数据发送给服务器。 一旦我们设置了enctype为multipart/form-data,此时浏览器将采用二进制流的方式来处理表单数据。但是Struts2并没有提供自己的请求解析器,也就是说Struts2不会自己去处理multipart/form-data的请求,他需要调用其他上传框架来解析二进制请求数据。 在Struts2的struts.properties配置文件中,我们可以看到如下配置代码,它主要用于配置Struts. 阅读全文
摘要:
今天在学习Struts 2文件上传时,在运行例子时,突然发现控制台出现了如下错误:1 INFO: Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.context.tempdir 发现原来是'struts.multipart.saveDir' 没有配置。 struts.multipart.saveDir用于指定存放临时文件的文件夹,该配置写在struts.properties文件中 如果在struts.properties文件加入如下代码 阅读全文
摘要:
输入校验是所有的Web应用必须处理的问题。一个健壮的应用系统必须可以阻止一些非法的输入,防止这些非法的输入进入系统。这样才可以保证系统不受到影响。 输入校验可以分为客服端校验和服务器端校验。 服务器校验:服务器校验是整个应用阻止非法数据的最后的防线,主要是通过在应用中编程实现。Struts2提供了基于验证框架的输入校验,在这种校验方式下,所有的输入校验只需要编写简单的配置文件,Struts2的验证框架将会负责进行服务器校验。如下表单:假定在该应用中要求这三个请求参数必须满足如下要求:1、name和password只能是字母和数组,且长度必须在4到16之间。2、年龄必须是1到150之间的整数。. 阅读全文
摘要:
大部分时候,我们使用Struts2内建的类型转换器就可以满足大部分类型转换需求了。但是在有些特殊的情况下,如:需要把一个字符串转换成一个复合对象时,这个时候就需要使用自定义类型转换器了。 实现自定义类型转换器一般需要实现以下两步: 1、编写自己的类型转换器 2、注册类型转换器 1、自定义类型转换器 编写自定义类型转换器一般都要实现一个类:DefaultTypeConverter。实现自定义转换器需要重写该类的convertValue方法。 convertValue方法负责完成类型的转换。但是这种转换是双向的,即如当需要把字符串转换成User实例时,是通过该方法实现的;当需要把User实例转换. 阅读全文