繁体中文
设为首页
加入收藏
当前位置:JSP技术首页 >> Java与XML >> 用Java实现可保存状态的数据库生成XML树(5)

用Java实现可保存状态的数据库生成XML树(5)

2004-10-01 08:26:10  作者:  来源:互联网  浏览次数:43  文字大小:【】【】【
简介:4.7.Servlet之间的通讯 从页面流程图上可以看到,是由多个页面实现从表单提交到创建SessionBean再到多桢页面实现XML树的流程,在这里流程中多个页面之间的通讯是由Session完成的. 首先在表单页面提交数据库查询语句...

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("Enter");

out.println("");

out.println("

Refresh......go to XMLServlet

");

}

在生成XML树的Servlet中也含有类似的代码,主要的功能是判断Session中是否存在已有的SessionBean的Home接口的句柄,有则读取该句柄,由此获得SessionBean中的结果集,生成和结果集对应的XML,相关的代码请参见附录中的源代码一节.

5. 需要改进的地方

5.1.不允许存在不含子节点的树杈,这样会使一些刚构造但尚未添加子叶子和子树杈的树杈,不能以节点的形式显示在界面上,只有添加了子节点才会显示出来

5.2.在实现上,每一个节点,不管是树杈或是叶子,它都只有一个父亲,如果多个模块中都存在功能一致,操作一致,界面一致的元素,那么在不同模块的树型结构里面就需要不同的节点记录。

责任编辑:admin
相关文章