(转帖)[译]Struts Menu开发向导

  哈,网络真是一个好东东,早就想在我们站使用菜单技术,可是我对此不熟悉,这里又有一个现存的东西可以拿来用了。

  转自:http://kb.csdn.net/java/Articles/200511/3af84c4b-0aba-47ad-9060-58f81c7592ab.html

  正文:

   您的位置:CSDN 首页 -> 知识库 -> 文章摘要

[译]Struts Menu开发向导

作者: ∣来源:BlogJava∣原文地址∣2005-11-28

 官方英文版向导(http://struts-menu.sourceforge.net/userguide.html)

一、从1.X升级到2.X需要做以下事情:

1、改变你的taglib声明中的URI。

 <% at taglib uri="http://struts-menu.sf.net/tag" prefix="menu" %>

2、改变<plug-in>,使用新的包名"net.sf.navigator." 。

 <plug-in className="net.sf.navigator.menu.MenuPlugIn">

3、改变你的menu-config.xml文件,使用新的包名"net.sf.navigator." 。

 <Displayer name="Simple"

   type="net.sf.navigator.displayer.SimpleMenuDisplayer"/>

二、快速开始:

1、下载最新的struts-menu版本;

2、解包到本地目录;

3、下载Tomcat或者其它Servlet容器;

4、把struts-menu.war包放入Tomcat安装目录的wabapps目录下,并重启Tomcat服务。

5、打开htpp://localhost:8080/struts-menu/

三、把Struts Menu整合到你的应用程序中:

Struts Menu能够被轻易的整合到你的Struts应用程序中,它也可以整合到一个非Struts的应用程序中,但是我不喜欢这样做,所以在此没有提供相应的教程。这里将一步步的带你整合这个标签库。

你需要把struts-menu.jar放到你的WEB-INF/lib目录下。然后使用URI标签声明你的JSP文件中想使用的这个标签库。

如果使用Struts Menu 2.1,你还需要 Jakarta's Standard Tag Library JAR包放入你的WEB-INF/lib目录下。下载地址:http://ibiblio.org/maven/taglibs/jars/standard-1.0.4.jar,这个文件包括例程WAR包文件和二进制发布包。

1、放入struts-menu.jar包到你的应用程序的WEB-INF/lib目录中。

2、在你的struts-config.xml文件中加入plug-in设置。

 <plug-in className="net.sf.navigator.menu.MenuPlugIn">

   <set-property property="menuConfig"

     value="/WEB-INF/menu-config.xml"/>

 </plug-in>

3、你将需要在你的应用程序的/WEB-INF/menu-config.xml文件中定义你的菜单,这里提供一个简单的片断:

 <Menu name="contactMenu" title="Contact" location="?Contact">

   <Item name="email" title="E-Mail" location="?EMail"/>

   <Item name="phone" title="Phone" location="?Phone"/>

 </Menu>

  更多全面的例程,请查看应用程序的web/WEB-INF目录中的menu-config.xml文件,你可以截取一段作为你需要的菜单。完整的属性列表,可以查看MenuBase class's javadocs(http://struts-menu.source......avigator/menu/MenuBase.html)。

4、在你的JSP文件的顶部加入taglib声明:

 <% at taglib uri="http://struts-menu.sf.net/tag" prefix="menu" %>

5、在你的JSP文件中要放置菜单的位置加入taglib代码:

 <menu:useMenuDisplayer name="TabbedMenu"

   bundle="org.apache.struts.action.MESSAGE">

   <menu:displayMenu name="Home"/>

   <menu:displayMenu name="About"/>

 </menu:useMenuDisplayer>

  属性name="TabbedMenu"被定义在menu-config.xml文件的顶部:

 <Displayer name="TabbedMenu"

   type="net.sf.navigator.displayer.TabbedMenuDisplayer"/>

(译注:其实到此步即可在你的JSP文件中添加相应的菜单了,只不过是没有结合Velocity。在menu-config.xml文件的头部可以定义多个Displayer,每个Displayer都有name和type属性,name属性与JSP文件中menu:useMenuDisplayer标签的name属性相对应,即表明使用何种样式,具体的样式定义便在type属性中定义,type属性中是一个class。在menu-config.xml文件中的菜单定义中的name属性则与JSP文件中的menu:displayMenu标签的name属性相对应。)

使用定制的Velocity模版实施你的菜单,你需要整合Velocity到你的WEB应用程序中。如果需要这样做的话,请完成下面的步骤:

1、确定你的menu-config.xml文件有“Velocity”的displayer定义:

 <Displayer name="Velocity"

     type="net.sf.navigator.displayer.VelocityMenuDisplayer"/>

2、加入Velocity的JARs包到你的WEB-INF/lib目录中,下载velocity-1.4-rc1.jar(http://www.ibiblio.org/ma......y/jars/velocity-1.4-rc1.jar)和velocity-tools-view-1.0.jar(http://www.ibiblio.org/ma......velocity-tools-view-1.0.jar)。

3、加入globalMacros.vm(http://cvs.sourceforge.net/viewcvs.py/*checkout*/struts-menu/navigator/web/WEB-INF/classes/globalMacros.vm?content-type=text%2Fplain&rev=1.1(右键另存为))到你的WEB-INF/lib目录中。

4、改变你的JSP文件中displayer的值为“Velocity”,“config”属性指向一个文件(如config="/templates/tabs.html")或者如果tabs.htm在你的WEB-INF/classes目录中的话,则可设config="tabs.html"。

这里提供了一些使用Velocity的displayer例子,可在sample application(http://demo.raibledesigns.com/struts-menu/index.jsp)中查看。它总是在你的菜单需要的时候显示CSS,JavaScript和图像文件。下面有一些在当前的Struts Menu中用到的Velocity模版的例子的链接:

 CoolMenus: Demo(http://demo.raibledesigns......menu/velocity-coolmenu4.jsp),

    Template(http://struts-menu.sourceforge.net/templates/coolmenus.html)

 NiceTabs: Demo, Template

 Tabs: Demo, Template

 XTree: Demo, Template

所有相关的有用的文件如果你需要的话都可以在下面的站点上下载:

 Images (http://struts-menu.sourceforge.net/menu-images/)

 Stylesheets (http://struts-menu.sourceforge.net/styles/)

 Scripts (http://struts-menu.sourceforge.net/scripts/)

 Templates (http://struts-menu.sourceforge.net/templates/)

更多的基于roles的显示/隐藏菜单的信息,请查看FAQs(http://struts-menu.sourceforge.net/faq.html)。

四、在Struts之外使用Struts Menu:

在2.2版中,Menu Repository能够使用MenuContextListener载入:

 <!--

    - Loads the menu-config.xml for struts-menu at startup,

    - by default from "/WEB-INF/menu-config.xml".

    - To override this, add a context-param named "menuConfigLocation"

    - web.xml file.

    -->

 <listener>

     <listener-class>net.sf.navigator.menu.MenuContextListener</listener-class>

 </listener>

或者如果你使用Spring,甚至更容易。仅仅需要加入下面的部分到你的applicationContext.xml文件中:

 <bean id="menu" class="net.sf.navigator.menu.MenuLoader">

   <property name="menuConfig">

     <value>/WEB-INF/menu-config.xml</value>

   </property>

 </bean>

 <!-- The menuConfig property is an optional attribute.  It is set to

     /WEB-INF/menu-config.xml by default. -->

感谢Dan Luputan提供MenuLoader类的源代码。

五、从源文件编译:

要从源文件编译这个项目,执行下面的步骤:

1、下载并安装Maven(http://maven.apache.org/);

2、创建一个环境变量MAVEN_HOME指出你的Maven的安装目录,然后添加$MAVEN_HOME/bin到你的PATH变量中;

3、操纵这个目录你可以扩展源代码,执行“maven.jar”创建target/struts-menu.jar。

要展开struts-menu例程,需要下面的步骤:

1、下载和安装Tomcat;

2、创建一个环境变量CATALINA_HOME指出你的Tomcat的安装目录;

3、执行“maven deploy”把应用程序展开到Tomcat中;

4、打开http://localhost:8080/struts-menu在你喜爱的浏览器中。

如果你喜欢使用Eclipse开发项目,请参考此份开发向导(http://struts-menu.sourceforge.net/devguide.html)。

Robin's Java World 2005-11-28 10:15

--------------------------------------------------------------------------------

学习日记用户取回密码(重置密码)分析设计

  用户重置密码的流程设计如下:

  1、用户忘记密码,请求重置密码;

  2、检测用户是否在72小时内请求过重置密码,若是,给出提示消息,中止;否则继续;

  3、系统发一封包括用户ID和随机产生的6位Token到用户注册时留下的信箱,同时记下发送邮件的时间;

  4、系统每隔1小时检测取回密码的用户的邮件发送时间,如果没有超过72小时,则继续检测;如果超过72小时,则删除用户重置密码的记录,用户需要重新请求发送密码;

  5、用户收到重置密码的邮件,点击重置密码的链接,登录到重置密码的页面,用户输入新密码两遍;

  6、如果用户在重置密码页面输入的用户ID和Token都正确并且两次新密码一致,则系统接受新密码,并经MD5加密后,存入数据库,新密码生效,引导用户转往用户登录页面,同时,删除用户重置密码的记录;

  7、如果用户在重置密码页面输入的用户ID和Token有误或两次密码不一致或者密码字符非法,返回重置密码的页面,提示用户错误和重新输入新密码,直到用户输入正确或取消重置密码的过程;

  在分析了学习日记重置密码流程后,画出了用户重置密码用例的活动图后(尝试用ArgoUML0.18.1建模,模型地址:http://learndiary.tigris.org/source/browse/*checkout*/learndiary/old/documentation/login/design/resetPsd1.zargo,活动图地址(gif格式):http://learndiary.tigris.org/source/browse/learndiary/old/documentation/login/design/resetPsd1ActivityDiagram.gif?rev=1.1&view=markup),下面接着对其中涉及的对象实体作一检查:

  1、用户:重置密码的用户;

  2、邮件:用户重置密码的链接(包括:用户ID和取回密码的标志码)的邮件;

  3、邮件发送者:发送邮件的对象;

  4、用户重置密码的数据:保存用户ID、取回密码的标志码、发送重置密码邮件的时间的信息;

  5、用户重置密码的数据保管者:维护用户ID、取回密码的标志码、发送重置密码邮件的时间的信息的保管者;

  6、重置密码数据有效期限检查者:每隔一定时间间隔(如1小时)检查一次重置密码的数据是否有效,无效了就通知数据保管者抛弃数据;

  

"alt"和"title"属性的使用(转帖两篇)

<TITLE><ALT>里面如何换行(来自http://www.aspx.cn/html/web/DreamWeaver/589/42989.html)

--------------------------------------------------------------------------------

 

<a href="#" title="《杀手无罪》

类型:电影

产地:美国

片长:单本剧

主演:妮芙·坎贝尔 唐纳德·萨瑟兰 威廉·梅西 约翰·瑞特尔特蕾茜·乌尔曼" border="0">鼠标放上去看说明</a>

 

“title”的使用:来自http://www.w3.org/TR/html4/struct/global.html#h-7.4.3

7.4.3 The title attribute

Attribute definitions

title = text [CS]

This attribute offers advisory information about the element for which it is set.

Unlike the TITLE element, which provides information about an entire document and may only appear once, the title attribute may annotate any number of elements. Please consult an element's definition to verify that it supports this attribute.

Values of the title attribute may be rendered by user agents in a variety of ways. For instance, visual browsers frequently display the title as a "tool tip" (a short message that appears when the pointing device pauses over an object). Audio user agents may speak the title information in a similar context. For example, setting the attribute on a link allows user agents (visual and non-visual) to tell users about the nature of the linked resource:

...some text...

Here's a photo of

<A href="http://someplace.com/neatstuff.gif" title="Me scuba diving">

   me scuba diving last summer

</A>

...some more text...

The title attribute has an additional role when used with the LINK element to designate an external style sheet. Please consult the section on links and style sheets for details.

Note. To improve the quality of speech synthesis for cases handled poorly by standard techniques, future versions of HTML may include an attribute for encoding phonemic and prosodic information.

7.4.4 Meta data

(转帖)Jive的中文问题及解决办法及关联转帖

 首页 » 研究文集 » Jive 研究   搜索标题相关文章      发表评论     开始监控     加入收藏夹 

Jive的中文问题及解决办法

bruce 原创  (参与分:520452,专家分:6410)   发表:2002-08-31 12:52   阅读:12622次 

 

说明:本文没有特别指出的地方的环境配置均为:

Windows XP + Tomcat 3.3a + mysql 3.23.51-nt + mysql-connector-java-2.0.14-bin.jar

Jive中产出乱码的原因是多方面的,包括操作系统、Web服务器(比如Tomcat)、Jive的设置、数据库(链接)的编码方式、页面的编码等多个环节,任何一个环节出现编码问题,都会导致你的最终页面出现乱码。相应的解决问题也需要分多步进行。比如,你创建一个论坛,然后页面显示是乱码,你可以根据如下顺序定位问题:

1. 查看数据库中的记录是否是乱码。如果是,再试着修改数据库的链接的编码方式;如果仍然乱码,说明在向后台传送数据前就发生了编码问题,可以查看页面的编码方式、或者在提交前进行如下编码转换:

String new = new String(old.getBytes(“8859_1”), “GB2312”);

2. 如果数据库中正常显示中文,那么说明是页面显示的问题。

在上述每一步,你总是可以使用log语句及时输出,追踪乱码发生的位置。

下面是一些常见的问题,和解决办法。

1. 问:创建论坛或发贴时,输入的中文名显示乱码,查看数据库中,也为乱码。

解决办法:停止Tomcat,修改{JIVE}\WEB-INF\jiveHome\jive_config.xml(在jive.database.defaultProvider节点中):

<serverURL>jdbc:mysql://localhost/jive</serverURL>

为:

<serverURL>jdbc:mysql://localhost/jive?useUnicode=true&characterEncoding=gb2312</serverURL>

注意useUnicode=true与characterEncoding=gb2312之间不要直接使用“&”,需要使用XML转意字符:&加上amp;

2. 问:搜索中文时,search.jsp的输入框中的文字变成了“???”,导致不能搜索出任何结果。

解决办法:将search.jsp页面中的所有的:

/search.jsp...q=<%=(queryText!=null)?queryText:"")%>

修改为:

/search.jsp?...q=<%= (queryText!=null)?java.net.URLEncoder.encode(queryText,"GB2312"):""%>

你还可以参加cherami的一篇文章:

Tomcat下的JIVE2的中文问题的报告

本文会不断完善,欢迎大家把自己解决Jive乱码的经验回复在文后,我会把最新的一些内容及时补充近来,一起来完善本文。给更多的朋友提供方便,先谢谢大家!

 

 

 TOMCAT下的JIVE2的中文问题的报告

 首页 » 研究文集 » Jive 研究   搜索标题相关文章      发表评论 

TOMCAT下的JIVE2的中文问题的报告

cherami 翻译  (参与分:700911,专家分:21389)   发表:2002-05-26 15:44   更新:2002-11-10 18:24   版本:1.0   阅读:7675次 

 

原文摘自jive论坛用户shyguy的帖子。

翻译者:cherami

XXX 注意 XXX:

所有的结论都是基于一下平台:

Winnt4.0(简体中文版) + Sun JDK1.3 + Tomcat4.0-b7 + jive2.0.1 + mysql3.23.38 + org.gjt.mm.mysql.Driver-2.04

在这样的条件下,安装在TOMCAT下的Jive2.0不能像其他JSP应用那样不做任何修改就可以正确的显示中文。我不敢确定但是几个测试的结果告诉我tomcat核心的编码总是8859_1,无论是否在双字节的操作系统下。当客户端输入一些中文,request.getParameter()请求返回的字符串是8859_1,因此如果你使用System.out.println()将输入打印到控制台,它看上去就像"??x?"。如果你在每个JSP文件的开始加上 <%@ page contentType="text/html;charSet=gb2312" %> 标签,中文就可以正确显示,因为tomcat知道它的内核编码是8859_1而输出到客户端的PrintWriter(它是JSP的输出对象)的编码是gb2312,因此PrintWriter在内部做了令人愤怒的8859_1到gb2312的转换。这就是为什么我们总是添加contentType解决中文问题的原因。

但是不幸的是,当我们通过JDBC从数据库提取字符串的时候事情就不一样了。

看看下面的虚拟的代码: str=rec.getString(field); 你能告诉我字符串str的编码吗?

答案是: gb2312!!!

(就像mysql jdbc驱动一样,很多包都根据平台返回字符串的编码,例如 SimpleDateFormat 和 JavaMail。)因此,当你将字符串传递到PrintWrite时,愚蠢的PrintWriter将再次使用8859_1-->gb2312的转换。可怜的客户端别无选择的看到丑陋的????。

令我困惑的是:

request.getParameter()的返回字符串的编码是8859_1,因此向控制台打印时它看上去像??x?,但是Jive可以将字符串用gb2312编码存入数据库!!!

例如,在post.jsp里面,在消息创建发生以前,我将中文主题和内容输出到控制台,它看上去是??x?,但是在mysql数据库里面,SELECT * FROM jiveMessage将返回正确的中文!

同时我也发现response.setLocale()对中文输出没有作用。

如何解决呢:

1. 在输出前使用String.getBytes()反向转换gb2312字符串,这是最愚蠢的方法。

2. 在英文平台下运行服务器。

3. 最最最最好的方法是: 使用其他的 java服务器!

对于TOMCAT用户的建议是:

如果你确实想在一个双字节的操作系统(例如简体中文版的Winnt)上运行TOMCAT,你最好: (1)添加<%@ page contentType="text/html;charSet=gb2312"%>到 \include\brankding\style.jsp 和 \admin\include\global.jsp的第一行(路径是相对TOMCAT的主目录)

(2)反向转换从数据库返回的所有字符串为8859_1编码。这需要修改JIVE核心的所有DBxxxx类,

或者修改JDBC驱动的"result.getString()"进行反向转换,

或者修改TOMCAT内核中的"out"对象进行反向转换。

(3)如果你修改了tomcat内核中的"out对象,在将中文信息传递到jive/index.jsp时你最好使用URLEncode(/dir/URL.jsp?gb2312_msg)。

附:Rexip AppServer 有Record-Breaking Benchmark Results处理Java应用的服务器端中文问题。

版权声明  本篇文章对您是否有帮助?  投票: 是    否     投票结果:     6       3

 

 

 

作者其它文章:

使用Checklist提升项目的质量

提升项目组的开发效率

使用JkUnMount

Apache2.0运行模型分析及性能调整

优化Apache 2.0 性能

作者全部文章     查看作者的Blog 

 

 

  评论人:scorpio_leon    参与分: 365    专家分: 55    来自: 上海

 发表时间: 2002-08-13 17:16 

还有一个解决方案

在不进数据库,需要中文参数的页面使用filter,不要忘记了,filter是可以配置的:)

有既需要进数据库,又需要其他中文参数传递的页面呢?

一般不会有吧,有的就举个例子讨论看?

 

 

  评论人:shyguy    参与分: 23055    专家分: 330    来自: 西湖

 发表时间: 2002-09-18 12:10 

嘿嘿,老了。很久以前的事情了,有些观点甚至是错误的。

对不起了。 

 

这个文章共有 2 条评论,共 1 页 

 

 

 

 

 

改变学习日记登录方式余下的步骤

之前,已经把登录模式作了初步的改变。下面,计划一下后面的工作。

1、把重设密码纳入登录模式的改变中:

  1)、参考学习其他的程序的取回密码功能,决定运作方式;已完成,准备用jive3的方式;

  2)、设计用户取回密码的流程,尝试用ArgoUML0.20.alpha2进行建模,一方面可以完成设计,二方面可以验证argouml建模的可行性,取得大家的共识,还可以把这个模型提交给朋友们,请他们提意见和建议;

  3)、实现重设密码;

2、增加用户保存密码的功能,下一次登录可以不用输入密码;见http://www.learndiary.com/disDiaryContentAction.do?searchDiaryID=558&goalID=558&naviStr=a10ac0ad0改善系统的登录方式

和“用cookie保存用户密码登录流程http://www.learndiary.com/disDiaryContentAction.do?goalID=73”

3、实现1需要补充下面的知识:

  1)MD5加密,用于用户密码的加密(包括数据库中的和用户cookie中的);

  2)java中时间触发的使用Timer,用于重设密码失误期限的检测;

4、另外,是否考虑把邮件发送单独做成一个功能,在程序要发送各种邮件时都可以使用,例如,我在考虑是否单独增加对注册用户邮件的群发功能,或者把公告作为用户的默认订阅邮件。jive3的做法好像就是这样的。我前面作过这样的思考:

应该加入给注册用户发系统公告的功能

http://www.learndiary.com/disDiaryContentAction.do?searchDiaryID=1250&goalID=1250&naviStr=a10ac0ad0

    

学习jive的取回密码流程

  在这个问题走偏了。下了一个jivejdon2.5,却搞不定里面的中文化问题,本来里面没有取回密码的功能,可我还是尝试解决这个中文化问题。里面用的是is088591编码,在管理页面设置本地化和创建中文论坛,发中文帖子不行。问题暂时记在这里。先把既定的目标完成。我的环境是:Window2000+tomcat5+mysql4

  在jive3中有取回密码的功能,初步用导入导出sql文件在ultraedit比较的方法找到它存取回密码userID和Token的字段存在在表jiveuserprop中:

CREATE TABLE `jiveuserprop` (

  `userID` bigint(20) NOT NULL default '0',

  `name` varchar(100) NOT NULL default '',

  `propValue` text NOT NULL,

  PRIMARY KEY  (`userID`,`name`)

) TYPE=MyISAM;

数据:INSERT INTO `jiveuserprop` VALUES (1,'jiveAdminUserRange','15') , (1,'jiveThreadRange','15') , (1,'jiveMessageRange','15') , (1,'jiveTimeZoneID','Asia/Shanghai') , (1,'jiveAutoWatchNewTopics','false') , (1,'jiveAutoWatchReplies','false') , (1,'jiveAutoAddEmailWatch','false') , (2,'jiveSignatureVisible','true') , (2,'jive.passwordreset.token','1fgNz9LH') , (2,'jive.passwordreset.timestamp','1131889036888') , (2,'jive.passwordreset.last_sent','1131889036888') , (5,'jiveLocation','sds') , (5,'jiveOccupation','dsds') ;

可以看到,它里面的token是没有加密的。

当用户用jive3发的重设密码的链接:http://localhost:8080/jive3/resetPassword!default.jspa?userid=5&token=2qSwKIgy 重设密码后,有关的字段值就被删除了,如下:

INSERT INTO `jiveuserprop` VALUES (1,'jiveAdminUserRange','15') , (1,'jiveThreadRange','15') , (1,'jiveMessageRange','15') , (1,'jiveTimeZoneID','Asia/Shanghai') , (1,'jiveAutoWatchNewTopics','false') , (1,'jiveAutoWatchReplies','false') , (1,'jiveAutoAddEmailWatch','false') , (2,'jiveSignatureVisible','true') , (5,'jiveLocation','sds') , (5,'jiveOccupation','dsds') ;

jive3是隔了72小时取回密码失效,下面验证一下,发送密码后的值:

INSERT INTO `jiveuserprop` VALUES (1,'jiveAdminUserRange','15') , (1,'jiveThreadRange','15') , (1,'jiveMessageRange','15') , (1,'jiveTimeZoneID','Asia/Shanghai') , (1,'jiveAutoWatchNewTopics','false') , (1,'jiveAutoWatchReplies','false') , (1,'jiveAutoAddEmailWatch','false') , (2,'jiveSignatureVisible','true') , (2,'jive.passwordreset.last_sent','1133261729536') , (2,'jive.passwordreset.timestamp','1133261729536') , (2,'jive.passwordreset.token','ywE1T2Q0') , (5,'jiveLocation','sds') , (5,'jiveOccupation','dsds') ;

把系统时间调后72小时以后,重设密码失败:

Forums - Reset Your Password

  Welcome, Guest 

 Login 

 Guest Settings 

 Help 

 

Please enter the userID and the token exactly as shown in the password reset email you have previously received. Please note that the token is case sensitive.

An error occurred validating the userID and token that was just entered. Please confirm the userID and the token was entered exactly as shown in the email and note that the token is case sensitive. If both are exactly as shown in your email and 72 hours have passed since the email was sent, you will have to start over.

Reset your password 

UserID:   

Token:

Invalid token   

New Password:   

Confirm Password:   

  

查看数据库中相应的字段:

INSERT INTO `jiveuserprop` VALUES (1,'jiveAdminUserRange','15') , (1,'jiveThreadRange','15') , (1,'jiveMessageRange','15') , (1,'jiveTimeZoneID','Asia/Shanghai') , (1,'jiveAutoWatchNewTopics','false') , (1,'jiveAutoWatchReplies','false') , (1,'jiveAutoAddEmailWatch','false') , (2,'jiveSignatureVisible','true') , (5,'jiveLocation','sds') , (5,'jiveOccupation','dsds') ;

可以看出,字段值已经被删除了。

至此,jive3的取回密码实现的大概思路已经掌握了。

可怕的高烧

  昨晚,约凌晨1点,孩子开始说胡话。体温40.1度。赶紧送到医院急诊,打了针,吃了饭。今天下午,请假在家照顾小孩。体温仍未完全正常,看来今天晚上要小心。

  冬天,孩子的体温不要凭手摸,应该用温度计。