当前位置: 首页 > 图文教程 > 网络编程 > JSP > 使用JavaBean创建您的网上日历本(2)

JSP
GET 方式提交的含有特殊字符的参数
java big5到gb2312的编码转换
java Lucene 中自定义排序的实现
hibernate中的增删改查实现代码
jsp 定制标签(Custom Tag)
jsp基础速成精华讲解
IE cache缓存 所带来的问题收藏
关于JSP的一点疑问小结
JSP 多条SQL语句同时执行的方法
jsp include文件时的一个乱码解决方法
在JSTL EL中处理java.util.Map,及嵌套List的情况
jsp 页面显示的一些用法
根据Hibernte的cfg文件生成sql文件
五种 JSP页面跳转方法详解
JSP 防范SQL注入攻击分析
JSP 连接MySQL配置与使用
java eclipse 启动参数
jsp 页面上图片分行输出小技巧
解决jsp开发中不支持EL问题
JSP 页面中使用FCKeditor控件(js用法)

JSP 中的 使用JavaBean创建您的网上日历本(2)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 67 ::
收藏到网摘: n/a

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;
}
}