欢迎光临
我们一直在努力

用Java实现可保存状态的数据库生成XML树(5)-JSP教程,Java与XML

建站超值云服务器,限时71元/月

4.7.servlet之间的通讯
从页面流程图上可以看到,是由多个页面实现从表单提交到创建sessionbean再到多桢页面实现xml树的流程,在这里流程中多个页面之间的通讯是由session完成的.
首先在表单页面提交数据库查询语句,由一个中转servlet完成生成结果集,把sessionbean的句柄放入session中,再跳转到多桢页面,由xmlservlet从session中获得sessionbean的句柄,由此得到结果集,生成含有层次关系的xml.
当点击生成的xml树时,需要把点击的节点对象的详细信息显示在另外一个桢内,这两个桢其实对应的也是两个servlet,它们之间的通信,部分采用session,部分采用cookie.显示节点详细信息的桢的主体是仍是servlet生成的xml,和生成树状xml的servlet完全一样,要关联的显示被点击节点的详细信息,是在于xsl模版的节点对象变量传递,如何在xsl中实现详细显示已在前面阐明,这里对其节点对象变量传递进行描述.
还有节点后出现的修改桢,其变化的实质类于详细显示节点信息的桢,主要的区别在xsl的模版html实现一节有所变化.
主要针对中转servlet的实现的过程作详细描述:
public class refreshservlet extends httpservlet {
    printwriter out;
        resultedit re;
        private static final string content_type = "text/html";
        private object ref;
        private static string querysql = null;
        private static string hostip = null;
        private static string hostport = null;

        public void service(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {
            try{
            response.setcontenttype(content_type);
                    out = response.getwriter();
                    /**判断session是否存在,不存在则新建一个session*/
                    httpsession session=request.getsession(true);
                /**获得提交的表单中的查询语句,和应用服务器的ip和port,保存到相应的变量中*/
                if (request.getmethod().equals("post")){
                    querysql = request.getparameter("sql");
                    hostip = request.getparameter("ip");
                    hostport = request.getparameter("port");
                /**调用getinitialcontext(ip,port)方法得到应用服务器的一个初始容器*/
                    context ctx =getinitialcontext(hostip,hostport);
                        /**从容器中得到sessionbean*/
                        ref = ctx.lookup("resultedit");
                        /**获得sessionbean的home接口*/
                        resultedithome home = (resultedithome) portableremoteobject.narrow(ref, resultedithome.class);
                        /**创建home接口的实例*/
                        re = home.create();
                        /**调用接口的中定义的方法*/
                        re.setrowset(querysql);
                        /**在session中保存sessionbean的home接口的句柄*/
                        session.setattribute("resultedithandle",re.gethandle());
                }
                        /**判断session中是否存在sessionbean的home接口的句柄,有则准备跳转到生成xml树的servlet,否则跳转到表单提交页面*/
                        if (session.getattribute("resultedithandle")!=null){
                        out.println("<html><head><title>enter</title><meta http-equiv=refresh content=2;url=/xmltree/index.html/></head>");
                        out.println("<body>");
                        out.println("<p><p><p><center>refresh……go to xmlservlet</center></p></p></p></body></html>");
                    }
                    …
在生成xml树的servlet中也含有类似的代码,主要的功能是判断session中是否存在已有的sessionbean的home接口的句柄,有则读取该句柄,由此获得sessionbean中的结果集,生成和结果集对应的xml,相关的代码请参见附录中的源代码一节.

5.    需要改进的地方
5.1.不允许存在不含子节点的树杈,这样会使一些刚构造但尚未添加子叶子和子树杈的树杈,不能以节点的形式显示在界面上,只有添加了子节点才会显示出来
5.2.在实现上,每一个节点,不管是树杈或是叶子,它都只有一个父亲,如果多个模块中都存在功能一致,操作一致,界面一致的元素,那么在不同模块的树型结构里面就需要不同的节点记录。
 

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 用Java实现可保存状态的数据库生成XML树(5)-JSP教程,Java与XML
分享到: 更多 (0)

相关推荐

  • 暂无文章