首页 电脑学院 黑客教程 网站技术 网页特效 免费论文 公文写作 演讲发言 实用文档 职场指南 时尚生活 情感男女 其他资讯

您的位置:首页-> 网站技术-> JSP技术-> 用Java实现可保存状态的数据库生成XML树(4)
用Java实现可保存状态的数据库生成XML树(4)
4.5.构造生成点击树型XMl显示详细节点内容的Servlet
  在点击树的树杈节点时,会使当前点击节点发生变化,这种变化会要反映到节点的详细状态信息显示上,这种页面之间的通讯在这里是通过改变cookie中的点击对象的值来传递的,使用这种方式的原因有:
一,处理反应快,因为只是对客户端的cookie进行一些简单的读写操作,避免了一些较为烦琐,耗时的通讯和服务器处理过程;
二,对点击的安全性要求不高,点击对象是显式操作的,没有敏感的客户信息和服务器信息,所以是可以保存在客户端的cookie中的;
三,代码编写,维护较为简单,在点击页面中只是需要用javascript把点击对象写入cookie中,再刷新节点详细显示页面即可,在节点详细显示页面也只是节点向服务器重新请求一次该页面;
实现节点详细信息的页面的主体仍是由XMLServlet生成的XML树,实现XSL模版的是Servlet XMLTreeXSL,该XSL主要是在XML提取符合要求的节点,显示节点的详细信息,并把节点的最近子节点的详细信息显示出来,确认符合要求的节点是通过提取客户端浏览器cookie中的点击对象记录得到的.所以该Servlet完成两部分任务,读取浏览器cookie然后书写XSL.下面是对该Servlet代码的主要分析:

/**读取cookie和书写XSL*/
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            try{
                /**确认有XML树需要进行模版转换,通过Session中是否含有Sessionbean来确认*/
                HttpSession session=request.getSession();
                if  ( session.getAttribute("ResultEditHandle")==null) {
                        flag=false;
                    }
                    else {
                        flag=true;
                    }
                    if (flag) {
                    /**cookie中可能含有多个子cookie信息,用一个数组保存多个cookie*/
                    javax.servlet.http.Cookie cookies[] = request.getCookies();
                    String t_click_id = null;
                        /**书写XSL还需要遵循XML书写规范,标签要一一对应*/
                        response.setContentType(CONTENT_TYPE);
                        out = response.getWriter();
                        out.println(CONTENT_XSL);
                        out.println("<xsl:template match=\"/\">");
                        out.println("<HTML>");
                        out.println("<HEAD><STYLE>body{FONT-SIZE: 10pt;}</STYLE></HEAD>");
                        /**select=”//node”是对所有的node进行访问,而不仅仅局限于顶层的node*/
                        out.println("<BODY><xsl:apply-templates select=\"//node\"/></BODY></HTML></xsl:template>");
                        if ((cookies == null)||(cookies.length == 0)){
                            out.println("No Clicked Node");
                        }
                        /**cookie不为空且子cookie的个数不为零,遍历cookie*/
                        else {
                            for(int i = 0;i < cookies.length; i++){
                                javax.servlet.http.Cookie c =cookies[i];
                                /**当遍历的子cookie的名称为ClickId时书写XSL*/
                                if ( c.getName().equals("ClickId")){
                                    /**t_click_id的值为点击对象的id*/
                                    …


4.6.Servlet调用的Session Bean的构造
XML树是从数据库中得到相应结果集而构造的,这个结果集如果不采用EJB的方式可以用ResultSet来完成,但是如果考虑采用EJB来做,那么就需要放弃使用ResultSet,因为它是不可序列化,不能直接为EJB所用,使用RowSet或者CachedRowSet这些可序列化的结果集对象来实现.
这里构造的SessionBean是有状态的,需要构造的有远程接口,home接口和bean类.
远程接口, ResultEdit.java
home接口, ResultEditHome.java
bean类, ResultEditBean.java
对如何实现bean类进行详细描述,

public class ResultEditBean implements SessionBean {
    /**Session容器定义*/
private SessionContext sessionContext;
    public int id;
    public String name;
    /**结果集定义,定义结果集类型为sun.jdbc.rowset.CachedRowSet*/
    private CachedRowSet crset=null;
/**容器定义*/
private Context ctx = null;
/**数据源定义*/
private DataSource ds = null;
    /**构造函数*/
public ResultEditBean() {
    }
    /**EJB创建,该方法是每个EJB定义都必须有,方法里面包含EJB的创建过程*/
    public void ejbCreate() {
           try {
            /**容器初始化*/
               ctx = new InitialContext();
            /**从容器获得DataSource名称为imis的实例*/
            ds = (DataSource)ctx.lookup("java:comp/env/imis");
           }
        catch (Exception e) {
               System.out.println("ejbCreate failed:"+e.getMessage());
               e.printStackTrace();
        }
   }
        
   /**以下几个ejb开头的方法是构造EJB时必须的,分别处理着相应的事件*/
   public void ejbRemove() throws RemoteException {
   }
   public void ejbActivate() throws RemoteException {
   }
   public void ejbPassivate() throws RemoteException {
   }
   public void setSessionContext(SessionContext sessionContext) throws RemoteException {
           this.sessionContext = sessionContext;
   }
    /**getRowSet()返回私有成员crset,该方法在远程接口中有定义*/
   public RowSet getRowSet() throws SQLException {
          return crset;
   }
    /**setRowSet(String sqlExp)通过定义好的数据源连接数据库,并用查询语句获得结果集*/
   public RowSet setRowSet(String sqlExp) throws SQLException {
           Connection con = null;
           try {
               con = ds.getConnection();
               Statement stmt = con.createStatement();
               ResultSet rs =  stmt.executeQuery(sqlExp);
               CachedRowSet t_crset = new CachedRowSet();
               t_crset.populate(rs);
               rs.close();
               stmt.close();
               crset = t_crset;
               return t_crset;
           }
           finally {
               if (con != null) con.close();
           }
   }
SessionBean在附录中有完整的代码和EJB发布的完整过程.
 

在百度中查找更多用Java实现可保存状态的数据库生成XML树(4)的内容
职场宝典   职场故事   职场跳槽   职场文化   职场理财   职场充电   情感天地   职场女性   职场礼仪   职场新人
报告总结   述职报告 工作总结 调查报告 工作汇报 计划方案 个人总结 社会实践 规章制度 调研报告 
  实习报告 考察报告 辞职报告 
演讲发言   竞职演说   就职演说   精彩演说   爱国演讲   英语演讲   十七大演讲   安全生产演讲稿   
节日祝福   重阳节 国庆节 教师节 中秋节 情人节 七夕节 劳动节 妇女节 清明节 愚人节 春节 元旦 圣诞节  儿童节  端午节 母亲节 新婚祝福 生日祝福 
讲话致辞   开业开幕   会议主持   庆典致辞   会议发言   党风廉政   党政报告   贺电慰问   婚丧嫁娶   思想宣传
法律常识   基本常识   法律文书   权益常识   劳动保障   婚姻继承   民事诉讼   刑事诉讼   
党建材料   入党申请   思想学习   党性分析   思想汇报   转正申请   民主生活   党委党建   入团申请   申报材料
求职简历   个人简历   求职自荐   求职谋略   面试技巧   求职英语   自我鉴定   英文简历   简历封面
心得体会   心得体会   经验交流   读后感   
时政热点   和谐社会   先进性教育   新农村建设   十七大   八荣八耻   科学发展观   劳动合同法   
人际沟通   社交技巧   社交礼仪   口才技巧   谈话技巧   演讲技巧   
营销技巧   电话销售   网络销售   推销技巧   促销技巧   销售口才   营销手段   销售技巧   谈判技巧   

“ 用Java实现可保存状态的数据库生成XML树(4)”来源于网络,版权归作者所有!勿用于商业用途。

JSP技术

ASP技术
PHP技术
JSP技术
.NET技术
服务器技术
数据库开发
其它类

本类阅读TOP10

·Struts实践入门(原创)
·tomcat配置手册(server.xml)——中文版
·MySQL的JDBC驱动程序下载地址
·一个log4j的学习笔计
·DOM文档操作和XML文件互相转换的java实现 (转贴)
·JAVA几个常见错误简析
·HttpServletRequest, ServletRequest, request
·JBOSS中,中文问题的彻底解决
·JSP传递参数方法
·ORACLE ORA-00600错误的阐述

广告


关于本站|服务条款|广告服务|客服中心|发布文章|网站留言