11 2006 档案

摘要:项目练习:使用struts和结合JDBC访问数据库,编写用户登录与用户注册的用例,要求有如下功能: (1)使用struts自身提供的功能防止表单重复提交; (2)通过在struts中配置的数据源获取连接; (3)能够对表单数据进行非法格式校验,例如,密码长度不能小于3和大于16,email,生日等格式; (4)格式校验失败后回到表单输入页面,提示用户重新输入,并显示错误提示信息; (5)注册用户名不能重复,如果与数据库中的已注册用户重复,要求回到表单输入页面,提示用户; (6)登录失败时,要能够提示出是用户名错误,还是密码错误。 阅读全文
posted @ 2006-11-29 09:29 春天的气息 阅读(97) 评论(0) 推荐(0)
摘要:今天对struts的一些细节进行了详细讲解:一个ActionMapping对象对应struts-config.xml文件中的一个<action>元素,读ActionMapping类的API帮助文档,通过各个setter/getter方法,即可了解<action>元素的各个属性的意义。<action>元素的input属性可以指向一个logon.do这样的url,而不仅限于.jsp页面。<action>元素的unknown属性的作用讲解了ForwardAction的应用: <action parameter="/WEB-INF/jsp 阅读全文
posted @ 2006-11-28 14:55 春天的气息 阅读(96) 评论(0) 推荐(0)
摘要:首先为大家分析了struts框架的工作原理和体系结构,讲解了ActionServlet、Action、ActionForm、ActionForward等类的作用与工作关系。struts-config.xml文件与ActionMapping类。接着演示使用MyEclipse编写struts应用的步骤:先做ActionForm,并要设置一个use case名, 这个use case名是供MyEclipse这个IDE工具自己使用的。可以先看看不设置这个use case名的效果。在创建ActionForm时,就可以创建出使用这个ActionForm的jsp页面。然后再创建Action。提问:Actio 阅读全文
posted @ 2006-11-26 14:11 春天的气息 阅读(123) 评论(0) 推荐(0)
摘要:今天复习前些天讲解的spring mvc,要求每个学员都能独立使用SimpleFormController完成表单处理流程,主要由学生自己动手实践。写spring mvc的例子程序时,想想spring mvc程序的工作流程,然后根据这个流程一步步进行实施。在配置InternalResourceViewResolver时,注意其prefix属性值的最后一定要有“/”。AbstractController里面的handleRequest方法为什么被定义成final呢?模板方法模式:一个类自己一个方法调用自己的其他方法,而其他方法由子类来实现。不管内部调用的方法是怎样的流程,外部始终只与那个总的调用 阅读全文
posted @ 2006-11-26 13:46 春天的气息 阅读(99) 评论(0) 推荐(0)
摘要:看到HtmlFilter中的一段代码:StringBuffer result = new StringBuffer(content.length + 50);顺便问问学员们其中的一些思想和原因,结果回答者甚少,这是我以前就讲解过的一个知识,结果很多人都忘了。这次再给大家讲述一遍,希望大家能够记住。今天主要讲解如何使用Spring MVC中的Validator对表单数据进行校验,分析了BindException类,ObjectError类,FieldError类的应用。MessageSourceResolvable.getCodes()方法的说明,了解了FieldError构造方法中的Strin 阅读全文
posted @ 2006-11-24 22:32 春天的气息 阅读(122) 评论(0) 推荐(0)
摘要:今天新班开学典礼,我必须出席,所以,上午安排这个班的学员们练习昨天讲解的SimpleFormController。一两个学员瞒着我,外出找公司面试了几把,最后问了我几道令他们心虚的几道面试题,下午我先为大家分析了这几道面试题:1.在使用new关键字创建某个类的实例对象时,构造方法抛出了异常,这时候,程序有没有在内存中创建出该类的实例对象呢?请说出理由!2.对于一个类中的构造方法来说,是否要考虑与该类中的其他方法之间的线程安全吗?请说出理由!3.如果程序中没有任何变量引用一个外部类对象,但有变量引用其中的内部类对象,请问外部类对象是否会被垃圾回收器回收?请说明理由!接着,我就着我们写成的书稿,给 阅读全文
posted @ 2006-11-22 22:36 春天的气息 阅读(161) 评论(0) 推荐(0)
摘要:1.查看帮助文档,了解spring中提供了哪些自定义标签以及这些标签的用途与用法。通过实际的例子演示了如何使用<spring:message>来显示国际化的文本信息,如何使用<spring:bind>标签来显示对象及对象的属性信息。2.<spring:bind>只能绑请求域中的对象信息,<spring:bind>生成status属性变量的类型为org.springframework.web.servlet.support.BindStatus,status属性变量只能在<spring:bind>标签对之间使用。查看org.spring 阅读全文
posted @ 2006-11-21 20:36 春天的气息 阅读(1127) 评论(0) 推荐(0)
摘要:controller返回ModelAndView,ModelAndView中的视图名称也要通过配置一个ViewResovler的Bean对象来进行解析。请说明你为什么不直接实现controller接口,而是继承AbstractController类的理由?这里面涉及了一个什么设计模式?MultiActionController有什么作用?在什么情况下使用?DisplaySortByXxx。什么情况下用BaseCommandController?当要请求参数自动包装成一个Command对象时。下午带着学员们去听了csdn与sun公司组织的技术讲座,下面是陈喆整理的笔记。1.SSO(Single 阅读全文
posted @ 2006-11-21 20:26 春天的气息 阅读(159) 评论(0) 推荐(0)
摘要:上午学员们继续动手实践,下午开始讲解Spring MVC。在WEB应用程序中要使用spring,首先想要与哪个类打交道?ApplicationContext!但是ApplicationContext是个接口还是类?创建出ApplicationContext对象必须要一个什么文件?这个文件的作用是什么?描述了其中管理哪些bean,以及这些bean之间的关系。在使用spring的web开发中,需要使用哪两个容器对象?ApplicationContext,ServletContext,现在,在web开发中让人们能够通过ApplicationContext对象获得ServletContext,让通过S 阅读全文
posted @ 2006-11-19 22:58 春天的气息 阅读(117) 评论(0) 推荐(0)
摘要:今天由方老师对学员们进行考试,内容是分别使用model1和model2编写用户登陆与注册程序,并说明设计思想。 阅读全文
posted @ 2006-11-18 11:44 春天的气息 阅读(103) 评论(0) 推荐(0)
摘要:首先回顾Web容器调用Servlet的原理与过程,然后讲解了Filter拦截的原理、Filter类与FiterChain类。Filter的注册与运行。编写一个实用案例:用Filter实现对资源的集中访问保护。再次分析了HttpServlet的doHead与doGet调用原理,讲解了对请求和响应对象进行包装的原理:writer与OutputStream的关系:把麻烦留给自己,把方便留给别人!假HttpServletResponse中的假Writer又是对假OutputStream的包装让filter1对default Servlet进行拦截,让filter2对.html url进行拦截,当访问a 阅读全文
posted @ 2006-11-17 14:07 春天的气息 阅读(132) 评论(0) 推荐(0)
摘要:讲解了displayTag这个开源的自定义标签的作用与设计思想,让大家自己写一个这样的示意程序,结果很糟糕!让大家解释${x.name}的内部执行原理,再次复习讲解了迭代标签的编写细节。讲解了什么是应用程序的国际化,复习了Locale对象和操作系统的Locale设置。讲解了ResourceBundle的资源包管理:先创建messages.properties、messages_en.properties、messages_zh.properties、messages_zh_cn.properties等文件,每个文件中的内容即为文件名,介绍它们是一个资源包,然后编写java源程序(用缺省的Loc 阅读全文
posted @ 2006-11-14 14:54 春天的气息 阅读(100) 评论(0) 推荐(0)
摘要:梁老师今天讲解了工作流中的definition的数据存储在哪里,instance的状态数据存储在哪里,以及如何从definition到一个instance的内部细节。一个instance Activity里记录了Processor和definition Activity的id,一个instance Activity中有多个WorkItem,这些WorkItem是根据任务分配给多个角色顺序执行或并发执行时产生的。基于他们公司的工作流引擎,在Appfuse的基础上结合spring MVC,Spring,hibernate做一个用户登陆的程序,然后做一个撰文与审批的工作流,整个与撰文相关的业务用一个 阅读全文
posted @ 2006-11-12 19:15 春天的气息 阅读(172) 评论(0) 推荐(0)
摘要:梁老师今天主要讲解如何调用工作流API来访问工作流,包括如下一些引伸知识:1. 定义期 :也叫建模期。 按着建模规则生成一份过程定义。 运行态: 根据定义,执行服务。2. 组织模型:把任务分给谁。3. 三种数据:控制数据,应用数据,模型数据。4. 在多级联菜单中,最好显示子菜单时,先向服务器请求显示名字,然后当用户再次点击察看详情的时候,才向服务器请求显示子菜单的详 细信息。5. 数据类型 (image,blob,clob,text)的区别:Hibernate 如何存取大数据字段:(1).在 hibernate.cfg.xml 中配置一个参数(hibernate.jdbc.use_stream 阅读全文
posted @ 2006-11-12 10:23 春天的气息 阅读(103) 评论(0) 推荐(0)
摘要:首先解决昨天遇到的表格细线的问题,在明白解决方案的原理之前,学员们要扭转观念:HTML的表格与我们通常看到的表格不一样,一个大框里面套各种小单元格。<table>的border是指整个表格的外边框的宽度,但是,只有设置了border的值,内部单元格才有边框,且无论boder的值是多少,内部单元格的边框宽度总为1。<table border=1 bordercolor=green bgcolor="red" cellspacing=10 cellpadding=5><tr bgcolor="red"><td> 阅读全文
posted @ 2006-11-11 15:25 春天的气息 阅读(121) 评论(0) 推荐(0)
摘要:// 计算结果,有进位借位或溢出或溢出产生,则为非0,否则为0// 调用完宏后直接加以判断int g_iResult = 0;// 对有符号整数数学计算进行判断#define CARRY / __asm__ ("jo 0f/n/t" / "movl $0, g_iResult/n/t" / "jmp 1f/n/t" / "0:/n/t" / "movl $1, g_iResult/n/t" / "1:/n/t");// 对无符号整数数学计算进行判断#define OVER_F 阅读全文
posted @ 2006-11-11 14:22 春天的气息 阅读(90) 评论(0) 推荐(0)
摘要:针对汪大伦的提问,解释Session中为什么也可能出现线程安全的问题,在服务器端比较缓慢时,一个表单可以被提交多次,这时候就会出现多个线程访问同一个Session的情况。所以,我们是要注意存放在Session中的Cart对象本身应该是线程安全的。前几天雷辉老师在讲解ibatis的JPetStore例子时,我们看到某个业务对象中的一个方法为两个成员变量进行了赋值,结果JSP页面的显示数据就发生了修改,当时觉得很奇怪,我们的习惯思维是将数据显示在某个域范围中,JSP然后显示域范围中的数据。后来雷辉研究明白了,JSP页面显示的就是那个业务对象,业务对象内部的成员变量发生了修改,就导致了JSP页面的显 阅读全文
posted @ 2006-11-11 13:51 春天的气息 阅读(121) 评论(0) 推荐(0)
摘要:今天还是讲解自定义标签。首先介绍了IterationTag接口、以及迭代输出标签体内容的标签实现原理和应用。在讲解迭代输出集合中的元素的例子时,先讲解用普通程序代码迭代输出集合的情况:for(String user : users){System.out.println("姓名:" + user)}上面的程序代码包含三个信息:迭代变量、集合对象、显示格式,用自定义标签进行迭代输出时,其格式如下:<it315:iterate var="user" collections="<%= users %>">姓名:${u 阅读全文
posted @ 2006-11-08 23:20 春天的气息 阅读(149) 评论(0) 推荐(0)
摘要:学员冯伟立今天中午问了我一个有趣的Java编译问题,我也无法给他解释,不知道有没有路过的高人能够解释清楚原因,望不吝赐教!下面程序的main方法中的第二行代码和注释中的两行代码表达的意思完全相同,注释中的两行代码不能通过编译(这很容易理解),而第二行(采用方法调用链)却可以顺利通过编译(这就很难理解了)。public class Test{ public void func() { System.out.println("func"); } public static void main(String args[]) throws Exception { Object ob 阅读全文
posted @ 2006-11-07 22:15 春天的气息 阅读(140) 评论(0) 推荐(0)
摘要:Tag接口中的常量与Tag接口中的各个方法的讲解,在一个标签处理器类中实现Tag接口的每个方法,根据打印结果的先后顺序就可以知道每个方法的调用顺序了。设计一个自定义标签,如果用户已经登录,则显示出该标签内存放的用户私人信息(如,留言,短消息等),否则,只能看到标签之外的那些通用信息。开发防止“盗链”的自定义标签,书稿中没有讲为什么要选择在doEndTag进行编程检查?因为只有doEndTag方法可以返回SKIP_PAGE。为自定义标签定义属性,标签的动态属性值与静态属性值的区别,动态属性值的最大好处在于可以传入对象。动态属性与DynamicAttributes接口的setDynamicAttr 阅读全文
posted @ 2006-11-07 21:55 春天的气息 阅读(131) 评论(0) 推荐(0)