正文

struts笔记(6)2008-04-02 18:59:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/ghlat520/33876.html

分享到:

第六章 使用DispatchAction控制器        1)使用DispatchAction控制器。可以让一个控制器执行几个相同或相似的操作,而不用写多个控制器        2)比如:一个注册表单同时有两个提交按钮。一个提交按钮用来检查用户名是否存在,一个提交按钮          用来执行注册功能,一般情况下会用两个控制器。但是可以通过DispatchAction来实现只用一个控           制器        3)实现DispatchAction的步骤:           1)创建一个Action此Action一定要继承自org.apache.struts.actions.DispatchAction           2)删除里面的Excute方法(一定要删除)           3)在里面加上若干个方法。其参数形式与Excute一样,只不过名字不一样            public ActionForward check(ActionMapping mapping, ActionForm form,   HttpServletRequest request, HttpServletResponse response)               {           在此执行check方法               }            public ActionForward register(ActionMapping mapping, ActionForm form,   HttpServletRequest request, HttpServletResponse response)               {           在此执行register方法               }             4)在struts-config.xml文件中。配置Action通过参数来决定执行那些方法               <action path="/MyDispatchAction" type="MyDispatchAction" parameter="method"/>               上面配置了一个parameter="method"表明Action会通过该参数的值调用对应的方法。也就是               此Action会根据method的值来决定调用那个方法。如果method的值是"check"则调用check方法               如果method的值是"register"则调用register方法             5)然后在jsp页面中增加method参数值                A)如果是post提交,则可以使用隐藏域来实现           <html:form action="MyDispatchAction.do">        <input type="hidden" name="method" value="register"/>        <html:text property="uid"/><html:submit onclick="method.value='check'"/>       <html:text property="pwd"/><br>        <html:submit onclick="method.value='register'">提交</html:submit>       </html:form>                 上面用了两个提交按钮,用了一个隐藏域。然后由提交按钮的单击事件中动态改变隐藏                 域的值               B:如果是get提交。则可以使用形如:        <a href="MyDispatchAction.do?action=check&uid=chen">检查</a>              <a href="MyDispatchAction.do?method=register&uid=chen">注册</a>                    注意get提交千万不能带有空格                      <a href="MyDispatchAction.do?action=check & uid=chen">检查</a>(错误错误)                                    应用举例:                        1)添加与修改(添加与修改经常会共用一个表单,所以可以使用DispatchAction                        2)检查用户名是否存在与注册                        3)一个按钮用于根据工号查询,一个按钮用于把查询之后的结果进行修改                         4)一个页面放入四个按钮。实现加减乘除                      第七章 使用struts中的tiles框架技术使用模板页               1)在开发Web应用程序时,常常要求同一个站点的所有Web页面保持一致的外观。比如                 ---------------------------------   | |          |             | |   header |                 | |-------------------------    |  Menu |   |   | |    content  |   | |         |   | |------------------------     | |   |   | | footer  |   | |   |   | |   |                 ---------------------------------              2)对同一个站点的所有页面,只有content部分的内容不同,如果采用基本的jsp语句来编  写所有web页面。显示会导致大量的重复编码,增加开发和维护成本,我们完全可以把                其中不变的部分定义为模板。以后只要使用模板就行了              3)struts中的tiles框架提供了这样一种模板页的实现方案              4)tiles具体实现步骤:                 A:做一个模板页。该模板页包括头,左边,顶边 model.jsp。                      注意:                          整个表格:800*600                          左边宽:20%                          右边宽:80%,高80%                          顶边高:10%                          底边高:10%                B:去掉其中的<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">的标记                C:在model.jsp中待插入内容页的地方用<tiles:insert attribute="content"/>标记指定                  待插入的内容,属性名为"content"   <tr>          <td width="80%" height="90%">***<tiles:insert attribute="content"/>****</td>    </tr>                D:创建一个内容页。注意一定要去掉其中的html标记与body标记。因为模板页中已经定义了     html标记。如果去掉了body标记不好排版。可以使用表格进行排版                  一般命名为:XXXContent.jsp。比如:workerAddContent.jsp。如果有样式则要取一个                  不同于其它的样式的别名                E:把内容页与模板页合在一起做成一个组件                   1)在WEB-INF下面创建一个xml配置文件。取名为tiles-defs.xml                   2)写在如下内容:                        <?xml version="1.0" encoding="UTF-8"?>                          <!DOCTYPE component-definitions PUBLIC "-//Apache Software                           Foundation//DTD Tiles Configuration 1.1//EN" "tiles-config_1_1.dtd" >            <component-definitions> //定义多个definitions组件               <definition name="add-defin" path="/model.jsp"> //这是模板页                     <put name="content" value="addContent.jsp"/>                         //name的值一定要与模板页中定义的<tiles:insert attribute="content"/>一致                         //value写上内容页                </definition>                      .....               <definition name="XXX" path="/XXX.jsp"> 定义多个组件                     <put name="XXX" value="XXX.jsp"/>                         //name的值一定要与模板页中定义的<tiles:insert attribute="content"/>一致                         //value写上内容页                </definition>                               </component-definitions>                    3)在struts-config.xml中配置           </plug-in>            <plug-in className="org.apache.struts.tiles.TilesPlugin">            <set-property property="definitions-config"  value="/WEB-INF/tiles-defs.xml"/>                                                                //此处的名字一定要与前同创建的                                                                //tiles-defs配置文件名一致           </plug-in>            4)在结果页中:                     <%@ page contentType="text/html; charset=gb2312" language="java"                                  import="java.sql.*" errorPage="" %>                     <%@ taglib uri="http://struts.apache.org/tags-tiles"  prefix="tiles" %>                     <tiles:insert definition="add-defin"  />                                               //此处的名字一定要与在tiles-defs中定义的组件                                               //name保持一致

阅读(3018) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册