摘要:
在SQL/92标准可以使用USING子句对连接条件进行简化,但是只有在查询满足以下两个条件时才能给使用USING进行简化:1、查询必须是等连接的2、等连接中的列必须是同名如:商品表goods表和商品类型表category表中goods的外键和category的主键相同:categoryid而且是等连接,这里可以使用using1 select goodsname,categoryname2 from goods inner join category3 using(categoryid)在使用using是需要注意以下几个问题1、在select子句中只能指定该列... 阅读全文
posted @ 2012-07-13 12:48
chenssy
阅读(529)
评论(0)
推荐(0)
摘要:
游标是从数据库中提取出来一临时表的形式存放在内存中的数据。可以把游标看作是内存的SQL工作区域,游标名称相当于该区域的句柄。通过该句柄可以有效地控制游标,从而实现对数据的操作。所以对游标的操作实际上就是对数据库库的间接操作。 1.1游标的定义 定义游标的格式如下: CURSOR游标ISSELECT语句; 例如:把数据表中emp中部门号为20的员工定义为游标:1 CURSOR exce_emp is select * from scott.emp where deptno=20; 定义游标后,我们就可以使用游标了。但是要对游标进行操作我们必须先打开游标: Open游标名; 打开游标实际上是从数. 阅读全文
posted @ 2012-07-13 12:47
chenssy
阅读(580)
评论(3)
推荐(1)
摘要:
一、PL/SQL程序流程控制上面的结构与其他的高级语言程序一样,就不做介绍了。下就条件结构和循环结构说明。 1)IF条件控制句 1.1IF...THEN语句 其语法是: IFpTHEN 基本语句段; ENDIF; 例如:declare flag1 integer := 1; flag2 integer := 2;begin if flag1 < flag 2 then dbms_output.put_line('Flag1<flag2'); end if;end;注意:上面的IF与ENDIF必须成对出现 1.2IF...THEN...ELSE语句 该语句用于需要在两 阅读全文
posted @ 2012-07-13 12:44
chenssy
阅读(664)
评论(3)
推荐(3)
摘要:
历时三个星期的时间终于把Struts2给看完了。中间断断续续的学习,在这个过程中学到了很多东西,也真正的明白了时间是挤出来的。大三了课程越来越来多了,有自己学校的课程要学习,又是各种各样的实验,时间的真的是太紧了。这个时间,利用一切的空余时间来学习编程。这个过程的苦和乐真的只有经历了才明白... 不多说了,下面是对这三个星期学习Struts2的知识总结:一、Struts2应用的开发步骤 1、首先要先下载Struts2的jar包,将必须的类库放入到Web应用下的WEB-INF/lib路径下。 2、配置web应用的web.xml配置文件,配置Struts2的核心Filter 3、定义处理用户请求. 阅读全文
posted @ 2012-07-13 12:33
chenssy
阅读(1101)
评论(1)
推荐(3)
摘要:
PL/SQL是一种高效的事物处理语言,它具有如下优点 1、支持SQL 2、支持面向对象的编程方法 3、更好的性能和更高的效率 4、编写方便 5、与Oracle高度集成 6、安全性好一、PL/SQL变量和基本数据类型 1、PL/SQL变量的定义 基本数据类型变量的定义方法如下: 变量名类型标识符[:=值]; 如:Strvarchar2[100]:='中国'; 也可以使用关键字default来代替赋值符。 strvarchar2[100]default'中国'; 注意:赋值符合中的冒号和等号是不能分开的;2、基本数据类型三、PL/SQL程序的结构首先看一个简单的例子 阅读全文
posted @ 2012-07-13 12:23
chenssy
阅读(684)
评论(0)
推荐(0)
摘要:
准备五一开始学习oracle,所以今天就打算把oracle10g安装下。安装完后就来进行测试是否能够正常的工作。 在安装的过程中,配置的全局数据库为tmt。 但是使用SQLPlus登陆的时候,用户名:scott,口令为:tiger,主机字符串为:tmt。但是总是登陆不上,报提示ora-12154tns无法解析指定的连接标识符。百度了下,原来是我的TNSNAMES.ORA文件中并没有tmt的相关配置。于是对TNSNAMES.ORA文件增加如下配置:TMT = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(... 阅读全文
posted @ 2012-07-13 12:22
chenssy
阅读(1151)
评论(0)
推荐(0)
摘要:
在很多情况下我们都需要将一个对象转换为String类型。一般来说有三种方法可以实现:Object.toString()、(String)Object、String.valueOf(Object)。下面对这三种方法一一分析: 一、采用Object.toString() toString方法是java.lang.Object对象的一个public方法。在java中任何对象都会继承Object对象,所以一般来说任何对象都可以调用toString这个方法。这是采用该种方法时,常派生类会覆盖Object里的toString()方法。但是在使用该方法时要注意,必须保证Object不是null值,否则将抛. 阅读全文
posted @ 2012-07-13 12:00
chenssy
阅读(790)
评论(0)
推荐(0)
摘要:
在做java课程设计的时候,需要一个做许多的表格,由于数据量比较,所以决定给JTable增加个Jcollpan滑动窗口。 可是在我给表格设定的大小超过了Jscollpan,它只会出现垂直滑动条。对于这个我很蛋疼很纠结!! 当我查看帮助文档后,发现了一个这样的方法:setAutoResizeMode(JTable.AUTO_RESIZE_OFF);这个方法用于关闭表格的自动调整,也就是表格大小并不会随框架的变化而变化,根据自身的大小来调整。添加这个方法后的效果是依然没有水平滑动条。这又要纠结了!!最后实在是解决不了,在百度上面找了解决方案:最终代码如下:1 JScrollPane jScrol. 阅读全文
posted @ 2012-07-13 11:59
chenssy
阅读(266)
评论(0)
推荐(0)
摘要:
Swing是目前Java中不可缺少的窗口工具组,是建立图形化用户界面(GUI)程序的强大工具。JavaSwing组件自动产生各种事件来响应用户行为。Java将事件封装成事件类,并且为每个事件类定义了一个事件监听器。一个组件注册事件监听器方法,表明该组件要响应指定事件。也就是说我们可以通过注册监听器,监听事件源产生的事件,从而在事件处理程序中处理我们所需要处理的用户行为。 JavaSwing中处理各组件事件的一般步骤是: 1.新建一个组件。 2.将该组件添加到相应的面板。 3.注册监听器以监听事件源产生的事件 4.定义处理事件的方法。 注册事件我们一般采用两种方式:一是:利用一个监听器以及多.. 阅读全文
posted @ 2012-07-13 11:58
chenssy
阅读(904)
评论(0)
推荐(0)
摘要:
静态成员是一组比较特殊的成员,它不属于某个特定的类实例。它独立于该类。也就是说它不依赖类特定的实例,而被类的所有实例共享。 类的静态成员一般可以分为3种:静态成员变量,静态方法,静态代码块。它们都具有以下几个特点: 1、在类加载的时候,就进行创建和初始化或执行代码; 2、它们对于一个类来说,都只有一份; 3、类的所有实例都可以访问到它们; 1)、静态成员变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫做静态变量;另一种是没有被static修饰的变量,叫做实例变量。两者的区别在于: 静态变量在内存中只有一个拷贝,JVM只为静态分配一次内存,在加载类的过程中完. 阅读全文
posted @ 2012-07-13 11:56
chenssy
阅读(705)
评论(0)
推荐(1)
摘要:
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... 阅读全文
posted @ 2012-07-13 11:55
chenssy
阅读(1454)
评论(2)
推荐(3)
摘要:
今天在看javascript的时候,突然发现数组array竟然可以利用字符串做为其下标,这个以前我还真的不知道,在我的印象当中数组用来遍历,怎么可以用字符串呢?哎。。孤陋寡闻啊..... 首先Array是从Object那里继承下。它具备Object所有的功能和特性。下面是Object的情况: 新建: var object = new Object(); 增加: object[strIndex ] = value; (strIndex 为string) 删除: delete object[strIndex ]; 遍历: for ( var strObjIndex in ... 阅读全文
posted @ 2012-07-13 11:52
chenssy
阅读(1194)
评论(1)
推荐(0)
摘要:
1 window.onload = myfunction(); 假如我们希望某个函数在网页加载完毕之后就立即执行。网页加载完毕时会触发一个onload事件,所以我们可以利用onload事件来加载这个函数。Onload事件与window对象相关联。如: 把myfunction函数绑定到这个事件上: 一个函数我们可以利用上面的解决,那两个、三个甚至更多呢?怎么解决?? 假如我们有firstFunction和secondFunction两个函数,是不是就是下面这样写呢:1 window.onload = firstFunction;2 window.onload = seco... 阅读全文
posted @ 2012-07-13 11:46
chenssy
阅读(537)
评论(1)
推荐(0)
摘要:
前面介绍了一些拦截器的配置和基本的使用方法,所以这次将介绍拦截器的实用功能。 实用拦截器完成权限控制 当浏览者需要执行某个操作时,应用需要先检查浏览者是否登录,以及是否有足够的权限来执行该操作。 本示例要求用户登录且必须为指定用户名才可以查看系统中的某个试图,否则用户直接转入到登录界面。 检查用户是否登录,通常都是跟踪用户的Session来完成的,通过ActionContext即可访问到session的属性,拦截器的interceptor方法的invocation参数可以很轻易地访问到请求相关的ActionContext实例。 权限检查拦截器类代码如下: 1 public class Aut. 阅读全文
posted @ 2012-07-13 11:43
chenssy
阅读(536)
评论(0)
推荐(0)
摘要:
一旦定义了拦截器和拦截器栈后,就可以使用这个拦截器或拦截器栈来拦截器Action了。拦截器的拦截行为将会在Action的execute方法执行之前执行。一、实现拦截器类 虽然Struts2框架提供了许多拦截器,这些拦截器也实现了Struts2的大部分功能。但是用户仍然可以开发自己的拦截器。 实现自己的拦截器,应该实现com.opensymphoney.xwork2.interceptor.Interceptor接口 该接口包含三个方法:init()、destroy()、interceptor(ActionInvocationinvocation); init():在该拦截器被实例化之后,在该. 阅读全文
posted @ 2012-07-13 11:41
chenssy
阅读(694)
评论(0)
推荐(0)
摘要:
今天打算复习下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就可以打开了! 阅读全文
posted @ 2012-07-13 11:38
chenssy
阅读(1042)
评论(0)
推荐(0)
摘要:
拦截器体系是Struts2框架的重要组成部分,我们可以把Struts2理解成一个空容器,而大量的内建拦截器完成了该框架的大部分操作。 Struts2拦截器是可插拔式的设计:如果我们需要使用某个拦截器,只需要在配置文件中应用该拦截器即可;如果不需要使用该拦截器,只需要在配置文件中取消应用拦截器。但是不管是否应用某个拦截器,对于Struts2框架都不会有任何影响。 拦截器与Action的关系以下主要讲一些关于拦截器的配置1、配置拦截器在struts.xml文件中定义拦截器只需要为拦截器类指定一个拦截器名,就可以完成拦截器的定义。定义拦截器使用<interceptor.../>元素,如下 阅读全文
posted @ 2012-07-13 11:11
chenssy
阅读(560)
评论(0)
推荐(0)
摘要:
一般来说,文件下载只需要直接在页面给出一个超级链接,该链接的href属性值等于要下载文件的文件名,就可以实现文件下载,如:<ahref=”checkbox.rar”>checkbox.rar</a>。但是这样下载存在着一些缺陷:如果该文件的文件名是中文文件名时,下载则会导致下载失败;如果在下载时需要对用户的身份进行判断,来验证用户是否有权限来下载该文件时,那么单独的超级链接是不可能实现的。这个时候,我们需要用Struts2来控制文件下载。 Struts2提供了stream结果类型,该结果类型就是专门用于支持文件下载功能的。通过Struts2的文件下载支持,允许系统控制浏 阅读全文
posted @ 2012-07-13 11:03
chenssy
阅读(406)
评论(0)
推荐(0)
摘要:
通常对于Web应用,我们可以云寻浏览者上传图片、上传压缩文件等,但是除此之外,我们必须对浏览者上传的文件大小、类型进行限制。因此必须在文件上传中进行文件过滤。 一、手动实现文件过滤 如果需要手动实现文件过滤,可以按照如下步骤进行 1、在Action中定义一个专用于进行文件过滤的方法。方法名任意,该方法的逻辑判断上传文件的类型是否为允许类型。 1 // 过滤文件类型 2 public String filterType(String[] types) { 3 // 获取希望上传的文件类型 4 String fileType = getUploadCont... 阅读全文
posted @ 2012-07-13 10:59
chenssy
阅读(719)
评论(0)
推荐(0)
摘要:
为了能够上传文件,我们必须将表单的method设置为POST,将entype设置为multipart/form-data,只有在这种情况下,浏览器才会把用户选择文件的二进制数据发送给服务器。 一旦我们设置了enctype为multipart/form-data,此时浏览器将采用二进制流的方式来处理表单数据。但是Struts2并没有提供自己的请求解析器,也就是说Struts2不会自己去处理multipart/form-data的请求,他需要调用其他上传框架来解析二进制请求数据。 在Struts2的struts.properties配置文件中,我们可以看到如下配置代码,它主要用于配置Struts. 阅读全文
posted @ 2012-07-13 10:57
chenssy
阅读(714)
评论(0)
推荐(1)
摘要:
今天在学习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文件加入如下代码 阅读全文
posted @ 2012-07-13 10:55
chenssy
阅读(886)
评论(0)
推荐(0)
摘要:
输入校验是所有的Web应用必须处理的问题。一个健壮的应用系统必须可以阻止一些非法的输入,防止这些非法的输入进入系统。这样才可以保证系统不受到影响。 输入校验可以分为客服端校验和服务器端校验。 服务器校验:服务器校验是整个应用阻止非法数据的最后的防线,主要是通过在应用中编程实现。Struts2提供了基于验证框架的输入校验,在这种校验方式下,所有的输入校验只需要编写简单的配置文件,Struts2的验证框架将会负责进行服务器校验。如下表单:假定在该应用中要求这三个请求参数必须满足如下要求:1、name和password只能是字母和数组,且长度必须在4到16之间。2、年龄必须是1到150之间的整数。. 阅读全文
posted @ 2012-07-13 10:53
chenssy
阅读(535)
评论(0)
推荐(0)
摘要:
大部分时候,我们使用Struts2内建的类型转换器就可以满足大部分类型转换需求了。但是在有些特殊的情况下,如:需要把一个字符串转换成一个复合对象时,这个时候就需要使用自定义类型转换器了。 实现自定义类型转换器一般需要实现以下两步: 1、编写自己的类型转换器 2、注册类型转换器 1、自定义类型转换器 编写自定义类型转换器一般都要实现一个类:DefaultTypeConverter。实现自定义转换器需要重写该类的convertValue方法。 convertValue方法负责完成类型的转换。但是这种转换是双向的,即如当需要把字符串转换成User实例时,是通过该方法实现的;当需要把User实例转换. 阅读全文
posted @ 2012-07-13 10:49
chenssy
阅读(358)
评论(0)
推荐(0)
摘要:
所有的MVC框架,都需要负责解析HTTP请求参数,并将请求参数传给控制器组件。由于HTTP请求参数都是字符串类型,但是java是强类型的语言。,因此MVC框架必须将这些字符串参数转换成相应的数据类型。 Struts2提供了非常强大的类型转换机制。Struts2的类型转换可以基于ONGL表达式,只要把HTTP参数命名为合法的ONGL表达式,就可以充分利用Struts2的类型转换机制。 1、Struts2内建的类型转换器 Struts2可以完成大多数常用的类型转换。这些常用的类型转换时通过Struts2内建的类型转换器完成的。如下: 2、基于ONGL的类型转换 借助于ONGL,Struts2允许. 阅读全文
posted @ 2012-07-13 10:47
chenssy
阅读(321)
评论(0)
推荐(0)
摘要:
当实现Action处理类后,我们就可以在struts.xml文件中配置该Action了。配置Action的目的就是让Struts2知道哪个Action处理哪个请求。也就是完成用户请求和Action之间的对应关系。 在Action映射中可以指定resulttypes、异常处理器及拦截器,但是,只有Action的name属性是必需指定的,该属性石引用该包的唯一标识。其他属性也可以在package范围内进行定义,供该package下配置的所有Action引用 1、包和命名空间 Struts2使用包来组织、管理Action。定义Action通过使用<package.../>下的<ac 阅读全文
posted @ 2012-07-13 10:44
chenssy
阅读(461)
评论(0)
推荐(0)
摘要:
Struts2提供了大量的标签来开发表现层页面。这些标签的大部分,都可以在各种表现层技术中使用。 Struts2将所有标签分为以下三类: UI(用户界面):主要用于生成HTML元素的标签 非UI标签:主要用于数据访问、逻辑控制等的标签 Ajax标签:用于Ajax支持的标签 1、控制标签 1)、if/elseif/else:都是用来进行分支控制的 语法格式为: 1 <s: if test="表达式"> 2 标签体 3 </s:if> 4 <s: elseif test="表达式"> 5 标签体 6 </s:else 阅读全文
posted @ 2012-07-13 10:37
chenssy
阅读(396)
评论(0)
推荐(1)
摘要:
对于MVC框架而言。我们希望:当Action处理用户请求时。如果出现了异常1,则系统就会转入视图资源1,在该视图资源上输入服务器提示;如果出现了异常2,则系统会转入子图资源2,在该视图资源上输入服务器提示;。。。。。 为了满足上述要求,我们可以采用以下的处理方法: 1 Public class XxxxAction{ 2 Public String execute(){ 3 try{ 4 ……. 5 } 6 catch(异常1 e1){ 7 return 结果1; 8 }... 阅读全文
posted @ 2012-07-13 10:32
chenssy
阅读(309)
评论(0)
推荐(0)
摘要:
首先来看看浅拷贝和深拷贝的定义: 浅拷贝:使用一个已知实例对新创建实例的成员变量逐个赋值,这个方式被称为浅拷贝。 深拷贝:当一个类的拷贝构造方法,不仅要复制对象的所有非引用成员变量值,还要为引用类型的成员变量创建新的实例,并且初始化为形式参数实例值。这个方式称为深拷贝 也就是说浅拷贝只复制一个对象,传递引用,不能复制实例。而深拷贝对对象内部的引用均复制,它是创建一个新的实例,并且复制实例。 对于浅拷贝当对象的成员变量是基本数据类型时,两个对象的成员变量已有存储空间,赋值运算传递值,所以浅拷贝能够复制实例。但是当对象的成员变量是引用数据类型时,就不能实现对象的复制了。 存在一个对象Person. 阅读全文
posted @ 2012-07-13 10:29
chenssy
阅读(608)
评论(0)
推荐(3)
摘要:
在我们配置Action时,发现struts.xml中的<action…/>的绝大部分都相同。这时我们可以通过使用struts2提供的通配符映射机制来处理这个问题。我们在配置<action…./>时,允许在指定name属性时使用模式字符串(即用“*”来代替一个或多个任意字符),接下来就可以再class、method属性和<result…/>中使用{N}的形式来代表前面第几个*所代表是字符。 1、当我们在Action的name属性中使用通配符后,可以用一个<action../>元素代替多个逻辑Action。1 <action name=&quo 阅读全文
posted @ 2012-07-13 10:22
chenssy
阅读(374)
评论(0)
推荐(0)
摘要:
Convention插件的主要特点是“约定优于配置”。 Action的搜索和映射约定 为了能够使用Convention插件,必须在Struts 2 应用中安装Convention插件,即将Struts2-convention-plugin.jar文件复制到Struts 2应用的WEB-INF/lib路径下。 对于convention插件而言,他会对以下两种java类的Action处理: 1、 所有实现了com.opensymphony.xwork2.Action的java类 2、 所有类名以Action结尾的java类 Struts 2的convention插件还允许设置如下三个常量常量说明. 阅读全文
posted @ 2012-07-13 10:09
chenssy
阅读(447)
评论(0)
推荐(0)
摘要:
PreResultListener是要给监听器接口,他可以在Action完成控制处理之后,系统转入实际的物理视图之间被回调。 Struts 2 可以由ActionInvocation的addPreResultListener()方法来完成。 Struts 2 可以由Action和拦截器添加PreResultListener监听器。当为Action添加了改监听器,该监听器就可以再应用转入到实际物理视图之前回调该监听器的beforeResult()方法;当为拦截器添加监听器后,该监听器会对该拦截器所拦截的所有action都起作用。如: 1 public class LoginRegistActi. 阅读全文
posted @ 2012-07-13 10:05
chenssy
阅读(555)
评论(0)
推荐(0)
摘要:
Action访问Servlet API Struts2中的Action并没有和任何Servlet API耦合,这样框架更具灵活性,更易测试。对于Web应用的控制器而言,不访问ServletAPI是几乎不可能的。Web应用中通常需要访问的ServletAPI就是HttpServletRequest、HttpSession和ServletContext,这三个接口分别代表JSP中内置对象中的request、session、application。 Struts 2提供了一个ActionContext类,Struts 2的action可以通过该类来访问Servlet API ActionConte. 阅读全文
posted @ 2012-07-13 10:03
chenssy
阅读(840)
评论(0)
推荐(0)
摘要:
struts 2提供了包含处理多个逻辑的Action,从而允许一个Action内包含多个控制处理逻辑。例如一个页面中存在多个按钮,用户通过不同的按钮提交同一个表单时,可以使用Action的不同的方法来处理用户的请求。如下图页面 页面中有两个提交按钮,但分别提交给Action的不同方法处理,“登陆”按钮使用登陆逻辑来处理请求,而“注册”按钮则使用注册逻辑来处理请求。此时,可以采用动态方法调用来处理 这种请求。动态方法调用是指表单元素的action并不是直接等于某个Action的名字,而是以下面形式来指定表单的action属性action属性为actionName!methodName形式 其中. 阅读全文
posted @ 2012-07-13 09:43
chenssy
阅读(775)
评论(0)
推荐(0)
摘要:
新建一个struts 2项目,命名为struts2按照下面的xml来配置Action1 <package name="hello" namespace="/action" extends="struts-default">2 <action name="helloworld" class="com.struts.action.HelloWorldAction" method="execute">3 <result name="succe 阅读全文
posted @ 2012-07-13 09:40
chenssy
阅读(573)
评论(0)
推荐(0)
摘要:
一、将struts 2的lib文件夹下地commons-fileupload.jar、commons-io.jar、freemarker.jar、javassist.jar、ognl.jar、struts2-core.jar和xwork-core.jar必需类复制到web应用的WEB-INF/lib路径下。如果需要在web应用中使用struts 2的更多特性,则需要将相应的JAR文件复制到web应用的WEB-INF/lib路径下。二、编辑Web应用的web.xml配置文件,配置Struts 2 的核心Filter。在web.xml中定义核心Filter是来拦截用户请求。由于Web应用是基于请. 阅读全文
posted @ 2012-07-13 09:10
chenssy
阅读(1288)
评论(0)
推荐(5)
摘要:
Servlet过滤器简介 Servlet过滤器是通过一个配置文件来灵活声明的模块化的可重用组建。Servlet过滤器截请求和响应,以便查看、提取或操作客服端和服务器之间交换的数据。 Servlet过滤器实际上就是一个标准的java类,这个类通过实现Filter接口获得过滤器的功能。它在jsp容器启动的时候通过web.xml配置文件被系统加载。 Servlet过滤器在接收到用户请求的时候被调用,当服务器接收到用户的请求的时候,依次调用配置好的过滤器,完成后将执行请求所要求的servlet,而servlet执行后的响应,则先通过配置好的过滤器后再发送给用户。 过滤器的用途: 1、用户认证和授... 阅读全文
posted @ 2012-07-13 09:05
chenssy
阅读(867)
评论(0)
推荐(0)

浙公网安备 33010602011771号