- 博客(53)
- 资源 (3)
- 收藏
- 关注
原创 AOP
1.引言我们知道,J2EE应用系统只有部署在J2EE容器中才能运行,那么为什么划分为J2EE容器和J2EE应用系统?通过对J2EE容器运行机制的分析,我们可以发现:实际上J2EE容器分离了一般应用系统的一些通用功能,例如事务机制、安全机制以及对象池或线程池等性能优化机制。这些功能机制是每个应用系统都需要的,而且其设计开发有一定难度,同时对运行的稳定性和快速性要求颇高,必须经过长时间调试和运行经
2008-09-25 22:14:00 2976
原创 代理
1.代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问(在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用).2.代理模式一般涉及到的角色有:(1)抽象角色:声明真实对象和代理对象的共同接口; (2)真实角色:代理角色所代表的真实对象,是我们最终要引用的对象; (3)代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真
2008-09-24 01:31:00 3029
原创 反射
1.问题的提出在Java运行时而非编译时环境中:(1)对于任意一个类,能否知道这个类有哪些属性和方法?(2)对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射(Reflection)机制。Java 反射机制主要提供了以下功能:(1)"在运行时"判断任意一个类所具有的成员变量和方法(当然在这之前需要 "在运行时
2008-09-24 01:03:00 3718 1
原创 装箱和拆箱
1.int、Integer、String三者的相互转换(不涉及Autoboxing/Auto-Unboxing)public static void main(String[] args) { int num; Integer integer; String numString; //(1) int转换为Integer:public
2008-09-21 23:14:00 3128
原创 Date相关
java.lang.Object |--java.util.Date |--java.sql.Date |--java.sql.Timestampjava.lang.Object |--java.text.Format |--java.text.DateFormat (抽象类, 不能通过构造函数构造对象, 只可以通过getDateTimeInstance()方
2008-09-21 16:27:00 3609
原创 struts2输入验证--补充
1.struts2怎么实现方法签名(类似于struts1的DispatchAction):在strust.xml中配置如下(1)struts2怎么实现分发验证:对应于每个方法签名,可以有相应的validate()方法如下public void validateRegister()public void validateLogin()public void validateInsert()(
2008-09-20 15:23:00 3922
原创 struts2 -- interceptor(如何配置Interceptor)
1.interceptor的配置方法1. 普通配置法struts> package name="struts2" extends="struts-default"> interceptors> interceptor name="myInterceptor" class="edu.hust.interceptor.MyInter
2008-09-20 13:57:00 17463 2
原创 struts2 -- interceptor(Interceptor怎么写)
interceptor是struts2的核心。我们也可以定义自己的interceptor。jdk代理模式是基于AOP的,struts2的interceptor也是基于AOP的。所以我们可以把interceptor理解为struts2对动态代理的一种封装,与手工实现jdk的动态代理相比,这种封装使得操作变得更为简单。1. implements Interceptor的自定义intercept
2008-09-20 12:41:00 2518
原创 struts2输入验证--验证框架(xml文件验证)
struts2验证框架分为字段(field校验--面向字段、字段优先)校验器和非字段(validator--校验面向validator、validator优先)校验器.通过验证框架验证,只需要删除掉原来validate()方法中的内容(这篇blog是基于"struts2输入验证--validate()验证"的),再增加一个xml文件即可:一个Action对应一个验证xml(RegisterAc
2008-09-20 11:29:00 7901 3
原创 struts2输入验证--validate()方法验证
1.action类package edu.hust.action;import java.util.Calendar;import java.util.Date;import com.opensymphony.xwork2.ActionSupport;public class RegisterAction extends ActionSupport {
2008-09-20 10:14:00 4179 2
原创 struts2类型转换续
对于上一篇blog,如果输入多个Point,该如何处理:1.输入页面如下,假设输入3个Point,其name都相同。%@ page contentType="text/html;charset=GBK"%>%@ taglib prefix="s" uri="/struts-tags" %>s:form action="converter" method="post">
2008-09-20 10:01:00 1333 1
原创 struts2类型转换
1.先给一个PointBean,要求对这个bean进行类型转换public class Point { private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x;
2008-09-20 09:33:00 1829
原创 struts2的action基础
看代码及注释LoginAction.javapackage edu.hust.action;import com.opensymphony.xwork2.ActionSupport;//strust2.0的Action可以不继承任何类(这个和struts1.3有很大区别). 此时struts2.0的Action类似一个JavaBean,只有getter、setter
2008-09-20 00:29:00 1784
原创 IoC详解
1.定义:IoC是一种模式。IoC(Inversion of Control)中文译为控制反转(即“不用你找,我来提供给你”)。控制反转意味着在系统开发过程中,设计的类将交由容器(spring中是通过applicationContext.xml控制的)去控制,而不是在类的内部去控制,类与类之间的关系将交由容器处理,一个类在需要调用另一个类时,只要调用另一个类在容器中注册的名字就可以得到这个类的实例
2008-09-18 09:15:00 3604 2
原创 工厂模式
1. 创建型设计模式总结: 创建型设计模式应该应用于那些"接口相对稳定但类型实体本身却经常面临需求变化"的场合。如果接口不稳定,创建型设计模式将无法设计;如果类本身变化不大,创建型设计模式也就没有必要。2. 工厂模式定义:定义一个创建对象的接口,并让子类来决定由哪个类实现这个接口。工厂模式将接口实例化交给子类完成。工厂模式是非常常见的模式,通常与动态类的加载相结合使用。常用的JDBC中,只
2008-09-18 09:04:00 1004
原创 string机制3
1.intern()定义public native String intern(); 这是一个本地方法。在调用这个方法时,JAVA虚拟机首先检查字符串池中是否已经存在与该对象值相等对象存在,如果有则返回字符串池中对象的引用;如果没有,则先在字符串池中创建一个相同值的String对象,然后再将它的引用返回。 换一种解释:存在于.class文件中的常量池,在运行期被JVM装载,并且可以扩充。S
2008-09-14 11:52:00 759 1
原创 string机制2
先来推荐一个检测内存泄漏的软件:JProfiler。很不错。本篇博文用到了这个软件。接上一篇博文中那个经典面试问题。这里我用JProfiler对String对象的产生进行了监控。结果表明上篇博文的分析是正确的。public static void main(String[] args) { System.out.println("=====Start========");
2008-09-14 01:49:00 964
原创 string机制1
1.String类概念(1)String是final的,不可被继承。public final class String。String是的本质是字符数组char[], 并且其值不可改变。private final char value[];(2)Java运行时会维护一个String Pool(String池)。String池用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。而一
2008-09-14 01:39:00 2368
原创 String、StringBuffer和StringBuilder
String是final的系统内置类型,不可被继承。String是不可变的对象(长度固定、值不可变)。因此在每次对String类型进行改变的时候其实都等同于生成了一个新的String对象,然后将指针指向新的String对象,所以经常改变内容的字符串最好不要用String,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后,JVM的GC就会开始工作,那速度是一定会相当慢的。举例:
2008-09-13 17:49:00 1216
原创 多线程为什么有同步的概念
线程同步:使隶属于同一进程的各线程协调一致地工作。虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取
2008-09-13 14:47:00 2258
原创 HashMap和TreeMap
1.AbstractMap抽象类和SortedMap接口AbstractMap抽象类:覆盖了equals()和hashCode()方法以确保两个相等映射返回相同的哈希码。如果两个映射大小相等、包含同样的键且每个键在这两个映射中对应的值都相同,则这两个映射相等。映射的哈希码是映射元素哈希码的总和,其中每个元素是Map.Entry接口的一个实现。因此,不论映射内部顺序如何,两个相等映射会报告相同的
2008-09-13 14:26:00 16823 2
原创 容器简介
Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap│ └LinkedHashMap└WeakHashMap容器类彼此间的关系请看下图legacy表示遗留过期的意思。1.容器类类库分为两类(1)Collection:最基本的集合接口,JDK不提供直接继承自Collect
2008-09-13 13:46:00 1028 1
原创 ArrayList、Vector和LinkedList
ArrayList、Vector和LinkedList实现了所有List接口的操作,并允许存储null值。1.实现方式ArrayList和Vector是List接口的可变长数组实现,即动态数组(Object类型的数组)。new ArrayList()时,底层会生成一个长度为10的数组来存放对象,如果预先知道list会存放多少个对象的话,最好通过new ArrayList(int lengt
2008-09-13 10:09:00 1343
原创 进程(Process)和线程(Thread)
进程(Process)和线程(Thread)1.Process特点(1)进程在执行过程中有内存单元的初始入口点,并且进程存活过程中始终拥有独立的内存地址空间;(2)进程的生存期状态包括创建、就绪、运行、阻塞和死亡等类型;(3)从应用程序进程在执行过程中向CPU发出的运行指令形式不同,可以将进程的状态分为用户态和核心态。处于用户态下的进程执行的是应用程序指令、处于核心态下的应用程序进
2008-09-12 20:09:00 2784
转载 sql注入解释
SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。 SQ
2008-09-11 00:20:00 1016
转载 struts1.3.8 -- 动态Action
使用ActionForm可以给开发者在处理HTML表单时带来极大的帮助,它简化了代码的编写,并提供了自动的数据验证。但是,ActionForm也存在几个非常明显的缺点。 首先,如果ActionForm对应的HTML表单添加或删除一些属性,ActionForm类就可能需要修改并重新编译; 其次,如果HTML表单是动态的,那么ActionForm更是无能为力了;
2008-09-11 00:13:00 1655
原创 common-fileupload-1.1.1 && struts1.3.8 单个文件上传
1. JSP"text/html;charset=GBK"%>"http://struts.apache.org/tags-bean" prefix="bean" %>"http://struts.apache.org/tags-html" prefix="html" %>"http://struts.apache.org/tags-logic" prefix="log
2008-09-10 22:14:00 1942
原创 smartupload -- api
File类:这个类包装了一个上传文件的所有信息。通过它,可以得到上传文件的文件名、文件大小、扩展名、文件数据等信息。1、saveAs -- 作用:将文件换名另存。原型: public void saveAs(java.lang.String destFilePathName) 或public void saveAs(java.lang.String destFilePathName, int o
2008-09-10 00:55:00 989
原创 smartupload -- 批量上传模块
啥也不说了,直接看代码1. JSP --> 注意:注释标记的对应,例如三个下面的内容是对应的。%@ page contentType="text/html;charset=GBK"%>html> head> title>Upload Pagetitle> script type="text/javascript">
2008-09-10 00:00:00 2146 1
原创 简单smartupload
上传操作依然使用form表单,传输的数据都很大,所以只能用post方式提交。如要做上传操作,需要对表单的数据进行封装。enctype="multipart/form-data"> 由于上传表单要被封装,如果在上传表单中存在text,select等其他输入内容,则在表单提交处无法使用request.getParameter()接收text,select等输入的数据。这时要使
2008-09-09 19:29:00 1908
原创 jar打包
为什么会有这个玩意呢,首先,这是jar的全称:JavaTM Archive(JAR) File,是的,就是java存档文件。这有点类似zip文件,想一想它是干什么的用的呢,压缩!?没错就是要压缩,将我们原先零散的东西放到一下,重新组织,所有这些目的只有一个:方便!好了,不用管他是怎么压缩的,我们的重点是哪些是我们要压缩的(输入),还有压缩成了什么(输出),进而将它发布(部署)。其中,为J2EE应用
2008-09-09 13:26:00 1399 1
原创 struts1.3.8需要导入的包
是自己从struts-core-1.3.8.jar开始,逐步开发struts的过程中一个个根据需要导入的。有些功能没用到,可能相应的包没有导入。下面所诉都是自己曾经用过的包。关于包的解释是在网上找的一些资料:commons-beanutils-1.7.0.jar: 这个是jakarta commons项目中的一个子项目。这个项目开发的目的是帮助开发者动态的获取/设值Java Bean的属性,同
2008-09-09 09:59:00 4988 1
原创 自制token --> provent 重复提交 from Refresh && Undo
首先明确一个概念,防止重复提交和防止输入重复数据是两码事,防止重复数据的输入是DataBase应该完成的任务。在JavaEE中由JDBC或Hibernate完成;而防止重复提交是control和view层应该完成的任务。-------------------------------------------我是光荣的分割线-------------------------------------
2008-09-08 21:45:00 2556 1
原创 ActionForm中validate()方法 -- 一个细节
今天写struts1.3.8。出现一个问题,让我琢磨了好长时间。往常写login是独立出来的,针对login功能有独立的LoginForm和LoginAction,在LoginForm中可以用validate()进行表单验证(虽然不如用js+正则表达式进行表单验证更有效,但也算是提供了一种思路)。validate()验证通过,struts-config.xml才会根据type跳转到LoginA
2008-09-07 23:20:00 6303
原创 vo/ActionForm中封装属性时要去除空格
例如 public String getUid() { if (uid != null) uid = uid.trim(); return uid; } public String getPassword() { if (password != null) password = password.trim();
2008-09-07 22:54:00 1164
原创 logic taglib学习
啥都不说了,全在代码里了!!%@ page contentType="text/html;charset=GBK"%>%@ page import="java.util.*"%>%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>%@ taglib uri="http://struts.a
2008-09-07 11:22:00 794
原创 bean taglib 学习
%@ page contentType="text/html;charset=GBK"%>%@ page import="java.util.*"%>%@ page import="edu.hust.vo.*"%>%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>%@ taglib ur
2008-09-07 01:54:00 1081
原创 el表达式不起作用的解决方案
今天晚上学习SSH,发现一个el表达式在JSP2.0中不起作用的问题。反复调试多次,发现是web.xml中出了问题。猜测是版本的问题,但只知道了如何修改,不知道为什么那样修改。停止工作后看别人博客,很幸运的发现了原因。tomcat5.0的版本, 使用了低版本,只求稳定。web.xmlxml version="1.0" encoding="ISO-8859-1"?>we
2008-09-06 23:41:00 1616 1
原创 servlet-api-2.4.jar not loaded
信息: validateJarFile(D:/xj/workspace/webworktest/webapp/WEB-INF/lib/servlet-api-2.4.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class分析:jsp-ap
2008-09-06 22:39:00 1196
转载 struts-config.xml中action配置 --> attribute和name的区别
在实际开发中,我们一般不必去理会attribute属性的设置。 在一般情况下,actionForm是被存储在一定的scope中(request或session,通过action的scope属性来配置),当我们在配置时,指定name而不指定attribute,那么指定的name值就作为actionForm存储在scope中的key值,我们可以在action中通过httpServletReque
2008-09-06 19:11:00 1698 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人