- [ Java ] IT职场:程序员Java面试中的30个问题陷阱
点击:0 发布日期:02/22
找工作要面试,有面试就有对付面试的办法。以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel,Motorola, SUN,以及其它大小公司。
面试是没什么道理可讲的,它的题目有的不合情理、脱离实际。有在纸上写的,有当面考你的,也有在电话里问的,给你IDE的估计很少(否则你赶快去买彩票,说不定中)。所以如果你看完此文后,请不要抱怨说这些问题都能用IDE来解决。你必须在任何情况下准确回答这些问题,在面试中如果出现一两题回答不准确很有可能你就被拒之门外了。
当然这些都是Java的基本题,那些面试的人大多数不会问你Hibernate有多先进,Eclipse的三个组成部分,或command design pattern,他们都是老一辈了,最喜欢问的就是基础知识。别小看了这些基础,我朋友水平一流,结果就栽在一到基础知识的问题下,和高薪无缘。
好了废话少说,开始正题。
第一,谈谈final, finally, finalize的区别。
最常被问到。
第二,Anonymous Inner Class (匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
第三,Static Nested Class和Inner Class的不同,说得越多越好(面试题有的很笼..
- [ Java ] McObject发布用于eXtremeDB的Java本地接口
点击:0 发布日期:02/22
实时应用数据库系统的创新厂商McObject公司发布了用于其嵌入式数据库产品eXtremeDB™的Java本地接口(JNI)。eXtremeDB JNI是最快的Java数据库解决方案,并显示出McObject在扩大产品吸引力方面的强劲势头。eXtremeDB JNI的服务对象包括基于Java的机顶盒及其他嵌入式系统的开发人员,他们的目标是获取可靠的具有较小RAM与CPU“尺寸”的成品数据库。
eXtremeDB JNI 特别面向实时企业系统厂商,这些系统包括高度可扩展的金融、电子商务、社交网络以及其他基于Web的应用。McObject数据库在这一市场领域的应用不断增长,在带来内存对象缓存方面优点的同时,避免了一些所谓“NoSQL”解决方案的不足,例如:较高的存储需求以及缺乏数据完整性保障。
对那些已经使用Java的公司来说,eXtremeDB JNI不但可以为性能密集的数据分类、存储及检索功能带来与C/C++程序相当的速度,还为公司带来了便利——可以使用一种熟悉的语言。eXtremeDB的杰出性能源于其完全在主存中管理数据的流线型结构,消除了采用磁盘存储的数据库系统中的文件I/O、高速缓存管理等开销。
高速度,以及不超过100K的超小代码尺寸,使得eXtremeDB广泛应用于嵌入式系..
- [ Java ] Kenai.com将与java.net合并
点击:0 发布日期:02/22
Kenai.com在上周宣布将于4月2日之后关闭的信息之后,2月5号Kenai的管理员Ted Farrel又在首页上发布了重要的信息。
首先,Ted Farrel做了检讨,他认为,在Oracle和SUN合并之后,没有和管理层很好地沟通关于Kenai的发展计划,为此他将尽力地弥补自己的过失。
其次,他说明,关闭kenai只是为了减少重复建设,因此,kenai.com的技术架构将被转移到java.net,这意味着,现在 kenai.com上的项目可以不必转移到其他的项目管理站点上去了,只要开发者愿意,他们的项目将被无缝地转移到java.net。目前,将 java.net改造为Kenai基础架构的工作正在进行中。Ted Farrel建议开发者可以先留在Kenai.com,这个月(2010年2月)晚些时候,他将通知开发者相关事项。
Kenai是SUN推动建立的项目协作和管理站点,具有很多独特的功能,并且已经被集成在著名的开发工具NetBeans中。由于和IDE直接集 成,Kenai已经在Java的开发者中得到了认可。很多著名的开源项目都驻留在Kenai.com上,比如用来开发Google AppEngine的NetBeans插件。Kenai.com宣布关闭之后,在开源界引起了很大的震动,有报道指出,Oracle关闭Kenai的原因 是想将其用于内部工作,并准备让自己的客户付费使用Kenai。很多..
- [ Java ] 有关JavaScript语言的10件让人费解的事情
点击:0 发布日期:02/15
Javascript 可算是世界上最流行的编程语言,它曾被 Web 开发设计师贴上噩梦的标签,虽然真正的噩梦其实是 DOM API,这个被大量的开发与设计师随手拈来增强他们的 Web 前端的脚本语言,如今越来越被重视,虽则如此,JavaScript 仍然拥有很多让人费解的东西。
1. 它以 Java 命名,但并不是 Java
它最初叫 Mocha, 接着改名为 LiveScript,最后才确定命名为 JavaScript,根据历史记录,Java 的命名与 Netscape 和 Sun 之间的合作有关,作为交换条件,Netscape 在他们备受欢迎的浏览器中创建了 Java 运行时。值得一提的是,这个名字的出台几近一个玩笑,要知道,LiveScript 和 Java 在客户端脚本方面存在敌对关系。
不管怎么说,人们后来不得不一再澄清的一件事就是,JavaScript 和 Java 毫无关系。
2. Null 是个对象?
看看这段代码,它返回的是 object。
- [ JSP ] Tomcat6 下 MySQL 5.1 数据源配制
点击:0 发布日期:02/04
数据源配制中有一些参数,不太明白,不明白的咱不说.在这说两种我用过的.
首先在apache-tomcat-6.0.16\lib 路径下的 mysql JDBC 5.1 驱动不能少.
第一种是在TomCat 里配制apache-tomcat-6.0.16\conf\context.xml 如下:
Xml代码
<?xml version='1.0' encoding='utf-8'?>
<Context>
<Resource name="jdbc/myTest" auth="Container"
type="javax.sql.DataSource" username="root" password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.68:3306/points" />
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<?xml version='1.0' encoding='utf-8'?>
<Context>
<Resource name="jdbc/myTest" auth=&quo..
- [ Java基础 ] 你应该知道的10件关于Java 6的事情
点击:4095 发布日期:09/05
《What's New in Java SE 6 Beta 2》一文中描述了你应该知道的10件关于Java 6的事情,下面总结如下:
1、Web Services. 优先支持编写 XML web service 客户端程序。你可以用过简单的annotaion将你的API发布成.NET交互的web services. Mustang 添加了新的解析和 XML 在 Java object-mapping APIs中, 之前只在Java EE平台实现或者Java Web Services Pack中提供.
2、Scripting. 现在你可以在Java源代码中混入JavaScript了,这对开发原型很有有用,你也可以插入自己的脚本引擎。
3、Database. Mustang 将联合绑定 Java DB (Apache Derby). JDBC 4.0 增加了许多特性例如支持XML作为SQL数据类型,更好的集成Binary Large OBjects (BLOBs) 和 Character Large OBjects (CLOBs).
4、More Desktop APIs. GUI 开发者可以有更多的技巧来使用 SwingWorker utility ,以帮助GUI应用中的多线程。, JTable 分类和过滤,以及添加splash闪屏。
5、Monitoring and Management. Mustang 添加更多的诊断信息,绑定了不是很知名的 memory-heap 分析工具Jhat 来查看内核导出。
6、Compiler Access. compiler API提供编程访问javac,可以实现进程内编译,动态产生Java代码。
7、Pluggabl..
- [ JSP ] JDBCTM 指南:入门4 - Statement
点击:617 发布日期:08/03
4 - Statement本概述是从《JDBCTM Database Access from JavaTM: A Tutorial and Annotated Reference 》这本书中摘引来的。JavaSoft 目前正在准备这本书。这是一本教程,同时也是 JDBC 的重要参考手册,它将作为 Java 系列的组成部份在 1997 年春季由 Addison-Wesley 出版公司出版。 4.1 概述Statement 对象用于将 SQL 语句发送到数据库中。实际上有三种 Statement 对象,它们都作为在给定连接上执行 SQL 语句的包容器:Statement、PreparedStatement(它从 Statement 继承而来)和 CallableStatement(它从 PreparedStatement 继承而来)。它们都专用于发送特定类型的 SQL 语句: Statement 对象用于执行不带参数的简单 SQL 语句;PreparedStatement 对象用于执行带或不带 IN 参数的预编译 SQL 语句;CallableStatement 对象用于执行对数据库已存储过程的调用。Statement 接口提供了执行语句和获取结果的基本方法。PreparedStatement 接口添加了处理 IN 参数的方法;而 CallableStatement 添加了处理 OUT 参数的方法。4.1.1 创建 Statement 对象建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。Statement 对象用 Connection 的方法 createStatement 创建,如下列..
- [ JSP ] JDBCTM 指南:入门5 - ResultSet
点击:369 发布日期:08/03
5 - ResultSet本概述是从《JDBCTM Database Access from JavaTM: A Tutorial and Annotated Reference 》这本书中摘引来的。JavaSoft 目前正在准备这本书。这是一本教程,同时也是 JDBC 的重要参考手册,它将作为 Java 系列的组成部份在 1997 年春季由 Addison-Wesley 出版公司出版。 5.1 概述ResultSet 包含符合 SQL 语句中条件的所有行,并且它通过一套 get 方法(这些 get 方法可以访问当前行中的不同列)提供了对这些行中数据的访问。ResultSet.next 方法用于移动到 ResultSet 中的下一行,使下一行成为当前行。结果集一般是一个表,其中有查询所返回的列标题及相应的值。例如,如果查询为 SELECT a, b, c FROM Table1,则结果集将具有如下形式: a b c-------- --------- --------12345 Cupertino CA83472 Redmond WA83492 Boston MA下面的代码段是执行 SQL 语句的示例。该 SQL 语句将返回行集合,其中列 1 为 int,列 2 为 String,而列 3 则为字节数组: java.sql.Statement stmt = conn.createStatement();ResultSet r = stmt.executeQuery("SELECT a, b, c FROM Table1");while (r.next()){// 打印当前行的值。int i = r.getInt("a");String s = r.getString("b");fl..
- [ 安装配置 ] Windows2000下Apache2.0.46与Tomcat5.0.2整合配置方法
点击:2988 发布日期:08/03
原由:搞了一段时间的java项目,到发布的时候了,可找不到一份最新的Apache2.0.46与Tomcat5.0.2的整合配置,遂看了半天的jakarta在线资料,并参照以前网友的文章,写了这篇配置文档,以作参考,欢迎斧正!一、软件准备:假设你有一台能正常运行win2000 server的软硬件环境1.j2sdk1.4.1:到 http://java.sun.com/j2se/下载!(注意是Windows (all languages, including English)的sdk版)2.Apache2.0.46:到 http://httpd.apache.org/download.cg...o_src.msi下载!3.Tomcat5.0.2:到 http://jakarta.apache.org/builds/ja...5.0.2.exe下载!4.mod_jk.dll:到 http://jakarta.apache.org/builds/ja....0.46.dll下载!(说明,由于mod_jk2-2.0.43.dll与Apache2.0.46配置没成功,现用mod_jk-2.0.46.dll代替)二、软件的安装:(此处略)三、Apache2.0.46与Tomcat5.0.2的整合配置1.)配置Apache2.0.461.将下载的mod_jk-2.0.46.dll复制到D:\Apache2\modules下。2.设置主页文件类型:打开D:\Apache2\conf下的httpd.conf,查找"DirectoryIndex", 在index.html的后面添加index.jsp并保存,注意相互之间应有空格。(或如下面步骤3所设)3.设置虚拟主机,让Apache自动控制html与jsp的解析..
- [ 安装配置 ] 初学Java所需要注意的几点
点击:1520 发布日期:08/03
Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案。在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考。
我在学习Java的过程中主要围绕以下几个方面来学习:
1.时刻提醒自己Java是一种OOP语言工具,而不仅仅是编码,只有这样才能总体把握和运用Java。
2.在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。
3.在学习的过程中一定要动手做、写代码,而不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己,最好能参与一些实际的项目。
4.在学到一定阶段后,你开始希望用学过的东西做些什么。这时的你应该开始学习一些更多、更复杂的知识,比如J2EE平台的构建、EJB的开发等。对于这一部分,我建议最好找一本较薄的书先了解一个大概,心里有个总体的认识,对更多的技术术语做个初步掌握。我认为这个阶段看看《J2EE技术实践》很不错,它可以让你了解J2EE包含的各种技术和框架,同时提供很多实际的例子来加深对J2EE的整体了解。
学习Java的兴趣和决心起了很关键的作用。在有..
- [ JSP ] 通过JDBC连接oracle数据库的十大技巧
点击:996 发布日期:08/03
Java数据库连接(JDBC)API是一系列能够让Java编程人员访问数据库的接口,各个开发商的接口并不完全相同。在使用多年的Oracle公司的JDBC后,我积累了许多技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能。 1、在客户端软件开发中使用Thin驱动程序 在开发Java软件方面,Oracle的数据库提供了四种类型的驱动程序,二种用于应用软件、applets、servlets等客户端软件,另外二种用于数据库中的Java存储过程等服务器端软件。在客户机端软件的开发中,我们可以选择OCI驱动程序或Thin驱动程序。OCI驱动程序利用Java本地化接口(JNI),通过Oracle客户端软件与数据库进行通讯。Thin驱动程序是纯Java驱动程序,它直接与数据库进行通讯。为了获得最高的性能,Oracle建议在客户端软件的开发中使用OCI驱动程序,这似乎是正确的。但我建议使用Thin驱动程序,因为通过多次测试发现,在通常情况下,Thin驱动程序的性能都超过了OCI驱动程序。 2、关闭自动提交功能,提高系统性能 在第一次建立与数据库的连接时,在缺省情况下,连接是在自动提交模式下的。为了获得更好的性能,可以通过调用带布尔值false参数的Connection类的setAutoCommit()方法关闭自动提交功能..
- [ JSP ] JSP实现论坛树型结构的具体算法
点击:1928 发布日期:08/03
实现论坛树型结构的算法很多,我现在的JSP论坛采用的也是当中的一种:不用递归实现树型结构的算法,现在我将论坛树型结构的具体算法和大家介绍一下,和大家一起交流。
1、演示表的结构:
表名:mybbslist 字段 数据类型 说明 BBSID 自动编号 RootID Int 根帖ID,本身为根帖则RootID = ID FID Int 父帖ID,上一层帖子的ID,如是根帖则FID = 0 DEPTH Int 根帖Level=0,其他依据回复的深度递增 BBSSubject Char 主题
2。创建表:
create table mybbslist ( forumID int(20) not null, bbsID int auto_increment primary key, rootid int(20) not null, fid int(20) not null, depth int(20) not null, userID int(20) not null, bbsUser varchar(24) not null, bbsSubject varchar(100) not null, bbsContent text, bbsTime varchar(30), bbsRead int(20), bbsReply int(20), INDEX forumID (forumID))
3、连接MYSQL数据库的BEAN
package netzero; import java.sql.*; public class mydb { Strin..
- [ JSP ] JSP/Servlet构建三层管理信息系统
点击:534 发布日期:08/03
摘要:本文介绍了一种开发基于Web的管理信息系统的实现框架。利用JSP/Servlet技术,结合MVC设计模式,使得开发过程更加灵活,更加易于维护。
关键词:管理信息系统,JSP,Servlet,MVC设计模式,JDBC
1、 引言
管理信息系统(MIS)是一个由人、计算机等组成的能进行信息的收集、传递、存储、加工和使用的系统。随着科技的发展,信息的膨胀,企业信息化成了企业在竞争中处于不败地位的有效手段之一。而MIS不仅能够及时全面地提供信息和数据,简化统计工作,对不同的管理层次提出不同的报告之外,还能根据过去的数据预测未来的情况。因此,采用何种方法开发出一种兼顾开发效率和运行效率,同时满足分布式事件处理功能的管理信息系统就显得尤为重要。本文阐述了一种利用JSP/Servlet构建三层式管理信息系统的方法。
2、 系统的三层体系结构
系统的三层体系结构如图1。
图1基于Java技术的Web应用体系结构
整个管理信息系统采用Browser/Web/DataBase的三层体系结构。Web服务器接受请求,通过应用程序服务器执行一个Java服务器端小程序Servlet并返回其输出,从而实现与客户机进行信息资源的交互。数据库服务器用来存储管理信息系统中所用到的各种数..
- [ JSP ] 一个用JSP做的日历
点击:962 发布日期:08/03
<!-- File name:calendar.jsp --> <!-- 显示任意年、月的日历,可选择不同的年、月。author:wildfield --> <%@ page language="java" import="java.util.*" %> <%! String year; String month; %> <% month=request.getParameter("month"); year =request.getParameter("year"); %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>日</title> <script Language="JavaScript"> <!-- function changeMonth() { var mm="calendar.jsp?month="+document.sm.elements[0].selectedIndex+"&year=" +<%=year%>; window.open(mm,"_self"); } //--></script> </head> <%! String days[]; %> <% days=new String[42]; for(int i=0;i<42;i++) { days=""; } %> <% Calendar thisMonth=Calendar.getInstance(); if(month!=null&&(!month.equals("null"))) thisMonth.set(Calendar.MONTH, Integer.parseInt(month) ); if(year!=null&&(!year.equals("null"))) thisMonth.set(Calendar.YEAR, Integer.parseI..
- [ J2EE/EJB/JMS ] j2ee设计模式:CMP到BMP模式(一)
点击:296 发布日期:08/03
EJB2.0终于给了我们一个可操作的容器管理持久(CMP)模型。只要有可能,在我的EJB项目中我就用CMP beans;但是,由于这件奇怪的事情,我需要把我的实体变成bean管理(BMP)的。我使用下面的模式让我干净利落的从CMP模型转换到bean管理持久模型。 在这篇文章中,我们将讨论: 1.CMP 2.0: 发生了什么变化? 2.Inventory(货物清单)EJB应用程序 3.开发一个CMP bean 4.移植CMP bean到BMP CMP 2.0: 发生了什么变化? 当EJB问世的时候,CMP引起了很大的反响,当EJB2.0问世的时候,又对CMP模型进行了修订,它给了我们真正想要的特性:诸如关系和查询语言标准化。 与EJB1.1相比,当我们用EJB2.0写一个CMP bean时,我们的写法有很大的不同。我们创建抽象类,而不是创建被容器管理变量的公共域,我们像JavaBean一样创建抽象的属性(getters and setters)。这准许特定厂商的持久性管理器用他们自己的方式实现数据访问器(accessors)。&..
- [ J2EE/EJB/JMS ] 在Hibernate中实现复杂的数据映射
点击:558 发布日期:08/03
在第一篇文章中,我们对一个表进行了简单的封装。在这篇文章中,我们讨论更加复杂的情况。
在这个例子中,将考虑到表之间的一对一、一对多、多对多的情况。如图1所示。
图1 实体之间的映射关系
在上面的数据模型图中,Student是所有表的核心,它和Classes表是一对多的关系,和Course表是多对多的关系(通过Student_Course_Link表来链接),和Address表是一对一的关系。
通过分析,我们可以把上面的数据模型转换成如下的Java持久对象,如图2所示。
图2 持久对象之间的关系
可以看出,数据模型图和Java持久对象的类图有非常大的相似性,但是不完全相同。比如Classes表和Student表是一对多的关系;在类图中,两者仍然是一对多的关系,但是在Classes类中添加了一个student属性,属性的类型是java.util.Set,它表示Classes对象中包含的所有Student对象。
创建Hibernate持久对象
已经对数据模型经过了分析,现在就可以创建持久对象了。持久对象之间的关系由图2所示的类图指定。
我们首先来看Student类,它是这个关系映射的核心,代码如例程1所示。
例程1 Student持久对象(Student.java)
package com.hellking.stud..
- [ J2EE/EJB/JMS ] 利用 Velocity 模板引擎制作网站
点击:416 发布日期:08/03
基于 Java 的网站开发,很多人都采用 JSP 作为前端网页制作的技术,尤其在是国内。这种技术通常有一些问题,我试想一下我们是怎样开发网站的,通常有几种方法1:功能确定后,由美工设计网页的UI(界面)部分,然后由程序员在其上加入代码显示逻辑(比如循环,判断显示数据结果)。也就是通常的 jsp 页面制作,当然这部分可以由美工完成模板,然后由 jsp 工程师再继续以它为原型创建相应的 jsp 页面。2:功能确定后,由美工设计网页的UI(界面)部分,然后由网页制作人员在其上加入代码显示逻辑(比如循环,判断显示数据结果),在这一步的 jsp 页面制作中,网页制作人员(通常只懂得 javascript 和 html )在工程师的指导下学会如何嵌入 jsp taglib 标记,然后以美工的模板为原型制作 jsp 网页。
显然后面一种方式要比前面一种方式分工明确,然后在很多小公司,或者项目很急的情况下。jsp 网页制作和后台程序开发都是同一个人。这样无疑加大了程序员的负担。 后一种情况虽然比前面的好,但是它有两个缺点: 一:网页制作人员必须学会如何使用 jsp taglib 的使用,这无疑加大了网页制作人员的负担。二:如果页面因为客户的要求从新设计,那么无论那种情况网页制作人员都..
- [ J2EE/EJB/JMS ] JDBC系列教程(三)---语句
点击:1018 发布日期:08/03
Statement 本概述是从《JDBCTM Database Access from JavaTM: A Tutorial and Annotated Reference 》这本书中摘引来的。JavaSoft 目前正在准备这本书。这是一本教程,同时也是 JDBC 的重要参考手册,它将作为 Java 系列的组成部份在 1997 年春季由 Addison-Wesley 出版公司出版。 4.1 概述 Statement 对象用于将 SQL 语句发送到数据库中。实际上有三种 Statement 对象,它们都作为在给定连接上执行 SQL 语句的包容器:Statement、PreparedStatement(它从 Statement 继承而来)和 CallableStatement(它从 PreparedStatement 继承而来)。它们都专用于发送特定类型的 SQL 语句: Statement 对象用于执行不带参数的简单 SQL 语句;PreparedStatement 对象用于执行带或不带 IN 参数的预编译 SQL 语句;CallableStatement 对象用于执行对数据库已存储过程的调用。 Statement 接口提供了执行语句和获取结果的基本方法。PreparedStatement 接口添加了处理 IN 参数的方法;而 CallableStatement 添加了处理 OUT 参数的方法。 4.1.1 创建 Statement 对象 建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。Statement 对象用 Connection 的方法 createStatement 创建,如下列..
- [ J2EE/EJB/JMS ] JDBC对数据库的事务操作
点击:1108 发布日期:08/03
1. 概述:
在jdbc的数据库操作中,一项事务是由一条或是多条表达式所组成的一个不可分割的工作单元。我们通过提交commit()或是回滚rollback()来结束事务的操作。关于事务操作的方法都位于接口java.sql.Connection中。
2. 特点:★ 在jdbc中,事务操作缺省是自动提交。也就是说,一条对数据库的更新表达式代表一项事务操作,操作成功后,系统将自动调用commit()来提交,否则将调用rollback()来回滚。★ 在jdbc中,可以通过调用setAutoCommit(false)来禁止自动提交。之后就可以把多个数据库操作的表达式作为一个事务,在操作完成后调用commit()来进行整体提交,倘若其中一个表达式操作失败,都不会执行到commit(),并且将产生响应的异常;此时就可以在异常捕获时调用rollback()进行回滚。这样做可以保持多次更新操作后,相关数据的一致性,示例如下:
try {
conn =
DriverManager.getConnection
("jdbc:oracle:thin:@host:1521:SID","username","userpwd";
conn.setAutoCommit(false);//禁止自动提交,设置回滚点
stmt = conn.createStat..
- [ JSP ] JSP入门初级教程之Actions的使用
点击:307 发布日期:08/03
JSP actions 使用您可以动态的插入一个文件,重用JavaBeans组件,前进到另一个页面,或为Java 插件生成一个HTML。可以使用的action 有:
(1) jsp:include --在页面被请求时包含进一个文件。
(2) jsp:useBean--找到或实例化一个JavaBean。
(3) jsp:setProperty--设置一个JavaBean属性。
(4) jsp:getProperty--将JavaBean的属性插入到输出。
(5) jsp:forward--让请求者可以向前到一个新的页面。
(6) jsp:plugin--用OBJECT或EMBED标签为Java plugins生成特定的浏览器的代码。
1、jsp:include Action
这个action使您可以在即将生成的页面上包含进一些文件:
<jsp:include page="relative URL" flush="true" /> 与include directive不同,这个action是在页面被请求时才将文件包含进来,而,include directive则是在JSP页面被转换为servlet时包含文件。为了提高效率,include action做了一点小小的牺牲,即,它不允许被包含的页面含有一般的JSP代码(例如,不可设置HTTP头),但是,它具有显著的灵活性,如下面的JSP 代码,它实现将四个不同的片段插入如下的页面。每一次当标题改变的时候,您仅需修改这四个文件而..
- [ JSP ] Taglib 原理和实现之嵌套和属性读取
点击:148 发布日期:08/03
1、问题:在request里有一个 Man 对象,它有两个属性:name和age。现在,我们想用一个嵌套的tag,父tag取得对象,子tag取 得name属性并显示在页面上。例如,它的形式如下:
<diego:with object="${Man}"><diego:output property="name"/></diego:with> object 支持el表达式,表示取得 Man 对象。output的property表示从该对象取得名为name的属性。 2、如何支持tag之间的嵌套 在子tag里调用getParent 方 法,可以得到父tag对象。用 findAncestorWithClass 方法,则可以通过递归找到想要找的tag。例如
<diego:with object="${people}"> <!--表示取得一个对象--><diego:withCollection property="men"> <!--表示取得对象里的一 个属性,这个属性是个 Collection,Collection里添加了许多man,每个man有名字和年龄--><diego:output property="name"/> <!--取得name属性 并显示--></diego:withCollection></diego:with> 对于最内层的outputTag来说,调用getParent,可以得到 withCollectionTag,通 过如findAncestorWithClass(this,WithTag.class)的方式,可以得到withTag。得到Tag之后,就可以取得Tag的属性,进行业务逻..
- [ JSP ] Velocity初体验
点击:337 发布日期:08/03
不少人看过或了解过Velocity,名称字面翻译为:速度、速率、迅速,用在Web开发里,用过的人可能不多,大都基本知道和在使用Struts,到底Velocity和Struts是如何联系,怎么看待Velocity呢?让我们来尝试一下,了解Velocity的概念,通过在这里的介绍,强调在技术选择上的问题,让大家在选择项目开发时,可以考虑Velocity,另外也让大家了解它的思想,毕竟它提供了一个很好的思维方式,给大家换换筋骨,换一种思考的方式。 本文基于你对Java开发有一定基础,知道MVC,Struts等开发模式。 Velocity是一种Java模版引擎技术,该项目由Apache提出,由另外一种引擎技术Webmacro引深而来。那什么是官方的Velocity定义呢?Apache对它的定义是:一种基于Java的模板引擎,但允许任何人使用简单而强大的模板语言来引用定义在Java代码中的对象。目前最新的版本是1.4,可以在http://jakarta.apache.org/velocity/index.html查找更多信息。 其实说白了Velocity也就是MVC架构的一种实现,但它更多的是关注在Model和View之间,作为它们的桥梁。对于MVC的最流行架构Struts来说,相信大家都不陌生,很..
- [ JSP ] Velocity 为 Java Web 应用开发“增速”
点击:353 发布日期:08/03
一、模板引擎有什么用?
简单地说,模板引擎的作用就是取得数据并加以处理,最后显示出数据。例如,假设有一个企业职工的清单,我们可以用模板引擎将它以HTML页面的形式显示在企业的Intranet上,或简化后显示在管理员的手机上。使用模板引擎的好处就在于开发者和设计者能够以最合适的方式操作和利用数据,Velocity就是一个模板引擎的绝佳范例。Velocity的英文含义是“速度、流通速度、速率;迅速,快速”,也许它的作者希望Velocity能够提高人们开发Web应用的速度吧。
Velocity是一个源代码开放的Java模板引擎,属于Jakarta项目的一部分,拥有一个活跃的开发者和用户社团。Velocity最初是为了改进WebMacro Servlet框架而构建的,发展到现在已衍生出各种非Servlet环境的用途。
Velocity的优点在于其简单的模板语法以及成功实现对内容和显示方式的分离。有了Velocity,开发者可以专注于程序代码,设计者可以专注于页面的布局和视觉效果,不必再担心要在模板中嵌入各种程序代码。
与传统的用JSP和PHP构造页面的方式相比,这显然是一大进步。在传统的JSP、PHP页面中,程序逻辑嵌入到Web页面中,从而为理解和维护Web页面带来很大的麻烦。Velocity模板引擎成功地解决了这一问..
- [ Java基础 ] java实现屏幕取色
点击:82 发布日期:08/03
声明: 本文核心代码选择自langzi84的blog请看以下链接http://dev.csdn.net/article/44/article/44/44529.shtmhttp://blog.csdn.net/langzi84/archive/2004/10/21/146331.aspx
代码1。在屏幕上输出当前鼠标所在的屏幕颜色。
import java.awt.*;public class PickColor {public static void main(String[] args) {PickColor pc = new PickColor();Color color = pc.pickColor();System.out.println("color = "+color);}public Color pickColor() {Color pixel = new Color(0,0,0);Robot robot = null;Point mousepoint;int R,G,B;// MouseInfo mouseinfo = new MouseInfo();try {robot = new Robot();} catch (AWTException e) {e.printStackTrace();System.exit(1);}mousepoint = MouseInfo.getPointerInfo().getLocation();pixel = robot.getPixelColor(mousepoint.x,mousepoint.y);R = pixel.getRed();G = pixel.getGreen();return pixel;}}
代码2。使用一个GUI,输出当前鼠标所在的屏幕颜色,并改变GUI的背景色。// create by kin 2004/10/24 refer to http://dev.csdn.net/article/44/44529.shtm
import ja..
- [ Java基础 ] 利用Java技术开发Web网络课件浅议
点击:100 发布日期:08/03
随着计算机技术的飞速发展,教育信息化、网络化的进程不断深入,特别是采用TCP/IP协议的Internet/Intranet的不断普及,利用计算机技术和网络技术已成为现代教育的一个重要发展方向,基于网络的教学软件由于在现代教育中可以最大限度地利用教育资源,因而得到迅速的发展。
教学课件是指具有教学功能的计算机软件,在某种程度上能代替或辅助教师实施教学。基于Web的教学软件以Internet/Intranet网络为基础,将教学内容用Web页面来表示,这种教学课件,具有远程教学的开放性、灵活性、交互性、分散性等特点,它将某些领域的知识按照教学目标来组织知识,聚集成模块,形成层次化、网络化结构,做成页式或脚本式的课件。课件制作完成后用WWW服务器进行管理,客户端用IE等浏览器进行浏览,并通过WEB页面进行交互式的学习,实现在时空上相对独立的教学模式,与传统课堂教育方式相比,新的教育方式最重要的特点在于突破了时间和空间的限制,不再完全依赖于教师和学生之间面对面地教学。在新的教学方式下,学生充分发挥自主性,根据自己的实际情况确定学习内容和安排学习进度,从而满足了教育的普及性和独立性的需要,适合所有有学习要求的学生上网使用。这种方式已成为教学课..
- [ Java基础 ] 探索JDK1.5高级编码特征
点击:76 发布日期:08/03
本文中,我们将讨论几个在JDK1.5中新的语言特征,包括:
泛型(Generics)--为集合(collections)提供编译时类型安全,无需每刻从Collections取得一个对象就进行强制转换(cast)
增强的“for”循环(Enhanced For loop)--减少迭代器(iterator)的潜在错误(error-proneness)
自动置入/自动取出(Autoboxing/unboxing)--无需在基本类型(primitive types)(例如double)和包装类型(wrapper types)(例如Double)之间人工地进行转换。
类型安全的枚举(Typesafeenums)--提供类型安全枚举模式的各项好处。
静态导入(Static import)--无需在使用其他类的静态成员变量前缀其类名.这将使得代码更为简洁。
元数据(Metadata)--使编程人员避免编写样板化代码(boiler plate code),并提供机会进行宣告式程式设计(declarative programming)。
让我们详细讨论每个新特性,并看一些例子。
泛型(Generics)
泛型是JDK1.5中一个最“酷”的特征。通过引入泛型,我们将获得编译时类型的安全和运行时更小地抛出ClassCastExceptions的可能。在JDK1.5中,你可以声明一个集合将接收/返回的对象的类型。在JDK1.4中,创建雇员名字的清单(List)需..
- [ Java基础 ] JBuilder2005实现重构之升级到JDK5.0
点击:145 发布日期:08/03
JDK 5.0在语法上做许多重大的改进,虽然在低版本JDK中开发的源代码几乎可以不做任何修改就可直接运行于JDK 5.0中。但还是有必须进行版本升级的重构,这样就可以应用JDK 5.0的for和while循环、自动装/拆箱、泛型等改进功能,在使代码更加紧凑的同时,使代码性能得到优化。所以JBuilder专门为低版本提升到JDK 5.0的程序提供了3个重构功能,方便你无缝地实现升级。 1、使工程基于JDK 5.0 虽说JBuilder 2005支持JDK 5.0,但其默认的JDK版本是1.4.2,要使工程的JDK版本为5.0,你必须安装JDK 5.0,并在JBuilder下进行相应的设置。关于JDK 5.0的详细设置我们不作过多的描述,简而言之,它主要包括以下的步骤: 1) 安装JDK 5.0(从http://java.sun.com/j2se/1.5.0/download.jsp下载)。 2) Tools->Configure->JDKs...通用指定JDK5.0的安装路径设置JDK。 3) Project->Project Properties...->在Paths设置页,将JDK设置为JDK 5.0。 4) Project->Project Properties...->Build->在Java设置页,将Language features:设置为Java 2 SDK,V 5.0(generics enabled),将Target VM设置为Java 2 SDK,v 5.0 and later。 只有将工程的JDK版本设置为J..
- [ Java基础 ] 用Java Swing作一个日历控制程序
点击:247 发布日期:08/03
日期是最基本的数据形式之一,因此很多语言或者数据库都提供了对日期的支持,或内置或提供这一类的库。Java也不例外;Java的应用编程接口提供了以跨平台独立语言的方式描述,计算,对比,显示以及便携式分析日期。在这篇文章里,我要讲讲关于Swing的自定义控制,允许你在视觉上获取时间信息而不是用敲命令的方式。用这种方法,你可以避免无效的时间信息,让你的使用者以视觉的方式得到享受。
Java中的日期
Java描述日期和时间的方法使用传统的Date命令或者Java的一些子库。不管它的名字是什么,日期的类并没有普通意义上的日期的概念(日,月,年等等)技术上讲,它仅仅是从1970年1月1日 00:00:00 GMT开始百万分之一秒的累加的一个结果。尽管这些关于日期的类有各种各样的处理日期的方法,这都是不够的。
为了方便的解决日期问题, JDK 1.1 介绍了一个抽象的类java.util.Calendar。具体的计算日期的子类都会根据日历系统使用一个指向特定日期的指针。这是因为日历系统历来就是有很多种方法来计算自己的日期(比如阳历,罗马历,阴历)。
Java应用编程接口提供了名为java.util.GregorianCalendar的类来根据阳历系统处理日期信息。
最终,名为java.text.DateFormat的类就是一..
- [ Java基础 ] 基于WebSphere MQ的收发消息程序
点击:969 发布日期:08/03
摘 要:本文从以下几个方面简述了IBM公司的商业通信中间件WebSphere MQ,首先解释了消息、队列和队列管理器的意义,在此基础上通过图示阐述了WebSphere MQ在进行通信时所采用的通信机制,以及此通信机制和通信的各应用程序之间的关系。接着通过一个实例来说明在使用Java编写程序时,如何向队列写入消息。最后简单的介绍了一下MQ的优点及其发展前景。
关键词:通信中间件,队列,队列管理器,MQ
WebSphere MQ(以下简称MQ)是IBM公司享有盛誉的商业通信中间件。它被世界范围的许多大型企业广泛采用。它提供一个具有工业标准、安全、可靠的消息传输系统。MQ基本由一个消息传输系统和一个应用程序接口组成。应用程序使用MQ的API(消息队列接口MQI)函数和队列管理器(MQ运行时刻的程序)进行通信。队列管理器在工作时,它需要用到对象如队列和通道。同时,队列管理器也是一个对象。图1所示为MQ应用程序在运行时刻的图示。
图1 运行时刻的MQ1
消息是一个信息单元,它由两部分组成:从一个程序发往另外一个程序的应用程序数据以及消息描述符或者消息头。
消息描述符用来标识消息(message ID),同时它还包括一些控制信息,如消息类型,消息过期的时间,消息优先级等等。
..
- [ Java基础 ] 深入研究Servlet线程安全性问题
点击:450 发布日期:08/03
摘 要:介绍了Servlet多线程机制,通过一个实例并结合Java 的内存模型说明引起Servlet线程不安全的原因,给出了保证Servlet线 程安全的三种解决方案,并说明三种方案在实际开发中的取舍。 关键字:Servlet 线程安全 同步 Java内存模型 实 例变量 Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默认是以多线程模式执行的,所 以,在编写代码时需要非常细致地考虑多线程的安全性问题。然而,很多人编写Servlet/JSP程序时并没有注意到多线程安全性的问题,这往往造成编写的 程 序在少量用户访问时没有任何问题,而在并发用户上升到一定值时,就会经常出现一些莫明其妙的问题。 Servlet的多线程机制 Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。当客户端第一次请求某个Servlet时,Servlet 容器将会根据web.xml配置文件实例化这个Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有多个线程在使用这个实 例 。Servlet容器会自动使用线程池等技术来支持系统的运行,如图1所示。
图1 Servlet线程池 这样,当两个或多个线程同时访问同一个Se..
- 共有694条信息 1 - 30 1/24页 30个/页 上一页 下一页