建立复合页面的四种方法

 

1、使用JSP页面的包含命令建立

(1)建立复合页面的各个部分header.jsp,menu.jsp,contentIndex.jsp,footer.jsp

(2)将各个页面包含进来,其中file指定页面要包含的文件

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

    <head>

       <title>产品信息反馈平台</title>

    </head>

    <body>

       <div align="center">

           <table border="0">

              <tr align="center">

                  <td><%@ include file="header.jsp" %></td>

              </tr>

              <tr align="right">

                  <td><%@ include file="menu.jsp" %></td>

              </tr>

              <tr align="center">

                  <td><%@ include file="contentIndex.jsp" %></td>

              </tr>

              <tr align="center">

                  <td><%@ include file="footer.jsp" %></td>

              </tr>

           </table>

       </div>

    </body>

</html>

 

2、使用tiles标签来建立

(1)建立复合页面的各个部分header.jsp,menu.jsp,contentIndex.jsp,footer.jsp

(2)将各个页面包含进来,这种方法使用了Tiles标签

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>

<html>

    <head>

       <title>产品信息反馈平台</title>

    </head>

    <body>

       <div align="center">

           <table border="0">

              <tr align="center">

                  <td><tiles:insert page="header.jsp"/></td>

              </tr>

              <tr align="right">

                  <td><tiles:insert page="menu.jsp"/></td>

              </tr>

              <tr align="center">

                  <td><tiles:insert page="contentIndex.jsp"/></td>

              </tr>

              <tr align="center">

                  <td><tiles:insert page="footer.jsp"/></td>

              </tr>

           </table>

       </div>

    </body>

</html>

 

在使用<tiles:insert>标签之前需要完成以下过程:

[1]在项目的lib目录下引入下列jar包:struts.jar,commons-beanutils.jar,commons-digester.jsr,commons-logging.jsr

[2]   在web.xml文件中引入struts Tiles标签库

<taglib>

     <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>

     <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>

</taglib>

[3]   在页面中添加使用标签的语句

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>

 

3、利用Tiles标签和复合页面模板建立

(1)建立复合页面的各个部分header.jsp,menu.jsp,contentIndex.jsp,footer.jsp

(2)建立复合页面模板:basePage.jsp

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>

<html>

    <head>

       <title>产品信息反馈平台</title>

    </head>

    <body>

       <div align="center">

           <table border="0">

              <tr align="center">

                  <td><tiles:insert attribute="header"/></td>

              </tr>

              <tr align="right">

                  <td><tiles:insert attribute="menu"/></td>

              </tr>

              <tr align="center">

                  <td><tiles:insert attribute="content"/></td>

              </tr>

              <tr align="center">

                  <td><tiles:insert attribute="footer"/></td>

              </tr>

           </table>

       </div>

    </body>

</html>

 

<tiles:insert>标签的attribute属性来表示页面的各个部分,这些表示将在复合页面中被引用。

(3)建立复合页面

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>

<html>

    <head>

       <title>产品信息反馈平台</title>

    </head>

    <body>

       <tiles:insert page="basePage.jsp">

          <tiles:put name="header" value="menu.jsp"></tiles:put>

          <tiles:put name="menu" value="header.jsp"></tiles:put>

          <tiles:put name="content" value="contentIndex.jsp"></tiles:put>

          <tiles:put name="footer" value="footer.jsp"></tiles:put>

       </tiles:insert>

    </body>

</html>

 

页面首先使用<tiles:insert>标签引入模板页面,然后使用<tiles:put>标签引入各个独立的页面。这些<tiles:put>标签的顺序不起作用,可以随意排列,最终还是按照模板定义的位置来决定页面的显示。

4、利用Tiles框架来建立

(1)建立复合页面的各个部分header.jsp,menu.jsp,contentIndex.jsp,footer.jsp

(2)建立复合页面模板:basePage.jsp

(3)建立配置文件tiles-defs.xml

 

<?xml version="1.0" encoding="UTF-8" ?>

<tiles-definitions>

    <definition name="index" path="/basePage.jsp">

       <put name="header" value="header.jsp"/>

       <put name="menu" value="menu.jsp"/>

       <put name="content" value="contentIndex.jsp"/>

       <put name="footer" value="footer.jsp"/>

    </definition>

</tiles-definitions>

 

代码说明:

[1] 复合页面的定义通过<definition>标签完成,页面的引用通过name属性值完成

[2] 可以定义多个复合页面,这些定义包含在<tiles-definitions>标签内部

(4)在struts-config.xml文件中配置上述文件,引入Tiles插件

 

<plug-in className="org.apache.struts.tiles.TilesPlugin">

<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml"/>

</plug-in>

 

(5)若在struts-config.xml文件中使用自定义的RequestProcessor,该RequestProcessor需要继承自TilesRequestProcessor,否则Web启动时会出错,不能引入Tiles插件。

 

<controller processorClass="com.struts.EncodingProcessor"/>

 

public class EncodingProcessor extends TilesRequestProcessor {

     public void process(HttpServletRequest request,

HttpServletResponse response)

               throws IOException, ServletException {

         request.setCharacterEncoding("UTF-8");

         response.setContentType("text/html;charset=UTF-8");

         super.process(request, response);

     }

}

 

(6)建立复合页面

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>

<html>

    <head>

       <title>产品信息反馈平台</title>

    </head>

    <body>

       <div align="center">

           <tiles:insert definition="index"></tiles:insert>

       </div>

    </body>

</html>

 

总结:前两种方法基本类似,都是在复合页面中用命令或标签引入各个独立的页面,但是当复合页面的形式发生变化的时候,需要每个页面分别进行调整。第三种方法可以解决这个问题,先建立一个复合页面的模板页面,然后按照模板的定义引入各个页面,一旦需要修改所有的复合页面,只需要修改模板即可。第四种方法将每个复合页面的Tiles标签几种卸载一个配置文件中,既减少了复合页面中的代码量,也使得代码维护更加方便。

你可能感兴趣的:(建立复合页面的四种方法)