首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 操作系统-> Linux教程
使用JavaBean创建您的网上日历本-JSP教程,Java技巧及代码
作者:网友供稿 点击:23
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
有的朋友曾经说过,如果有一个网上的日记本,或者一个网上的万年历能提醒自己到时去干什么事情就好了。其实呀,这样的日历本您自己也能做一个。不信你看下面的例子:

〈html〉
〈head〉
〈title〉万年历记事本〈/title〉
〈/head〉
〈body bgcolor ="white"〉
//设置页面脚本语言是java,导入htmlcalendarnotepad类,htmlcalendarnotepad在后面将会讲到
〈%@ page language="java" import="htmlcalendarnotepad" %〉
//定义一个javabean,取其id为htmlcal
〈jsp:usebean id="htmlcal" scope="session" class="htmlcalendarnotepad" /〉
〈%
// 设置参数,取所需的月份为3月,因为未设定年份,故默认为本年。
htmlcal.setmonth(3);
//设置动作,3月24日时,去天极网,在新窗口打开(也可以以其他的方式打开)
htmlcal.setaction(24,"http://www.yesky.com/","_blank");
%〉
〈table width=300〉
〈tr〉〈td nowrap〉
〈%=htmlcal.gethtml()%〉 //以表格的形式输出一个月的月历
〈/td〉〈/tr〉
〈/table〉
〈/body〉
〈/html〉

  你将看到如下输出结果

mon tue wed thu fri sat sun
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

  这不就跟日历本上一样了吗,不过它比日历本好在,有预设好的链接可以提醒您到时去某个站点,或 执行某个javascript函数,这样不又起了一个记事本的作用了吗?当然了,你也可以自己添加一些功能,使 它变得更加强大,比如添加一个表单,可以让用户填写日记发送到您的系统的数据库中等等。为了完成这个目的, 先让我们来看一看javabean程序是如何书写的。
javabean程序分析

我想把htmlcalendarnotepad中的主要方法介绍一些,相信会大家有所帮助

public void setyear(int year) //设置年份 。默认值为当前的年份
public int getyear() //获得年份 。默认值为当前的年份
//这是标准java程序写法,因为java程序就是一个类所以经常写这种setxxx/getxxx
public void setmonth(int month) //设置月份(1-12),默认值为当前的月
public int getmonth() //获得月份(1-12),默认值为当前的月
public void setstyle(int style)
public int getstyle()
//设置/获得日历的样式(style)
//是以星期天为一星期的第一天htmlcalendarnotepad.sunday_first还是以星期一为一星期的第一天 htmlcalendarnotepad.monday_first

// 默认值为htmlcalendarnotepad.sunday_first
public void setlocale(locale loc) //设置地区代码(locale), 默认值为locale.prc
public locale getlocale() //获得地区代码(locale), 默认值为locale.prc

public void setaction(int day, string actionurl ,string target_frame)
//设置超链接,来处理请求。如果出了任何错误的话,该方法会返回一个空的字符串。
// 你可以设置一个普通的url,如“http://www.yesky.com/action.jsp”
// 或者一个一个javascript 函数名, 如 “myfunction”
// 日期将被作为一个参数传给url,或者作为一个字符串值传给 javascript. 格式是yyyymmdd.
// target_frame可以为空的字符串。
如:
如果调用setaction(21,"http://www.yesky.com/","_blank")
超链接为: 〈a href="http://www.yesky.com/?date=20000621" target=_blank〉21〈/a〉

public void setactions(string actionurl, string target_frame)
//你也可以为一个月的每一天设置超链接

现在让我和大家一起来分享那颗诱人的豆子(bean)吧:(htmlcalendarnotepad.java)。
import java.text.dateformat;
import java.text.simpledateformat;
import java.util.*;

public class htmlcalendarnotepad
{
public static final int monday_first = 1; //设置每星期是以星期一为第一天
public static final int sunday_first = 2; //设置每星期是以星期日为第一天
private hashtable config;
private static final string mnth[] = {

"一月", "二月", "三月", "四月", "五月", "六月",
"七月", "八月", "九月", "十月", "十一月", "十二月"
};

private int year;
private int month;
private int style;
private string sfont;
private locale loc;
private static string newline = "\n";
public htmlcalendarnotepad () //构造函数

{

sfont = null;

gregoriancalendar gcalendar = new gregoriancalendar(); //取得当前的日历(格里高里历)

config = new hashtable(); //创建新的哈希表储存配置信息

newline = system.getproperty("line.separator");

style = 2; //设置每星期是以星期日为第一天
month = gcalendar.get(2); //取得月份

year = gcalendar.get(1); //取的年份

loc = locale.prc; //设置国家名,默认为中华人民共和国

}



private string formatobject(string s, object obj)

{

string s1 = "";

if(obj != null)

s1 = string.valueof(string.valueof(obj));

if(s == null)

return s1;

else

return s + s1 + "〈/font〉";

}



private int getday(calendar calendar) //取得某日在日历中的位置

{

if(style == 2)

return calendar.get(7) - 1;

else

return (calendar.get(7) + 5) % 7;

}



public string gethtml()

{

gregoriancalendar gcalendar = new gregoriancalendar(year, month - 1, 1);

gregoriancalendar gcalendar1 = new gregoriancalendar(2001, 3, 24);

simpledateformat simpledateformat = new simpledateformat("eee", loc);

//设置缩写格式,eee是星期的缩写,如 sun, 若eeee则为sunday。

int i = month - 1;

int j = 0;

stringbuffer stringbuffer = new stringbuffer(""); //创建新的字符串缓冲区

stringbuffer.append("〈table〉〈tr〉\n"); //在stringbuffer上添加〈table〉〈tr〉,为创建表格作准备

if(style == 2) //见上解释

{

stringbuffer.append("〈th align=right〉" + formatobject(sfont, simpledateformat.format(gcalendar1.gettime())) + "〈/th〉\n");

gcalendar1.add(5, 1);

for(int k = 1; k 〈 7; k++)

{

stringbuffer.append("〈th align=right〉" + formatobject(sfont, simpledateformat.format(gcalendar1.gettime())) + "〈/th〉\n");

gcalendar1.add(5, 1);

}
}

else

{

gcalendar1.add(5, 1);

stringbuffer.append("〈th align=right〉" + formatobject(sfont, simpledateformat.format(gcalendar1.gettime())) + "〈/th〉\n");

for(int l = 2; l 〈 8; l++)

{

gcalendar1.add(5, 1);

stringbuffer.append("〈th align=right〉" + formatobject(sfont, simpledateformat.format(gcalendar1.gettime())) + "〈/th〉\n");

}



}

stringbuffer.append("〈/tr〉\n");

int i1 = 0;

j = 0;

if(getday(gcalendar) 〉 0)

{

stringbuffer.append("〈tr〉");

for(; i1 〈 getday(gcalendar); i1++)

{

stringbuffer.append("〈td align=right〉");

if(sfont != null)

stringbuffer.append(sfont + " 〈/font〉");

else

stringbuffer.append(" ");

stringbuffer.append("〈/td〉\n");

j++;

}



}

for(; gcalendar.get(2) == i; gcalendar.add(5, 1))

{

int j1 = gcalendar.get(5);

int k1 = (i1 + j1) % 7;

if(k1 == 1)

{

stringbuffer.append("〈tr〉" + newline);

j = 0;

}

stringbuffer.append("〈td align=right〉");

j++;

if(sfont != null)

stringbuffer.append(sfont);

string s;

if((s = (string)config.get(string.valueof(j1))) != null)

{

stringbuffer.append("〈a href=\"");

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〉\n");

}

else

{

stringbuffer.append(string.valueof(j1));

}

if(sfont != null)

stringbuffer.append("〈/font〉");

stringbuffer.append("〈/td〉\n");

if(k1 == 0)

stringbuffer.append("〈/tr〉\n");

}



if(j 〈 7)

{
for(; j 〈 7; j++)

{

stringbuffer.append("〈td align=right〉");

if(sfont != null)

stringbuffer.append(sfont);

stringbuffer.append(" ");

if(sfont != null)

stringbuffer.append("〈/font〉");

stringbuffer.append("〈/td〉\n");

}



stringbuffer.append("〈/tr〉\n");

}

stringbuffer.append("〈/table〉\n");

return stringbuffer.tostring();

}



public locale getlocale() //获取地区名

{

return loc;

}

public int getyear() //取得年份

{

return htmlcalendaryear;

}

public int getmonth() //取得月分

{

return htmlcalendarmonth;

}



public int getstyle() //取得日历的样式

{

return htmlcalendarstyle;

}

//设置动作的uri,target_frame 的值可以为_blank、 _parent、 _top、 _self。

public void setaction(int day, string actionuri, string target_frame)

{

if(actionuri != null)

{

config.put(string.valueof(day), actionuri);

if(target_frame != null && target_frame.length() 〉 0)

config.put(day + "target", target_frame);

}

}

//设置一个月的所有天的超链接

public void setactions(string actionuri, string target_frame)

{

for(int day = 1; day 〈= 31; day++)

setaction(day, actionuri, target_frame);



}

//设置地区

public void setlocale(locale locale)

{

loc = locale;

}

//设置年份

public void setyear(int htmlcalendaryear)

{

if(htmlcalendaryear 〉 0)

{

year = htmlcalendaryear;

config.clear();

}

}

//设置月份

public void setmonth(int htmlcalendarmonth)

{

if(htmlcalendarmonth 〉= 1 && htmlcalendarmonth 〈= 12)

{

month = htmlcalendarmonth;

config.clear();

}

}

//设置日历的样式

public void setstyle(int htmlcalendarstyle)

{

style = htmlcalendarstyle;

}

private string stringdate(calendar calendar)

{

string strday = string.valueof(calendar.get(1));

return strday + twodigits(calendar.get(2) + 1) + twodigits(calendar.get(5));

}

private string twodigits(int day) //为了日历中数字能够对齐,所以1-9 前将加0

{

string stringday = string.valueof(day); //取得day的值

if(stringday.length() == 1) //如果字符串长度为1

return "0" + stringday; //则在字符串前加零

else

return stringday;

}

}

文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·最简单的Struts程序-JSP教程,资料/其它
·利用激光供电的光电电流互感器
·java到structs-JSP教程,Java技巧及代码
·鼠标样式,整体背景图,滚动条的效果(网页效果)-ASP教程,ASP应用
·ASP中正则表达式的应用-ASP教程,正则表达式
·XML应用-利用XML 与XSL-.NET教程,XML应用
·.net 下用javascript调用webservice-.NET教程,Web Service开发
·Asp无组件上传进度条解决方案-ASP教程,组件开发
·破译动网验证码的简单方法-.NET教程,评论及其它
·linux系统文件命令精通指南(上)
最新文章
·mashups+ajax打造全新web开发_ajax教程
·windows vista系统中写字板应用全攻略_windows vista
·adsense单价持续低迷的解读_网赚技巧
·google反作弊小组成员专访_站长访谈
·端午议话:谈网站的特色_站长心得
·浅谈我的十点论坛管理经验_站长心得
·如何针对msn的onpage进行网页优化_站长心得
·用google 搜索框黏住易变的访问者_google推广
·google关键词广告每次点击付费(ppc)术语表_google推广
·确保万无一失的google 关键词广告公式_google推广
相关主题
  • 使用javascript制作声音按钮_javascript教程
  • 使用javascript检测浏览器的相关特性_javascript教程
  • 使用javascript修改客户端注册表_javascript教程
  • 使用javascript创建快捷方式_javascript教程
  • 使用JAVA中的动态代理实现数据库连接池-JSP教程,数据库相关
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭