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

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 认证考试-> Cisco认证
一个Jsp初学者的学习过程(四)-JSP教程,Jsp/Servlet
作者:网友供稿 点击:40
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
一个jsp初学者的学习过程(四)

theunforgiven


第四章 第一个javabean

一、先看看如何取当前时间并显示的代码:
------------------------------------------------
<%
java.text.simpledateformat formatter = new java.text.simpledateformat("yyyy-mm-dd hh:mm:ss");

java.util.date currenttime = new java.util.date();//得到当前系统时间

string str_date1 = formatter.format(currenttime); //将日期时间格式化
string str_date2 = currenttime.tostring(); //将date型日期时间转换成字符串形式
%>
格式化成"yyyy-mm-dd hh:mm:ss"格式的日期时间:<%=str_date1%>
未经格式化的string格式的日期时间:<%=str_date2%>
未经格式化的date格式的日期时间:<%=currenttime%>
-------------------------------------------------
页面的输出内容:
格式化成"yyyy-mm-dd hh:mm:ss"格式的日期时间:2005-03-17 09:55:40
未经格式化的string格式的日期时间:thu mar 17 09:55:40 cst 2005
未经格式化的date格式的日期时间:thu mar 17 09:55:40 cst 2005

通常我们需要的是这种格式化后的时间:2005-03-17 09:55:40。现在有这样一个问题:“2005-03-17 09:55:40”是一个字符串,有些时候我们需要在这个字符串里提取出年、月、日等的相关信息,怎么办呢?看下面的代码:
----------------------规则的字符串----------------------------------------------
规则的字符串(年4位,月2位,日2位,中间用字符“-”分隔):
<br>原字符串为:
<%
string date="1989-12-30";
out.println(date+"<br>");
string year=date.substring(0,4);//取第0+1位至第4位
string month=date.substring(5,7);//取第5+1位至第7位
string day=date.substring(8,10);//取第8+1位至第10位
out.println("year="+year+",month="+month+",day="+day);
%>
----------------------------------------------------------------------------------
从上面的代码我们可以看出来:这只能针对规则的字符串(年4位,月2位,日2位),要是不规则的呢?年可能2位也可能4位,月和日可能1位也可能2位,怎么办?通过对上面的代码修改,可以得到下面的通用的代码(这个“通用”有一个前提——年月日之间必须以“-”分隔):
----------------------不规则的字符串----------------------------------------------
不规则的字符串(年、月、日长度不一定,中间用字符“-”分隔):
<br>原字符串为:
<%
string date="04-05-6";
out.println(date+"<br>");
int a=date.indexof("-");//求第一个“-”的位数
int b=date.lastindexof("-");//求最后一个“-”的位数
int len=date.length();//求字符串的长度
year=date.substring(0,a);//取第一个“-”前的字符串
month=date.substring(a+1,b);//取两个“-”之间的字符串
day=date.substring(b+1,len);//取最后一个“-”以后的字符串
out.println("year="+year+",month="+month+",day="+day);
%>
----------------------------------------------------------------------------------
现在这个问题解决了。可是我们会想到:每次需要对一个表示年月日的字符串进行分割的时候都需要在.jsp页面里写上这么一段代码,不但麻烦而且使页面显得混乱,能不能以一种看起来更清晰的方法解决这个问题呢?当然可以了,用javabean就行了。

二、第一个javabean
什么是javabean?我在接触到这个问题时苦恼不已,因为我始终无法理解这个概念,直到我相继写了几个之后,我蓦然发现:它不就是一个类吗?!现在,我们先不去管什么是类,先看下面的这个javabean:
--------------------------------datebean.java-------------------------------------
//该bean能够从jsp文件中得到一个表示年月日(用“-”分隔)的字符串,然后返回给jsp文件分别表示年、月、日的字符串
package ringz.javabeans; //ringz.javabeans是我的包名,我自己写的javabean都在这个包里
public class datebean //这个class的名字是datebean,那么这个javabean文件的名就必须叫:datebean.java
{
private string datestr;
private string year;
private string month;
private string day;
//
public void setdatestr(string str) //私有变量datestr的set方法
{
this.datestr=str;
}
public string getdatestr() //私有变量datestr的get方法
{
return datestr;
}
public string getyear()//得到年的字符串
{
int a=datestr.indexof("-");//求第一个“-”的位数
year=datestr.substring(0,a);//取第一个“-”前的字符串
return year;
}
public string getmonth()//得到月的字符串
{
int a=datestr.indexof("-");//求第一个“-”的位数
int b=datestr.lastindexof("-");//求最后一个“-”的位数
month=datestr.substring(a+1,b);//取两个“-”之间的字符串
return month;
}
public string getday()//得到日的字符串
{
int b=datestr.lastindexof("-");//求最后一个“-”的位数
int len=datestr.length();//求字符串的长度
day=datestr.substring(b+1,len);//取最后一个“-”以后的字符串
return day;
}
}
---------------------------------------------------------------------------------
一个javabean里最主要的是set和get方法:set方法用于从.jsp页面向javabean传值;get方法用于从javabean向.jsp页面传值。下面看.jsp页面如何使用这个javabean:
------------------------------ymd_use_bean.jsp----------------------------------
<%@ page contenttype="text/html; charset=gb2312" language="java" import="java.sql.*" errorpage="" %>
<jsp:usebean id="ymd" scope="page" class="ringz.javabeans.datebean">
<jsp:setproperty name="ymd" property="*"/>
</jsp:usebean>
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />
<title>使用javabean从字符串中取得年月日信息</title>
</head>
<body>
<%
try
{
out.println("您输入的字符串是:"+ymd.getdatestr()+"<br>");
out.println("year="+ymd.getyear()+",month="+ymd.getmonth()+",day="+ymd.getday());
}
catch(exception e){}
%>
<br><br><hr><br>请在下边的文本框中输入代表年月日的字符串,格式:xxxx-xx-xx,其中代表年、月、日的位数可以不限定。
<form method="post" action="ymd_use_bean.jsp">
<input type="text" name="datestr"><!--必须和所使用的javabean:datebean中的这个“private string datestr;”所定义的名称完全一致!!!-->
<input type="submit" value="确定">
(必须使用两个“-”分开,如:1999-9-29)
</form>
</body>
</html>
--------------------------------------------------------------------------------
你在这段代码里能看到get方法,可是set方法呢?怎么没看见?这里面的玄机在<jsp:usebean></jsp:usebean>之间和form里的这句:<input type="text" name="datestr">,这里我不想重点说明.jsp文件如何引用javabean,你不清楚的话请查阅其他资料。
另外在这里提一个小技巧你自己试一试:把try和catch的内容去掉,看看结果是什么样的;把catch的内容改成这样:
catch(exception e)
{out.print(e);}
再看看结果是什么样的。然后自己分析一下为什么会这样。这是一个我经常使用的小技巧,不知道别人是不是也用这种方法来解决这种问题。

上面已经说了javabean就是一个类,下面我要用自己的话说一下什么是类,我是怎么理解类这个概念(理解的不一定准确,还请高手们给予指正,免的误人子弟^_^!):
先是想起一个笑话:说有一种机器,从机器的一侧放进一头猪,机器的另一侧就会出香肠。引申一下。这台机器在一个仓库里,这个仓库里还有一台能自动出猪毛和一台出猪皮的机器。现在这个仓库就可比做一个类,而每台机器就是一个方法,因为这个仓库是只针对猪的仓库,所以这个仓库一定在java.pig这个包(java的api——说白了就是类库或者按照c的说法就是函数库——里有很多类,这些类是分类存放的,每一个分类称做一个包,比如,和输入输出有关的类就放在java.io包里,和绘制图形相关的类就放在java.awt包里)里面,我们给这个仓库起名叫pigfactory,这就是类名。现在拿来一头猪:japanese属于类pig,先通过和pigfactory同名的构造函数pigfactory()为处理这头猪新建一个实例:
java.pig.pigfactory pf = new java.pig.pigfactory();
现在我们可以通过这个实例对这头猪进行操作了——由于我们只想要它的皮,那就使用出皮的机器就行了,这台机器作为一个方法叫做getskin(),那么:
skin pigskin = pf.getskin(japanese);
猪皮(pigskin)出来了,并且运送出仓库,它属于类“皮”(skin)了。
类似的,还有一些专门处置牛、羊的仓库,它们也有自动出皮的机器,所以也是方法:getskin(),这也就是为什么我们会发现很多不同的类里边有相同名称的方法,如:getstring方法。
我们可以发现:这台自动出皮的机器是如何工作的,我们并不关心,我们所关心的只是怎样使用它。我们也可以自己开发一个类(或者javabean),它的工作原理和sun给我们开发好的api里的类是基本一致的。在使用时我们所关心的仅仅是如何把值传给它和如何从它那里得到值。
以上是我的理解,可能有很多不确切的地方,希望大家指正。

说了这很多废话以后,你可能想问:我们上面写的javabean现在可以用了吗?还不行。刚刚我们写好的是一个.java文件,必须把它编译成.class文件以后jsp才能调用它。下面说怎么编译,由于我现在没有使用专门的java开发工具(如jbuilder),所以只能使用我们安装的jdk(java 2 sdk)所提供的编译工具:
把datebean.java这个文件放到c:\下,“开始”-“运行”-“cmd命令”,在开启的窗口中将当前路径改为c:\,然后输入:javac datebean.java,回车,如果窗口中没有提示出错的话,ok,编译成功了。这时你会发现和datebean.java处于同目录的地方多了一个datebean.class文件,就是它了。现在的问题是它应该放在哪了。由于是我自己写的javabean,所以我不打算把他们和tomcat自带的放在一起:之前我们定义了自己的根目录:e:\myjsp,在它的下面新建一个web-inf文件夹(注意大小写),其下再建一个classes文件夹,放在这里就行了。当然你可以专门为你自己开发的javabean做一个包——就像sun那样——我自己的包名叫ringz.javabeans,所以我在classes文件夹下建了一个ringz的文件夹,里面再建一个javabeans文件夹,然后把我开发的.class文件放到这里。这时使用的时候要注意包名:<jsp:usebean id="ymd" scope="page" class="ringz.javabeans.datebean" />。

本章需要注意的当然是每次改完后的.java文件都要重新编译成.class文件,而且使用.class文件时要重启tomcat服务器。



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

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·JSP页面中的自定义标签-JSP教程,Jsp/Servlet
·动态加载Asp.net分页控件-.NET教程,Asp.Net开发
·探究客户端浏览器分辨率的自适应问题(2)-.NET教程,评论及其它
·使用Eclipse开发Jsp-JSP教程,Jsp/Servlet
·正确优雅地解决用户退出——JSP及Struts解决方案-JSP教程,Jsp/Servlet
·关于C#中虚方法重载的说明-.NET教程,C#语言
·如何查看本机打开的端口是被哪个程序使用的-网管专栏,操作系统
·C#中来应用Hook-.NET教程,C#语言
·网页表单验证代码的改进-ASP教程,脚本编码
·最新版ccnp教材介绍
最新文章
·号称全球第一篇华人女站长的建站理财文章_站长心得
·衡量一个网站的价值的公平化的标准是什么?_站长心得
·谈谈网站设计的10个要点2_站长心得
·获取google pagerank值的研究_google推广
·强悍的网络编辑是怎样炼成的?_网络编辑
·点析网站发展三阶段3_站长心得
·个人网站真能转成商业网站,你能么?_站长心得
·百度搜索引擎使用指南_baidu推广
·加入自动功能windows vista磁盘整理全面解析_windows vista
·asp.net中多彩下拉框的实现_asp.net技巧
相关主题
  • 一个Jsp初学者的学习过程(八)-JSP教程,Jsp/Servlet
  • 一个Jsp初学者的学习过程(七)-JSP教程,Jsp/Servlet
  • 一个Jsp初学者的学习过程(六)-JSP教程,Jsp/Servlet
  • 一个Jsp初学者的学习过程(五)-JSP教程,Jsp/Servlet
  • 一个Jsp初学者的学习过程(三)-JSP教程,Jsp/Servlet
  • 西部数码虚拟主机

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