querytag.java~7~

来自「采用web2.0技术,采用动态标签,sql语句全部存储在数据库里面.开发速度快.」· JAVA~7~ 代码 · 共 244 行

JAVA~7~
244
字号
package com.sztheater.web.taglib;
import java.text.DateFormat;
import javax.servlet.jsp.*;
import javax.servlet.http.*;
import javax.servlet.jsp.tagext.*;
import java.io.*;
import java.util.*;
import com.sztheater.framework.util.*;

public class QueryTag extends BodyTagSupport {
        private static HashMap m_cache_cond = null;


        /*属性变量信息*/
        private String   m_func_id   = null ; //执行业务名
        private String   m_action_id = null ; //执行动作
        private String   var         = "q"  ;
        private String   m_para_set  = null ; //参数压入的集合名
        private String   m_params    = null ; //希望从request中取得值的参数名称,以;分隔
        private String   m_nonempty  = null ; //非空参数,如果存在空,则execute=false
        private String   m_cond      = null ;//条件值对
        private boolean  m_execute   = true ; //外界控制是否执行
        private boolean  m_trace_flag= false; //跟踪标志

        private boolean  m_save_cond = false; //是否保存条件到session中

        private int      m_page_size   = 0    ; // page size
        private int      m_page_no     = 0    ;
        /*自身变量信息*/
        private HashMap     hashPara    = null ;
        private ValueObject sendPack    = null ;
        private ValueObject recvPack    = null ;

        private int      iSuccFlag   = 0    ;


        public QueryTag() {
                super();
                init();

        }
        public void init() {
                m_execute    = true;
                m_trace_flag = false;
                m_save_cond  = false;
                var          = "q";

                CommFunc.freeObj(hashPara);
                hashPara     = null;
        }
        public void release() {
                init();
        }
        public void saveQueryCond(HashMap hashPara){
                HttpServletRequest _httpRequest  = null;

                HttpSession _httpSession = null;
                HashMap     hashCond     = null;
                String      jsp_file     = null;
                Object      obj          = null;
                boolean     bRefresh     = false;
                String      sRefresh     = null;
                String     s_session_id  = null;
                if(m_save_cond || hashPara==null) return ;

                _httpSession = pageContext.getSession();
                _httpRequest = (HttpServletRequest)pageContext.getRequest();
                jsp_file     = _httpRequest.getRequestURI();

                if(_httpSession==null || jsp_file==null) return ;


                s_session_id = _httpSession.getId();
                hashCond     = null;
                obj          = _httpSession.getAttribute(jsp_file);
                if(obj!=null && obj.getClass().getName().equals("java.util.HashMap")){
                        hashCond = (HashMap)obj;
                }

                sRefresh  = CommFunc.getValue(hashPara,"REFRESH_LIST" ,"" ,true);
                if(sRefresh.equals("1") || sRefresh.equals("true")){
                        bRefresh = true;
                }
                if(bRefresh){
                        CommFunc.freeObj(hashPara);
                        if(hashPara!=null) hashPara.clear();
                        CommFunc.copyData( hashCond,hashPara);
                        return ;
                }
                _httpSession.removeAttribute(jsp_file);
                CommFunc.freeObj(hashCond);
                if(hashCond!=null) hashCond.clear();
                hashCond = null;
                _httpSession.setAttribute(jsp_file,hashPara);
        }
        public int doStartTag() throws JspException {
                /*变量定义*/
                HttpServletRequest _httpRequest  = null;

                HashMap    hashUser     = null;
                HashMap    hashCond     = null;
                boolean    bRefresh     = false;
                String     sRefresh     = null;
                String     str_expr     = null;

                HttpSession _httpSession = null;

                /*初始化变量*/
                hashPara  = null;;

                try {
                        /*清空信息*/
                        _httpRequest = (HttpServletRequest)pageContext.getRequest();
                        if(_httpRequest==null) return EVAL_PAGE;
                        _httpRequest.removeAttribute(var);
                        if(m_func_id!=null && m_func_id.equals("sysdate")){
                                if(m_action_id==null || m_action_id.equals("")) m_action_id="yyyy-mm-dd";
                                //str_expr = FuncTag.getSysDate(m_action_id);
                                _httpRequest.setAttribute(var ,str_expr);
                                return EVAL_PAGE;
                        }

                        hashPara = FuncTag.getValues(m_cond);
                        if(hashPara==null) hashPara = new HashMap();
                        //FuncTag.getRequestParameters(pageContext,hashPara,m_params,null);
                        //m_execute = FuncTag.judgeNoEmpty(hashPara,m_nonempty);

                        if(!m_execute) {
                                return EVAL_PAGE;
                        }
                        saveQueryCond(hashPara);

                        m_func_id= m_func_id.trim();

                        if(sendPack==null) sendPack = new ValueObject();
                        if(m_para_set==null) m_para_set = "data_list";
                        m_para_set   = m_para_set.trim();
                        sendPack.putParam(hashPara);

                        if(this.m_page_size>0){
                                sendPack.putParam("PAGE_SIZE",String.valueOf(this.m_page_size));
                        }
                        /*从Session中取得登录用户信息*/
                        _httpSession = pageContext.getSession();
                        if(_httpSession!=null){
                                hashUser = (HashMap)_httpSession.getAttribute("userinfo");
                        }
                        if(hashUser!=null) {
                                sendPack.setUser(hashUser);
                        }
                        //设置执行的功能与动作
                        sendPack.setFuncID  (m_func_id   );
                        sendPack.setActionID(m_action_id );

                        recvPack  = new ValueObject();
                        //iSuccFlag = SysCall.execute(sendPack,recvPack);
                        _httpRequest.setAttribute(var ,recvPack);
                }catch(Exception e){
                        System.out.println("执行【"+m_func_id+"】异常"+e.getMessage());
                }
                return EVAL_PAGE;
        }
        public int doEndTag() throws JspException {
                JspWriter    jspWriter = null;
                StringBuffer sbTrace   = null;
                try {
                        //数据检验
                        jspWriter = pageContext.getOut();
                        if (jspWriter==null || !m_execute) return EVAL_PAGE;
                        if(m_trace_flag) {
                                sbTrace   = new StringBuffer("");
                                sbTrace.append("<table>\n");
                                if(recvPack!=null){
                                        sbTrace.append("<tr><td>发送:</td>\n<td><textarea rows=\"4\" name=\"QueryTag_RECV\" cols=\"85\">");
                                        sbTrace.append("iSuccFlag="+iSuccFlag+"\n" );
                                        sbTrace.append(recvPack.getXml());
                                        sbTrace.append("</textarea></td></tr>\n");
                                }
                                if(sendPack!=null){
                                        sbTrace.append("<tr><td>接收:</td>\n<td><textarea rows=\"4\" name=\"QueryTag_Send\" cols=\"85\">");
                                        sbTrace.append(sendPack.getXml());
                                        sbTrace.append("</textarea></td></tr>" );
                                }
                                sbTrace.append("</table>");
                                jspWriter.print(sbTrace.toString());
                        }
                }catch(Exception e){
                        System.out.println("执行【"+m_func_id+"】异常"+e.getMessage());
                }finally{
                        init();
                        if(iSuccFlag<0) {
                                if(sendPack!=null) sendPack.free();
                                sendPack     = null;
                        }
                        if(sbTrace!=null){
                                sbTrace.delete(0,sbTrace.length());
                                sbTrace.setLength(0);
                        }
                        sbTrace = null;
                }
                if(sendPack!= null) sendPack.free();
                sendPack    = null;
                return EVAL_PAGE;
        }
        //变量名称
    public void setVar(String var) {
                this.var = var;
    }
    //执行功能号
    public void setFunc_id(String func_id) {
                this.m_func_id = func_id;
    }
    //执行动作
    public void setAction_id(String action_id) {
                this.m_action_id = action_id;
    }
        //外界控制是否执行
    public void setExecute(boolean bExecute) {
                this.m_execute = bExecute;
    }
    //外界控制是否执行
    public void setTrace_flag(boolean trace_flag) {
                this.m_trace_flag = trace_flag;
    }
    //非空的参数名
    public void setNonempty(String nonempty) {
                this.m_nonempty = nonempty;
    }
    //每页显示数据行数
    public void setPageSize(int iPageSize) {
                this.m_page_size = iPageSize;
    }
    //参数压入的集合名
    public void setPara_set(String para_set) {
                this.m_para_set = para_set;
    }
    //设置参数
    public void setCond(String s_cond) {
                this.m_cond = s_cond;
                if(this.m_cond==null || this.m_cond.trim().equals("")) this.m_cond = null;
    }

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?