版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE10都市供求信息网摘要在全球知识经济和信息化高速发展的今天,无论是在生活、工作还是在学习方面,信息都是决定成败的关键。小到生活中的需求,大到企业的发展,特别是对企业实现跨地区、跨行业、跨国经营,信息都起着至关重要的作用。而信息时代的代表便是网络技术的日渐成熟,现在网络已经和我们紧密的联系起来了,我们不敢想象没有网络,我们的生活会变成什么样,也许就像食物中没有调料一样,我们的生活离开了网络会变得索然无味。通过网络我们可以足不出户的做许多事情。休闲,娱乐,学习,购物,求职等等许多我们数之不尽的事情。随着信息化的不断进步,在各都市供求业务来往频繁的今天,一种新的供求信息模式已然出现,那就是都市供求信息网。都市供求信息网的好处:节省了传统供求形式的成本,就算是库房也可以在比较便宜的位置,不用像传统供求形式那样繁琐;现在很多培训、房屋租赁机构、招聘单位也比较重视网上渠道;政府的招商引资和个人的交友、寻人寻物也普遍利用了网络的深远影响力。因此都市供求信息网无论从社会角度,还是从民生角度而言都具有很大的好处。鉴于以上情况,本设计一改常规商业网站平台信息呆滞、互动性差、缺乏灵活性、内容生硬等一系列弊端,充分发挥了其商品高流通性、都市强互动性、内容版块丰富、信息涵盖面广的优点。加上站内两种搜索模式,使得它在未来IT市场上必然会有一席之地。在写作过程中,通过考察北京市具体情况进行论述,体现理论联系实际,理论应用于实践的科学性。关键词:供求信息;互动性;信息涵盖面广。石家庄职业技术学院毕业设计论文目录石家庄职业技术学院设计论文目录1目录第一章概述 11.1网站功能概述 11.2系统的运行环境 11.3开发工具 1第二章系统的数据库设计 22.1数据库E-R图 22.1.1供求信息实体E-R图 22.1.2信息类别实体E-R图 22.1.3管理员实体E-R图 3第三章前台页面设计 43.1前台页面概述 43.1.1信息显示概述 43.1.2信息显示技术分析 63.2前台页面设计 73.2.1列表显示信息的实现过程 73.2.2显示信息详细内容的实现过程 8第四章后台设计 114.1后台登录功能概述 114.2后台页面设计 124.3后台登录的实现过程 134.3.1信息管理技术分析 144.3.2信息显示的实现过程 154.3.3信息审核的实现过程 174.3.4信息付费设置的实现过程 18第五章开发技巧与难点 20第六章结论 21参考文献 22致谢 23石家庄职业技术学院毕业设计论文第一章概述PAGE5天津大学硕士学位论文第一章绪论第一章概述1.1网站功能概述本网站要求具有以下功能:本网站操作流程简单,页面干净、整洁。本网站导航信息分类多,覆盖信息范围广。支持多人同时访问本网站,只有管理员身份才能进入后台进行信息审核。支持多条件的快捷查询和模糊查询功能。支持用户发布所选择种类的信息。支持管理员删除相应的信息。支持管理员把查找到的信息设为已付费状态。1.2系统的运行环境本项目所用的运行环境如表1-1所示表1-1运行环境表类别配置软件Sqlserver2005、jdk1.6操作系统Windowsxp以上版本内存和硬盘大小256M以上、1G以上其它USB2.0 1.3开发工具本项目所用的开发工具如表1-2所示。表1-2开发工具表开发语言JAVA开发环境Windows7/xp+MyEclipse+sqlserver+tomcat+jdk1.6开发工具MyEclipse+tomcat石家庄职业技术学院毕业设计论文第二章系统的数据库设计第二章系统的数据库设计数据库的设计在程序开发中起着至关重要的作用,它往往决定了在后面的开发中如何进行程序编码。一个合理、有效的数据库设计可降低程序的复杂性,使程序开发的过程更为容易。2.1数据库E-R图2.1.1供求信息实体E-R图供求信息实体包括信息编号、所属类型、信息内容、信息标题、联系人、联系电话、发布时间、E-mail、付费状态和审核状态10个属性。其中审核和付费状态属性分别用来标识信息是否审核与是否付费,用1表示“是”,用0表示“否”。供求信息实体的E-R图如图2-1所示。图2-1供求信息实体E-R图2.1.2信息类别实体E-R图信息类别实体包括类别编号、类别名称、类别标识和类别介绍4个属性。信息类别实体的E-R图如图2-2所示。图2-2信息类别实体E-R图2.1.3管理员实体E-R图管理员实体包括编号、密码和用户名3个属性。管理员实体的E-R图如图2-3所示。图2-3管理员实体E-R图第三章前台页面设计第三章前台页面设计3.1前台页面概述页面是用户与程序进行交互的接口,用户可从页面中查看程序显示给用户的信息,程序可从页面中获取用户输入的数据,所以在进行页面的设计时,不仅要从程序开发的角度分析,还要考虑到页面的美观及布局。本系统的前台页面就充分考虑到了这些内容,因此,本系统中所有的前台页面都采用一种页面框架。该页面框架采用二分栏结构,分为4个区域,即页头、侧栏、页尾和内容显示区。都市供求信息网的前台首页运行效果如图3-1所示。图3-1前台首页运行效果3.1.1信息显示概述信息显示是本系统要实现的主要功能之一,根据需求分析与系统设计,在前台要实现3种显示方式——首页面的信息列表显示、某类别中所有信息的列表显示和某信息详细内容的显示。下面分别对这3种方式进行介绍。(1)首页信息的列表显示该显示实现的效果是:以超链接方式显示信息的标题,单击这些超链接可查看该信息的详细内容。该显示方式将付费信息与免费信息进行分类显示。对于所有类别的付费信息按照信息的发布时间降序排列显示,如图3-2所示;对于免费信息,进行归类显示,并且每一类中按照信息的发布时间降序排列显示前5条记录,如图3-3所示。图3-2首页中列表显示付费信息图3-3某类别中所有信息的列表显示效果(2)某类别中所有信息的列表显示该显示实现的效果是:显示出该类别中所有信息的详细内容。该显示方式同样将付费信息与免费信息进行分类显示,并且对所有已通过审核的付费信息与所有已通过审核的免费信息都按照信息的发布时间降序排列显示。当用户单击导航栏中的超链接后,就会通过该方式显示信息。(3)某信息详细内容的显示该显示方式实现的效果是:显示选择的某信息的详细内容。当用户单击信息标题超链接后,就会显示该信息的详细内容,如图3-4所示。图3-4某信息详细内容的显示效果3.1.2信息显示技术分析首页的信息显示又分为付费信息的显示与免费信息的显示,下面分别介绍。实现付费信息显示的技术分析:[14]该技术要实现的是以超链接形式显示数据库中所有已付费信息的标题。要实现这样一个目的,可先按照用户访问、程序处理、页面显示这样的程序流程进行反向分析(1)先来考虑如何在JSP页面中输出信息。可设想将要显示的已付费信息都存在一个List集合对象中,则在页面中可通过Struts2.0的iterator标签遍历这个集合,然后再使用property标签输出信息,实现信息的列表显示。(2)接下来考虑如何在程序中生成这样的List集合对象。因为信息都以记录形式保存在数据库中,要在页面中显示信息,就必须先查询数据库获取符合已付费条件的记录,然后依次将每条记录封装到对应的JavaBean中,最后创建一个List集合对象存储这些JavaBean。这个过程实际上就是将信息从以记录存储的形式转换为通过JavaBean进行封装的过程,如图3-5所示。图3-5转换信息存储方式所以整个SQL语句表示:在tb_table表中,以id字段的内容大于一个指定值的记录为起点,查询出前m条记录,该指定值为前n-1页中id字段内容中的最大值。注意:查询第一页中的记录,应使用selecttopm*fromtb_table语句。本系统是按照信息的发布时间来显示信息的,最新发布的信息显示在最顶部,所以对查询出的记录要按照发布时间进行降序排列。此时分页查询的SQL语句应使用信息的发布时间来作为分页的条件,而不能再使用设为自动编号的字段了。3.2前台页面设计3.2.1列表显示信息的实现过程列表显示信息用到的数据表:tb_info和tb_type。本节将分别介绍首页信息的列表显示的实现过程和列表显示某类别中所有信息的实现过程。首页信息的列表显示实现过程首页信息的列表显示,分为付费信息和免费信息的列表显示,下面先来介绍列表显示付费信息的实现过程。列表显示付费信息的实现过程:创建JavaBean:InfoSingle。根据前面的技术分析,需要将从信息表中查询出的已通过审核的付费信息封装到JavaBean中,然后保存到List集合对象中。所以先来创建这个JavaBean,该JavaBean中的每个属性要对应表中的字段[14]。代码如下:packagecom.yxq.model;publicclassInfoSingle{privateintid; //信息IDprivateintinfoType; //信息类型privateStringinfoTitle; //信息标题privateStringinfoContent; //信息内容privateStringinfoLinkman; //联系人privateStringinfoPhone; //联系电话privateStringinfoEmail; //E-mail地址privateStringinfoDate; //信息发布时间privateStringinfoState; //信息审核状态privateStringinfoPayfor; //信息付费状态……//省略了属性的getXXX()与setXXX()方法publicStringgetSubInfoTitle(intlen){ //截取信息标题if(len<=0||len>Title.length())len=Title.length();returnTitle.substring(0,len);}}3.2.2显示信息详细内容的实现过程显示信息详细内容用到的数据表:tb_info。当用户在前台单击以超链接形式显示的某信息标题时,就触发了查看信息详细内容的请求,该请求的处理是在InfoAction类中的SingleShow()方法中实现的,请求处理结束后,返回JSP页面进行显示。(1)创建处理请求的SingleShow()方法在SingleShow()方法中,首先从请求中获取要查看详细内容的信息的ID值,并定义查询SQL语句,然后将这两个值作为参数来调用业务处理对象myOp的OpSingleShow()方法,在该方法中将查询到的记录封装到InfoSingle类对象中,然后返回该InfoSingle类对象,具体代码可查看3.publicStringSingleShow(){request.setAttribute("mainPage","/pages/show/singleshow.jsp");Stringid=request.getParameter("id"); //获取请求中传递信息的IDStringsql="SELECT*FROMtb_infoWHERE(id=?)"; Object[]params={id};OpDBmyOp=newOpDB(); //创建一个业务处理对象infoSingle=myOp.OpSingleShow(sql,params); //获取要查看的信息//若为null,表示要查看的信息不存在if(infoSingle==null){ request.setAttribute("mainPage","/pages/error.jsp");addFieldError("SingleShowNoExist",getText("city.singleshow.no.exist"));}returnSUCCESS;}代码中将OpSingleShow()方法返回的InfoSingle类对象赋值给了infoSingle,infoSingle是在InfoAction类的父类InfoSuperAction中定义的属性。InfoSuperAction类的代码如下:packagecom.yxq.actionSuper;importcom.yxq.model.InfoSingle;importcom.yxq.model.SearchInfo;publicclassInfoSuperActionextendsMySuperAction{//用来封装从数据表中查询出的记录和发布信息时的表单数据protectedInfoSingleinfoSingle; protectedSearchInfosearchInfo; //用来封装搜索时的表单数据……//省略了属性的getXXX()与setXXX()方法}配置cityinfo.xml文件对查看信息详细内容请求的配置,与列表显示某类别中所有信息请求的配置是同一个配置。(2)创建显示详细信息的singleshow.jsp页面singleshow.jsp页面内容将显示在框架页面中的内容显示区中,在该页面中编码实现要查看信息的详细内容。代码如下:<table><s2:iftest="infoSingle==null"> <tr><tdcolspan="2">★★★查看信息详细内容出错!★★★</td></tr></s2:if><s2:else><tr><td>信息类别:</td><td><s2:propertyvalue="#session.typeMap[infoSType]"/></td></tr><tr><td>发布时间:</td><td><s2:propertyvalue="infoSDate"/></td></tr>……//省略了显示其他信息的代码</s2:else></table><s2:iftest="infoSingle==null">中test属性所指定的表达式中没有使用“#”符号,这是因为请求从InfoAction类处理结束,转发到singleshow.jsp页面后,当前堆栈顶部存储的是InfoAction类对象的引用。因此,此时在singleshow.jsp页面中使用Struts2.0标签时,都是以InfoAction类对象为基准,所以<s2:iftest="infoSingle==null">中test属性指定的表达式,就相当于判断InfoAction类对象的getInfoSingle()方法返回的值是否为null。同理,在后面的property标签中,如<s2:propertyvalue="infoSDate"/>输出的值,就相当于先调用InfoAction类对象的getInfoSingle()方法返回InfoSingle类对象,再调用InfoSingle对象的getInfoDate()方法,所以<s2:propertyvalue="infoS-Date"/>等价于<s2:propertyvalue="getInfoSingle().getInfoDate()"/>。第四章后台页面设计第四章后台设计4.1后台登录功能概述用户通过单击前台页面顶部的“进入后台”超链接,进入后台登录页面,如图4-1所示。为了防止任意用户进入后台,进行非法操作,所以设置登录功能。当用户没有输入用户名和密码,或输入了错误的用户名和密码进行登录时,会返回登录页面显示相应的提示信息。图4-1用户登录页面后台登录模块的操作流程如图4-2所示。图4-2后台登录模块流程在实现登录功能时,对于已经登录的用户,当再次单击前台页面顶部的“进入后台”超链接时,应直接进入后台主页,而不是再次显示如图4.1所示的登录页面要求用户登录,该功能的具体实现过程,将在4-2节中进行介绍。在后台登录模块中,对于已登录的用户要跳过登录页面,直接进入后台主页。实现该功能的主要技术就是:在当前用户登录成功后,向session中注册一个属性,并为该属性赋值,当用户再次单击“进入后台”超链接时,在程序中先获取存储在session中该属性的值,然后通过判断其值来得知当前用户是否已经登录,从而决定将请求转发到登录页面还是后台首页。4.2后台页面设计(1)后台登录技术分析在后台登录模块中,对于已登录的用户要跳过登录页面,直接进入后台主页。实现该功能的主要技术就是:在当前用户登录成功后,向session中注册一个属性,并为该属性赋值,当用户再次单击“进入后台”超链接时,在程序中先获取存储在session中该属性的值,然后通过判断其值来得知当前用户是否已经登录,从而决定将请求转发到登录页面还是后台首页。(2)后台登录的实现过程根据技术分析,用户单击页面顶部的“进入后台”超链接请求登录时,会先判断用户是否已经登录。若没有登录,则进入登录页面,在该页面中填写用户名和密码后,提交表单,在Action处理类中获取表单数据进行验证,验证成功后查询数据表,查询是否存在用户输入的用户名和密码;若存在,则登录成功,进入网站后台。如果用户已经登录,则直接进入后台。下面按照这个流程,介绍后台登录的实现过程[1]。①实现“进入后台”超链接在view目录下的top.jsp文件中实现进入后台的超链接。代码如下:<ahref="log_isLogin.action">[进入后台]</a>上述代码实现的超链接所请求的路径为log_isLogin.action,触发该超链接产生的请求将由LogInOutAction类中的isLogin()方法处理,isLogin()方法用来判断用户是否已经登录。②设计登录页面Login.jsp在登录页面中,应包含一个表单,并提供“用户名”和“密码”两个表单字段以便用户输入数据。Login.jsp页面的关键代码如下:<%@taglibprefix="s2"uri="/struts-tags"%><s2:formaction="log_Login.action"theme="simple"><tr><tdcolspan="2"><s2:fielderror/></td></tr><!--输出提示信息--><tr><td>用户名: </td><td><s2:textfieldname="user.userName"size="30"/></td></tr> <tr><td>密 码: </td><td><s2:passwordname="user.userPassword"size="30"/></td></tr></s2:form>4.3后台登录的实现过程(1)后台页面概述本系统中所有的后台页面都采用了同一个页面框架,该页面框架采用二分栏结构,分为4个区域,即页头、侧栏、页尾和内容显示区,该页面框架的总体结构与前台页面框架的结构相同。网站后台首页的运行效果如图4-3所示。图4-3后台首页的运行效果 图4-4AdminTemp.jsp页面布局(2)后台页面的技术分析本系统中,实现后台页面框架的JSP文件为AdminTemp.jsp,该页面的布局如上图4-4所示。本系统中,对后台管理员所有请求的响应都通过该框架页面进行显示。在AdminTemp.jsp文件中主要采用include动作和include指令来包含各区域所对应的JSP文件。4.3.1信息管理技术分析(1)信息显示技术分析对于后台信息显示中的列表显示,主要用来显示符合指定条件的信息,该条件包括信息类别、付费状态和审核状态。在数据表tb_info的设计中,设置了info_payfor和info_state两个字段,分别用来表示“付费状态”与“审核状态”。当info_payfor字段内容为1时,表示该信息已付费,为0时表示未付;同样,info_state字段内容为1时,表示已通过审核,为0时表示未通过审核。所以,若要显示招聘信息类别下的“未审核”和“已付费”的信息,应执行如下的SQL语句:SELECT*FROMtb_infoWHERE(info_type=1) AND(info_state='0')AND(info_payfor='1')若要显示培训信息类别下的“未审核”和“未付费”的信息,应执行如下的SQL语句。SELECT*FROMtb_infoWHERE(info_type=1) AND(info_state='0')AND(info_payfor='0')因此,要获取符合条件的信息,只需要设置字段info_type、info_state和info_payfor的值即可。本系统提供了两组单选按钮组成了“付费状态”和“审核状态”选项。对于“付费状态”选项组,选择“未付费”,则传递的值为“0”;选择“已付费”,则传递的值为“1”;若选择“全部”,则传递all。“审核状态”选项组的设置与此相同。另外,实现了一个下拉列表框,供用户选择信息类别。将这些单选按钮与下拉列表框都在一个表单中实现,这样,当单击“显示”按钮提交表单后,选择的状态会通过表单进行传递。可创建一个JavaBean来封装表单数据,即保存选择的状态。Action处理类接收表单请求后,获取表单数据:intinfoType=showType.getInfoType();StringstateType=showType.getStateType();StringpayforType=showType.getPayforType();然后生成SQL语句:SELECT*FROMtb_infoWHERE(info_type=?)AND(info_state=?)AND(info_payfor=?)语句中的“?”最终依次被设置为变量infoType、stateType和payforType的值。对于后台信息显示中的详细内容显示,只需要获取要查看信息的ID值,然后通过如下的SQL语句查询数据表来实现。SELECT*FROMtb_infoWHERE(id=?)(2)信息审核技术分析对于信息审核,实现该功能的主要技术就是执行SQL语句更新数据表。首先需要获取信息的ID值,然后生成如下SQL语句。UPDATEtb_infoSETinfo_state=1WHERE(id=?)其中id字段的值将通过表单中的隐藏域字段进行传递,在Action处理类中可通过如下代码获取。StringcheckID=request.getParameter("checkID")最后执行该SQL语句更新数据表,完成信息审核操作。(3)信息删除技术分析与信息审核技术的实现相同,首先获取信息的ID值,然后通过执行SQL语句来实现。该SQL语句如下:DELETEtb_infoWHERE(id=?)其中id字段的值将通过表单中的隐藏域字段进行传递,在Action处理类中可通过如下代码获取。StringdeleteID=request.getParameter("deleteID")最后执行该SQL语句更新数据表,完成信息删除操作。4.3.2信息显示的实现过程(1)在侧栏对应的right.jsp页面中编写实现显示方式的代码根据信息显示功能的介绍及信息显示的技术分析,在right.jsp页面中编写如下代码:<%@pageimport="java.util.Map,java.util.TreeMap"%><%@taglibprefix="s2"uri="/struts-tags"%><%MapcheckState=newTreeMap(); //用来存储“审核状态”中的选项checkState.put("1","已审核"); //Map对象的key值存储选项的值checkState.put("0","未审核");checkState.put("all","全部");MappayforState=newTreeMap(); //用来存储“付费状态”中的选项payforState.put("1","已付费"); //Map对象的key值存储选项的值,//value存储选项的标签payforState.put("0","未付费");payforState.put("all","全部");//将Map对象保存在request范围内,以便radio标签遍历该Map对象生成一组//单选按钮request.setAttribute("checkState",checkState);request.setAttribute("payforState",payforState); //同上%><s2:formaction="admin_ListShow.action?"theme="simple"><table><tr><tdcolspan="2"><fieldset><legend>★付费状态</legend><s2:radiolist="#request.payforState"name="showType.payforType"value="%{showType.payforType}"/></fieldset><fieldset><legend>★审核状态</legend><s2:radiolist="#request.checkState"name="showType.stateType"value="%{showType.stateType}"/></fieldset></td></tr><tr><td>信息类别:<s2:selectemptyOption="true"list="#session.typeMap"name="showTType"/><s2:submitvalue="显示"/></td></tr> </table></s2:form>……//省略了显示付费设置界面的代码(2)创建JavaBean:AdminShowType根据信息显示的技术分析,需要创建一个JavaBean来保存显示方式中的选择状态,实际上就是用来封装表单数据。关键代码如下:packagecom.yxq.model;publicclassAdminShowType{privateStringstateType; //保存审核状态privateStringpayforType; //保存付费状态privateintinfoType; //保存信息类别……//省略了属性的setXXX()与getXXX()方法}4.3.3信息审核的实现过程根据信息审核功能介绍,进行信息审核操作,需要先进入信息审核页面,显示被审核信息的详细内容,然后管理员通过单击“通过审核”按钮,完成信息审核操作。下面按照这个流程来介绍信息审核的实现过程。(1)在信息列表显示页面中实现进入审核页面的超链接在信息列表显示页面中提供了信息标题和“审核”超链接,单击超链接后即可进入信息审核页面。实现代码如下:<td><ahref="admin_CheckShow.action?checkID=<s2:propertyvalue='id'/>"><s2:propertyvalue="getSubInfoTitle(17)"/></a></td>……<td><ahref="admin_CheckShow.action?checkID=<s2:propertyvalue='id'/>">√审核</a></td>根据在cityinfo.xml文件中对admin_*.action的配置,上述代码实现的超链接被触发后,将由AdminAction类中的CheckShow()方法进行处理。(2)在AdminAction类中创建CheckShow()方法该方法用来显示被审核信息的详细内容。在该方法中,首先需要获取请求中传递的信息ID值,然后生成查询SQL语句,最后调用业务处理对象的OpSingleShow()方法返回封装信息的InfoSingle类对象。实现代码如下:/**功能:管理员操作-显示要审核的信息*/publicStringCheckShow(){request.setAttribute("mainPage","../info/checkshow.jsp");comebackState();//恢复在“显示方式”中选择的状态的方法Stringsql="SELECT*FROMtb_infoWHERE(id=?)";StringcheckID=request.getParameter("checkID");//获取传递的信息ID值if(checkID==null||checkID.equals(""))checkID="-1";Object[]params={checkID};OpDBmyOp=newOpDB();infoSingle=myOp.OpSingleShow(sql,params);//返回InfoSingle类对象if(infoSingle==null){ //信息不存在request.setAttribute("mainPage","/pages/error.jsp");addFieldError("AdminShowNoExist",getText("city.singleshow.no.exist"));}returnSUCCESS;}4.3.4信息付费设置的实现过程根据信息付费设置功能介绍,进行信息付费设置操作,需要先查询出要进行付费设置的信息,在页面中显示要进行付费设置信息的详细内容,然后管理员通过单击“设为付费”按钮,完成信息付费设置操作。实际上,信息付费设置的实现与信息审核的实现是相同的,只不过在查询被操作的信息时,信息审核操作的实现,是将要查询信息的ID值在超链接中传递,而信息付费设置需要管理员向表单中输入信息ID值,然后提交表单进行传递。下面介绍信息付费设置的实现过程。(1)在侧栏对应的right.jsp页面中编写实现付费设置页面的代码该编码要实现一个表单,在表单中提供一个文本输入框和一个提交按钮,文本框用来接收管理员输入的信息ID值[16]。实现代码如下:<!--设置已付费信息--><formaction="admin_SetMoneyShow.action"><tr><td><table><tr><td>请输入要设为已付费状态的信息ID:</td></tr><tr><td><inputtype="text"name="moneyID"value="${param['moneyID']}"size="24"/><inputtype="submit"value="查询"/></td></tr></table></td></tr></form>代码中${param['moneyID']}为JSP的EL表达式,它表示获取请求中名为moneyID的参数的值,也可以写成${param.moneyID}形式。根据在cityinfo.xml文件中对admin_*.action的配置,上述代码实现的表单被提交后,将由AdminAction类中的SetMoneyShow()方法进行处理。(2)在AdminAction类中创建SetMoneyShow()方法该方法用来显示要进行付费设置的信息的详细内容。在该方法中,首先需要获取通过表单传递的信息ID值,然后生成查询SQL语句,最后调用业务处理对象的OpSingleShow()方法返回封装信息的InfoSingle类对象。在此之前,需要验证是否输入了信息的ID值和ID值是否为数字格式,该验证可在validateSetMoneyShow()方法中实现,具体代码可查看本书附带光盘。SetMoneyShow()方法的关键代码如下:StringmoneyID=request.getParameter("moneyID"); //获取信息ID值Stringsql="SELECT*FROMtb_infoWHERE(id=?)"; //生成SQL语句Object[]params={moneyID};OpDBmyOp=newOpDB(); //创建业务对象infoSingle=myOp.OpSingleShow(sql,params); 第五章开发技巧与难点第五章开发技巧与难点(1)实现页面中的超链接虽然在应用Struts框架开发Web应用时,推荐使用Struts中提供的标签,但有些时候不妨灵活地使用原始的HTML语言中的一些标识。例如,在页面中实现一个超链接,链接请求的资源为welcome.jsp页面,若使用Struts2.0的a标签实现:<s2:ahref="<s2:urlvalue='/welcome.jsp'/>">转发</s2:a>则上述代码将生成如下HTML代码:<ahref="<s2:urlvalue='/welcome.jsp'/>">转发</a>所以该超链接请求的资源为<s2:urlvalue='/welcome.jsp'/>,很显然不是预期的效果。可以写为如下形式:<s2:ahref="welcome.jsp">转发</s2:a>但是,如果超链接请求的资源是动态改变的,或者传递的参数也是动态改变的,这时可以使用HTML语言中的标识来实现:<ahref="<s2:urlvalue="/welcome.jsp"/>">转发</a><ahref="welcome.jsp?name=<s2:urlvalue='yxq'/>">传参</a>则上述代码将生成如下HTML代码:<ahref="welcome.jsp">转发</a><ahref="welcome.jsp?name=yxq">传参</a>(2)Struts2.0中的中文乱码问题在Struts2.0中解决中文乱码的问题,可在perties文件中进行如下配置。struts.i18n.encoding=gb2312struts.i18n.encoding用来设置Web应用默认的编码,gb231
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安防初级考试试题及答案
- 淮安市人民医院神经遗传病基因报告解读考核
- 2025-2030智慧物业行业市场现状深度调研行业发展趋势研判投资前景预测分析报告
- 2025-2030智慧港口无人集装箱码头设备市场发展现状及应用前景分析报告
- 宁波市中医院颈椎手术并发症防治考核
- 2025-2030智慧法院信息化行业市场现状供需调研及投资预算未来发展规划报告书
- 2025-2030智慧楼宇系统开发应用行业前景调研报告
- 淮安市中医院老年医学创新能力考核
- 绥化市中医院呼吸科临床路径管理员岗位竞聘路径优化方案考核
- 厦门市中医院罕见病例PICC管理考核
- (2025年)书记员法律知识基础完整考试题库(含答案)
- 2025年河南省事业单位联考招聘公共基础知识综合练习题及答案
- 第2课《中国人首次进入自己的空间站》课件+2025-2026学年统编版语文八年级上册
- 中职物理题库及答案人教版
- 八年级主题班会
- 2025年医学影像技术招聘笔试题及答案
- 学校心理健康教育三年发展规划及实施方案(2025-2028年)
- 软件开发项目进展汇报
- 2025年杭州地铁考试题库
- 基因检测管理办法
- 战备码头管理办法
评论
0/150
提交评论