年轻没有什么不可以!
[转]Java视线论坛 阅读主题 - 面向对象的思维方法
| java代码: |
http://hostname/count.cgi?id=xxx |
| java代码: |
getCount() // 取计数器值方法 resetCounter() // 计数器清0方法 setCount() // 设计数器为相应的值方法 |
| java代码: |
public class Counter { public int getCount(int id) {} public void resetCounter(int id) {} public void setCount(int id, int currentCount) {} } |
| java代码: |
// 这里从HTTP环境里面取id值 ... Counter myCounter = new Counter(); // 获得计数器 int currentCount = myCounter.getCount(id); // 从计数器中取计数 // 这里向客户浏览器输出 ... |
| java代码: |
类JunkMail 属性: head body address 方法: sendMail() // 发送邮件 listAllMail() // 列邮件地址 用Java来表示: public class JunkMail { private String head; private String body; private String address; public JunkMain() { // 默认的类构造器 // 从外部配置文件读邮件头º陀始å this.head=...; this.body=...; } public static boolean sendMail(String address) { // 调用qmail,发送email } public static Collection listAllMail() { // ·梦适菘â,返回一个邮件地址集合 } } |
| java代码: |
public class User { public static void addUser(...) { // 数据库insert一条记录 } public static void deleteUser(...) { // 数据库delete一条记录 } public Vector listUsers(...) { // 数据库select结果放到一个集合里面 } } |
| java代码: |
public interface Iterator { public boolean hasNext() {} public Object next() {} } |
| java代码: |
public class User { ... public Iterator listUsers() { } ... } |
| java代码: |
User myUser = new User(); Iterator iterator = myUser.listUsers(); while (iterator.hasNext()) { iterator.next(); } |
window.open详解 (转摘)
Struts Validator
上面的材料中介绍了Struts 验证器,举例分别介绍了使用服务器端验证和使用客户端验证。下面记录一下注意的地方,免得以后犯同样的错误。
一、使用服务器端验证,Action Form 实现类应该扩展 ValidatorForm 而不是 ActionForm;使用客户端验证,Action Form 应该扩展 ValidatorActionForm ;
二、服务器端验证时必需的行 <html:errors /> 在客户端验证时不再需要
三、 服务器端验证时ValidatorForm 中的 需要有validate() 方法,返回return super.validate(mapping, request);,提交时调用。使用客户端验证时则不需要。
四、struts-config.xml 中action的标签中应给input属性写上来自的jsp文件名。
五、在客户端验证时,jsp文件需要注意一些事情:使用标签<html:html>;<html:form action="/submit" onsubmit="return validateSubmitForm(this);">标签中需要onsubmit属性;
六、<html:javascript formName="submitForm"/>最后需要加上这个标签,作用是Render JavaScript validation based on the validation rules loaded by the ValidatorPlugIn.
初学struts(一)
在WSAD上制作最简单的struts例子:
1. 在我们的项目中引进struts支持和JSP标签库。具体方法:在我们的WEB项目上点右键,选择“属性”——“web项目功能部件”,然后勾上“添加struts支持”和“jsp标签库”下面的所有选项
2. 建立page1.jsp文件,该文件中存在form、text输入域和提交按钮(设有username和passwird两项)。然后再建立page2.jsp,不需要什么内容(用于跳转到)。
注意:
u 文件中的标签使用jsp标签而不是html标签。例如: 应为<.html:form>.struts标签详见:Struts Taglibs-chm.chm;
u 因为此时Action还没有建立,所以form的属性action暂时没有值,<.html:form action=“”>,建完Action后再添上。
u form的其它属性尤其是name属性现在还不是特别清楚,需要查一下手册
3. 建立ActionForm类,例如:Form1.java。在建立的过程中需要把添加到此ActionForm中的字段选择出来,可以来自一个jsp文件,也可以同时来自多个jsp文件。可以看出我们建立的Form1.java继承了ActionForm类,只是增加了与我们所选的字段对应的成员变量,和对每个成员变量的读取、赋值、复原方法。我们可以根据需要增加方法。
注意:
新建的ActionForm信息写入了struts配置文件(struts-config.xml)中。值得注意的是如果我们不想要这个Form1.java,我们删掉后,配置文件中关于这个Form的信息依然存在,这就需要我们手动的把它删除,否则如果我们在建一个同名Form1.java的ActionForm时就会出现重复,并不报错,但是到后面建立Action时会出问题。
问题:
从建立的Form1.java中和配置文件中都没有看到Form1.java对应的jsp文件的信息。是不是ActionForm直接对应的就是字段而不是——jsp——字段。如果这样的话,那对应的字段中即使来自不同文件也不能使重名的
4. 建立Action。在建立的过程中,需要选择表单bean名称和添加跳转目标page2.jsp。实际上许多逻辑和调转多转移到Action部分集中来做。
问题:
u 是否可以多个Action对应一个ActionForm,如果能拿实现一个什么样的功能?
u 是否可以多个jsp文件对应一个ActionForm,如果能拿实现一个什么样的功能?
初学java笔记(一)
一、Public,protected,private
public包内包外都可见,protected包内可见,private只有自己可见。如果不标明是那种类型,默认为protected包内可见。
二、java是强类型语言
三、java垃圾回收,不像c需要人为的释放空间,在java里当对象不再被引用时
它会认为,该对象已经没有用了,自动的隐式的释放。finalize()在释放对象之前被调用
JSP标签(一)
开发JSP页面的一个目标是和最佳做法是尽量减少java代码(表示或逻辑),这样能建立整洁的JSP页面,更容易阅读、理解和维护。实际上实现的是业务逻辑层与表示层的分离。
下面介绍编写标签的过程:
1. 标志处理器要继承TagSupport类。TagSupport类实现了Tag 和 IterationTag两个接口。
2. doStartTag(): 在标记开始处由容器调用,返回值将决定是否对body content计值。返回值有两个EVAL_BODY_INCLUDE和SKIP_BODY。如果返回SKIP_BODY则不处理标签体内容,如果是EVAL_BODY_INCLUDE则在doStart()之后计算标签的体内容。
3. doAfterBody(): 当doStartTag()方法调用完毕并且返回Tag.EVAL_BODY_INCLUDE时,将对该标记的body content进行计值处理。计值完以后,将由容器调用该方法。因为只有对body content计值,才可能触发"after body"这一事件。它也有两个返回值SKIP_BODY——不再重新求值体内容,EVAL_BODY_AGAIN——再次求值体内容;(从而可以实现对求知体内容的循环)
4. doEndTag(): 当doStartTag()方法调用完毕并且返回Tag.SKIP_BODY时或者doAfterBody()方法调用完毕并且返回IterationTag.SKIP_BODY时调用,一般在该方法中输出结果,即将结果写入JspWriter输出流中输出;该方法可以返回Tag.SKIP_PAGE或者Tag.EVAL_PAGE。前者不再对该标记以后的页面计值,后者继续对该标记以后的页面计值;
二、编写标志库描述文件(扩展名为tld的XML文件)
三、使用标签