JAVA教程之利用JavaBean创立您的网上日历本
因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。创立|日历有的伴侣已经说过,假如有一个网上的日志本,大概一个网上的万年历能提示本人到时往干甚么事变就行了。实在呀,如许的日历本您本人也能做一个。不信你看上面的例子:〈HTML〉
〈HEAD〉
〈TITLE〉万年历记事本〈/TITLE〉
〈/HEAD〉
〈BODYBGCOLOR="white"〉
//设置页面剧本言语是java,导进HtmlCalendarNotePad类,HtmlCalendarNotePad在前面将会讲到
〈%@pagelanguage="java"import="HtmlCalendarNotePad"%〉
//界说一个JavaBean,取其id为HtmlCal
〈jsp:useBeanid="HtmlCal"scope="session"class="HtmlCalendarNotePad"/〉
〈%
//设置参数,取所需的月份为3月,由于未设定年份,故默许为今年。
HtmlCal.setMonth(3);
//设置举措,3月24日时,往天极网,在新窗口翻开(也能够以其他的体例翻开)
HtmlCal.setAction(24,"http://www.yesky.com/","_blank");
%〉
〈TABLEWIDTH=300〉
〈TR〉〈TDNOWRAP〉
〈%=HtmlCal.getHtml()%〉//以表格的情势输入一个月的月历
〈/TD〉〈/TR〉
〈/TABLE〉
〈/BODY〉
〈/HTML〉
你将看到以下输入了局
MonTueWedThuFriSatSun
123
45678910
11121314151617
18192021222324
25262728293031
这不就跟日历本上一样了吗,不外它比日历本幸亏,有预设好的链接能够提示您到时往某个站点,或实行某个javascript函数,如许不又起了一个记事本的感化了吗?固然了,你也能够本人增加一些功效,使它变得加倍壮大,好比增加一个表单,可让用户填写日志发送到您的体系的数据库中等等。为了完成这个目标,先让我们来看一看JavaBean程序是怎样誊写的。
JavaBean程序剖析
我想把HtmlCalendarNotePad中的次要办法先容一些,信任会人人有所匡助
publicvoidsetYear(intyear)//设置年份。默许值为以后的年份
publicintgetYear()//取得年份。默许值为以后的年份
//这是尺度Java程序写法,由于Java程序就是一个类以是常常写这类setXXX/getXXX
publicvoidsetMonth(intmonth)//设置月份(1-12),默许值为以后的月
publicintgetMonth()//取得月份(1-12),默许值为以后的月
publicvoidsetStyle(intstyle)
publicintgetStyle()
//设置/取得日历的款式(style)
//是以礼拜天为一礼拜的第一天HtmlCalendarNotePad.SUNDAY_FIRST仍是以礼拜一为一礼拜的第一天HtmlCalendarNotePad.MONDAY_FIRST
//默许值为HtmlCalendarNotePad.SUNDAY_FIRST
publicvoidsetLocale(Localeloc)//设置区域代码(Locale),默许值为Locale.PRC
publicLocalegetLocale()//取得区域代码(Locale),默许值为Locale.PRC
publicvoidsetAction(intday,StringactionUrl,Stringtarget_frame)
//设置超链接,来处置哀求。假如出了任何毛病的话,该办法会前往一个空的字符串。
//你能够设置一个一般的URL,如“http://www.yesky.com/action.jsp”
//大概一个一个javascript函数名,如“myFunction”
//日期将被作为一个参数传给URL,大概作为一个字符串值传给javascript.格局是yyyymmdd.
//target_frame能够为空的字符串。
如:
假如挪用setAction(21,"http://www.yesky.com/","_blank")
超链接为:〈ahref="http://www.yesky.com/?date=20000621"target=_blank〉21〈/a〉
publicvoidsetActions(StringactionUrl,Stringtarget_frame)
//你也能够为一个月的每天设置超链接
如今让我和人人一同来分享那颗诱人的豆子(Bean)吧:(HtmlCalendarNotePad.java)。
importjava.text.DateFormat;
importjava.text.SimpleDateFormat;
importjava.util.*;
publicclassHtmlCalendarNotePad
{
publicstaticfinalintMONDAY_FIRST=1;//设置每礼拜是以礼拜一为第一天
publicstaticfinalintSUNDAY_FIRST=2;//设置每礼拜是以日曜日为第一天
privateHashtableconfig;
privatestaticfinalStringMnth[]={
"一月","仲春","三月","四月","蒲月","六月",
"七月","八月","玄月","十月","十一月","十仲春"
};
privateintyear;
privateintmonth;
privateintstyle;
privateStringsFont;
privateLocaleloc;
privatestaticStringNEWLINE="
";
publicHtmlCalendarNotePad()//机关函数
{
sFont=null;
GregorianCalendargCalendar=newGregorianCalendar();//获得以后的日历(格里高里历)
config=newHashtable();//创立新的哈希表贮存设置信息
NEWLINE=System.getProperty("line.separator");
style=2;//设置每礼拜是以日曜日为第一天
month=gCalendar.get(2);//获得月份
year=gCalendar.get(1);//取的年份
loc=Locale.PRC;//设置国度名,默许为中华国民共和国
}
privateStringformatObject(Strings,Objectobj)
{
Strings1="";
if(obj!=null)
s1=String.valueOf(String.valueOf(obj));
if(s==null)
returns1;
else
returns+s1+"〈/font〉";
}
privateintgetDay(Calendarcalendar)//获得某日在日历中的地位
{
if(style==2)
returncalendar.get(7)-1;
else
return(calendar.get(7)+5)%7;
}
publicStringgetHtml()
{
GregorianCalendargCalendar=newGregorianCalendar(year,month-1,1);
GregorianCalendargCalendar1=newGregorianCalendar(2001,3,24);
SimpleDateFormatsimpledateformat=newSimpleDateFormat("EEE",loc);
//设置缩写格局,EEE是礼拜的缩写,如Sun,若EEEE则为Sunday。
inti=month-1;
intj=0;
StringBufferstringbuffer=newStringBuffer("");//创立新的字符串缓冲区
stringbuffer.append("〈table〉〈tr〉
");//在stringbuffer上增加〈table〉〈tr〉,为创立表格作筹办
if(style==2)//见上注释
{
stringbuffer.append("〈thalign=right〉"+formatObject(sFont,simpledateformat.format(gCalendar1.getTime()))+"〈/th〉
");
gCalendar1.add(5,1);
for(intk=1;k〈7;k++)
{
stringbuffer.append("〈thalign=right〉"+formatObject(sFont,simpledateformat.format(gCalendar1.getTime()))+"〈/th〉
");
gCalendar1.add(5,1);
}
}
else
{
gCalendar1.add(5,1);
stringbuffer.append("〈thalign=right〉"+formatObject(sFont,simpledateformat.format(gCalendar1.getTime()))+"〈/th〉
");
for(intl=2;l〈8;l++)
{
gCalendar1.add(5,1);
stringbuffer.append("〈thalign=right〉"+formatObject(sFont,simpledateformat.format(gCalendar1.getTime()))+"〈/th〉
");
}
}
stringbuffer.append("〈/tr〉
");
inti1=0;
j=0;
if(getDay(gCalendar)〉0)
{
stringbuffer.append("〈tr〉");
for(;i1〈getDay(gCalendar);i1++)
{
stringbuffer.append("〈tdalign=right〉");
if(sFont!=null)
stringbuffer.append(sFont+"〈/font〉");
else
stringbuffer.append("");
stringbuffer.append("〈/td〉
");
j++;
}
}
for(;gCalendar.get(2)==i;gCalendar.add(5,1))
{
intj1=gCalendar.get(5);
intk1=(i1+j1)%7;
if(k1==1)
{
stringbuffer.append("〈tr〉"+NEWLINE);
j=0;
}
stringbuffer.append("〈tdalign=right〉");
j++;
if(sFont!=null)
stringbuffer.append(sFont);
Strings;
if((s=(String)config.get(String.valueOf(j1)))!=null)
{
stringbuffer.append("〈ahref="");
if(s.toUpperCase().startsWith("HTT")||s.indexOf(".")〉0)
{
stringbuffer.append(s);
if(s.indexOf("?")〈0)
stringbuffer.append("?date="+stringDate(gCalendar));
else
stringbuffer.append("&date="+stringDate(gCalendar));
}
else
{
stringbuffer.append("javascript:"+s+"("+stringDate(gCalendar)+");");
}
stringbuffer.append(""");
if((s=(String)config.get(j1+"target"))!=null)
stringbuffer.append("target=""+s+""");
stringbuffer.append("〉");
stringbuffer.append(gCalendar.get(5));
stringbuffer.append("〈/a〉
");
}
else
{
stringbuffer.append(String.valueOf(j1));
}
if(sFont!=null)
stringbuffer.append("〈/font〉");
stringbuffer.append("〈/td〉
");
if(k1==0)
stringbuffer.append("〈/tr〉
");
}
if(j〈7)
{
for(;j〈7;j++)
{
stringbuffer.append("〈tdalign=right〉");
if(sFont!=null)
stringbuffer.append(sFont);
stringbuffer.append("");
if(sFont!=null)
stringbuffer.append("〈/font〉");
stringbuffer.append("〈/td〉
");
}
stringbuffer.append("〈/tr〉
");
}
stringbuffer.append("〈/table〉
");
returnstringbuffer.toString();
}
publicLocalegetLocale()//猎取区域名
{
returnloc;
}
publicintgetYear()//获得年份
{
returnhtmlCalendarYear;
}
publicintgetMonth()//获得月分
{
returnhtmlCalendarMonth;
}
publicintgetStyle()//获得日历的款式
{
returnhtmlCalendarStyle;
}
//设置举措的URI,target_frame的值能够为_blank、_parent、_top、_self。
publicvoidsetAction(intday,StringactionUri,Stringtarget_frame)
{
if(actionUri!=null)
{
config.put(String.valueOf(day),actionUri);
if(target_frame!=null&&target_frame.length()〉0)
config.put(day+"target",target_frame);
}
}
//设置一个月的一切天的超链接
publicvoidsetActions(StringactionUri,Stringtarget_frame)
{
for(intday=1;day〈=31;day++)
setAction(day,actionUri,target_frame);
}
//设置区域
publicvoidsetLocale(Localelocale)
{
loc=locale;
}
//设置年份
publicvoidsetYear(inthtmlCalendarYear)
{
if(htmlCalendarYear〉0)
{
year=htmlCalendarYear;
config.clear();
}
}
//设置月份
publicvoidsetMonth(inthtmlCalendarMonth)
{
if(htmlCalendarMonth〉=1&&htmlCalendarMonth〈=12)
{
month=htmlCalendarMonth;
config.clear();
}
}
//设置日历的款式
publicvoidsetStyle(inthtmlCalendarStyle)
{
style=htmlCalendarStyle;
}
privateStringstringDate(Calendarcalendar)
{
StringstrDay=String.valueOf(calendar.get(1));
returnstrDay+twoDigits(calendar.get(2)+1)+twoDigits(calendar.get(5));
}
privateStringtwoDigits(intday)//为了日历中数字可以对齐,以是1-9前将加0
{
StringstringDay=String.valueOf(day);//获得day的值
if(stringDay.length()==1)//假如字符串长度为1
return"0"+stringDay;//则在字符串前加零
else
returnstringDay;
}
}
自己的整个学习思路完全被老师的讲课思路所牵制,这样几节课听下来,恐怕自己的见解都应该是书里的知识点了,根本谈不上自身发现问题,分析问题,和解决问题能力的切实提高。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 是一种语言,用以产生「小应用程序(Applet(s)) 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
页:
[1]
2