JSP自定义标签(二) 联想查询

普元EOS RichWeb(富客户端)实践总结     最近公司未来一银行项目要使用到普元的EOS,客服是普元合作机构,没办法,必须将系统在EOS平台上部署开发,认真学习了2个星期,对EOS6.0的印象还是非常的好。丰富的页面开发组件,SOA我不是特别特别的说的出来,看了SOA相关文档和对比传统的开发模式,EOS的思想非常值得学习,EOS里面的组件设计,能更好的增加代码的可重复性,模块的独立性,这对于一个大型银行系统来说,所带来的好处不言而喻。 阅读详情


一、效果图

下拉框中的内容为查询结果


二、标签定义代码


package com.moonNigh.tagSupport;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

/**
 *
 * @author HHB
 *
 *  联想查询自定义标签标签处理类
 *
 */
public class AssociateQueryTag extends TagSupport {

    private static final long serialVersionUID = 1164199147616542853L;
    // 标签name树形
    private String name;
    //引用JavaScript代码的路径
    private String scriptPaht;
    //引用的CSS的路径
    private String cssPath;
    //项目根路径
    private String rootPath;
    
    //标签value属性
    private String value;
    private String text;
    
    /*
     * 标签的actionUrl属性
     * 联想查询结果数据通过向actionUrl属性指定的url请求得到
     */
    private String actionUrl;
    private int startLeng;
    
    public int getStartLeng() {
        return startLeng;
    }
    public void setStartLeng(int startLeng) {
        this.startLeng = startLeng;
    }
    private HttpServletRequest request=null;
    
    
    public String getActionUrl() {
        return actionUrl;
    }
    public void setActionUrl(String actionUrl) {
        this.actionUrl = actionUrl;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
    public String getScriptPaht() {
        return scriptPaht;
    }
    
    public void setScriptPaht(String scriptPaht) {
        this.scriptPaht = scriptPaht;
    }
    public String getCssPath() {
        return cssPath;
    }
    
    public void setCssPath(String cssPath) {
        this.cssPath = cssPath;
    }
    
    
    public String getText() {
        return text;
    }
    public void setText(String text) {
        this.text = text;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public AssociateQueryTag()
    {
        
    }
    
    
    /**
     * 初始化变量
     */
    private void initAbttributes()
    {
        request=(HttpServletRequest)this.pageContext.getRequest();
        rootPath=request.getContextPath();
        this.scriptPaht="/js/";
        this.cssPath="/css/";
        
    }
    @Override
    public int doStartTag() throws JspException {
        initAbttributes();
        JspWriter out=pageContext.getOut();
        try {
            String tName=name;
            //引入javascript文件
            //<script type='text/javascript' src='../../js/jquery/jquery-1.4.2.min.js'></script>
            out.println("<script type='text/javascript' charset='UTF-8' src='"+rootPath+"/js/"+"jquery-1.3.2.js'></script>");
            out.println("<script type='text/javascript' charset='UTF-8' src='"+rootPath+scriptPaht+"associater.js'></script>");
            out.println("<script type='text/javascript' charset='UTF-8' src='"+rootPath+scriptPaht+"autoComplete.js'></script>");
            //引入css文件
            out.println("<link rel='stylesheet' href='"+rootPath+cssPath+"selector.css' type='text/css' />");
            //文本输入框
            StringBuilder tag=new StringBuilder("<input type='text' ");
            tag.append("id='").append(id).append("'");
            tag.append(" value='").append(text==null?"":text).append("' autocomplete='off'");
            tag.append(" onkeyup='return queryInfo(").append(startLeng).append(",\"");
            //tag.append(id).append("\",\"").append(path).append("\")'>");
            tag.append(id).append("\",\"").append(actionUrl).append("\")'>");
            //隐藏的用于保存选择结果值的标签
            tag.append("<input type='hidden' name='")
            .append(tName).append("' id='").append(id).append("_value")
            .append("' value='").append(value==null?"":value).append("'>");
            out.println(tag.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return SKIP_BODY;
    }
    
    
}



三、JS代码:associater.js


function closeHandler(cal) {
  cal.hide();                        // hide the selector
}
/*
function selected(cal, date) {
 
}
*/

/*
 * 联想查询文本框输入时触发事件
 */
function queryInfo(starLen,id,path)
{
    var t = '';
    clearTimeout(t);
    t = setTimeout("query("+starLen+",'"+id+"','"+path+"')",500);
    return null;
}
function query(starLen,id,path)
{
    var selector=null;
    var textBox=document.getElementById(id);
    var text=textBox.value;
    if(text.length>=starLen)
    {
        showAssociater(id,path);
        var selector=window["asso_"+id];
        $.get(path,{"para":text}, function(data,status){
            var parentNode=selector.element;
            while(parentNode.hasChildNodes())
            {
                parentNode.removeChild(parentNode.firstChild);
            }
            assoXmlParser(data,parentNode,id);
        });
    }
}
/*
 * 显示下拉框
 */
function showAssociater(id,path) {
  var selector=window["asso_"+id];
  var el = document.getElementById(id);
  if (selector) {
    // we already have some selector created
    //selector.hide();                 // so we hide it first.
  } else {
    // first-time call, create the selector.
    var selec = new Associater();
    selec.textId=id;
    selec.id="asso_"+id;
    selec.valueId=id+"_value";
    selec.path=path;
    // uncomment the following line to hide the week numbers
    // cal.weekNumbers = false;
    selector = selec;                  // remember it in the global var
    selec.create();
  }
  selector.sel = el;                 // inform it what input field we use

  // the reference element that we pass to showAtElement is the button that
  // triggers the selector.  In this example we align the selector bottom-right
  // to the button.
  selector.showAtElement(el, "Bl");        // show the selector
  return false;
}

Associater = function () {
    // member variables
    this.activeDiv = null;
    this.timeout = null;
    this.dragging = false;
    this.hidden = false;
    this.isPopup = true;
    // HTML elements
    this.element = null;
    this.containFrame=null;
    this.textId=null;
    this.id=null;
    this.valueId=null;
    this.path=null;
}
Associater.is_ie = ( /msie/i.test(navigator.userAgent) &&!/opera/i.test(navigator.userAgent) );
Associater.getAbsolutePos = function(el) {
    var r = { x: el.offsetLeft, y: el.offsetTop };
    if (el.offsetParent) {
        var tmp = Associater.getAbsolutePos(el.offsetParent);
        r.x += tmp.x;
        r.y += tmp.y;
    }
    //alert(r.x+":"+r.y);
    
    return r;
};
Associater.isRelated = function (el, evt) {
    var related = evt.relatedTarget;
    if (!related) {
        var type = evt.type;
        if (type == "mouseover") {
            related = evt.fromElement;
        } else if (type == "mouseout") {
            related = evt.toElement;
        }
    }
    while (related) {
        if (related == el) {
            return true;
        }
        related = related.parentNode;
    }
    return false;
};
Associater.removeClass = function(el, className) {
    if (!(el && el.className)) {
        return;
    }
    var cls = el.className.split(" ");
    var ar = new Array();
    for (var i = cls.length; i > 0;) {
        if (cls[--i] != className) {
            ar[ar.length] = cls[i];
        }
    }
    el.className = ar.join(" ");
};
Associater.addClass = function(el, className) {
    Associater.removeClass(el, className);
    el.className += " " + className;
};
Associater.createElement = function(type, parent) {
    var el = null;
    if (document.createElementNS) {
        // use the XHTML namespace; IE won't normally get here unless
        // _they_ "fix" the DOM2 implementation.
        el = document.createElementNS("http://www.w3.org/1999/xhtml", type);
    } else {
        el = document.createElement(type);
    }
    if (typeof parent != "undefined") {
        parent.appendChild(el);
    }
    return el;
};
/** Calls the second user handler (closeHandler).
 * 添加事件
 *  */

Associater.addEvent = function(el, evname, func) {
    if (el.attachEvent) { // IE
        el.attachEvent("on" + evname, func);
    } else if (el.addEventListener) { // Gecko / W3C
        el.addEventListener(evname, func, true);
    } else { // Opera (or old browsers)
        el["on" + evname] = func;
    }
};
Associater.stopEvent = function(ev) {
    if (Associater.is_ie) {
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    } else {
        ev.preventDefault();
        ev.stopPropagation();
    }
    return false;
};
/*
 * 删除事件
 */
Associater.removeEvent = function(el, evname, func) {
    //alert(el.detachEvent);
    if (el.detachEvent) { // IE
        el.detachEvent("on" + evname, func);
    } else if (el.removeEventListener) { // Gecko / W3C
        el.removeEventListener(evname, func, true);
    } else { // Opera (or old browsers)
        el["on" + evname] = null;
    }
};
Associater.prototype.create = function (_par) {
    var parent = null;
    if (! _par) {
        // default parent is the document body, in which case we create
        // a popup selector.
        parent = document.getElementsByTagName("body")[0];
        this.isPopup = true;
    } else {
        parent = _par;
        this.isPopup = false;
    }
    var div = document.createElement("div");
    /*
    var selectIframe = Associater.createElement("iframe");
    selectIframe.style.width="100%";
    selectIframe.style.height="100%";
    selectIframe.style.display="block";
    selectIframe.scrolling="auto";
    selectIframe.style.border="0px";
    selectIframe.id=this.textId+"_frm";
    this.containFrame=selectIframe;
    //selectIframe.style.border="1px";
    selectIframe.src=this.path;
    var span=document.createElement("span");
    span.innerHTML="test";
    //div.appendChild(span);
    this.frame=selectIframe;
    div.appendChild(selectIframe);
    */
    this.element = div;
    div.className = "selector";
    if (this.isPopup) {
        div.style.position = "absolute";
        div.style.display = "none";
    }
    parent.appendChild(this.element);
};
Associater.prototype.destroy = function () {
    var el = this.element.parentNode;
    el.removeChild(this.element);
    Associater._C = null;
};

/**
 *  Hides the Associater.  Also removes any "hilite" from the class of any TD
 *  element.
 *  隐藏下拉框
 */
Associater.prototype.hide = function () {
    if (this.isPopup) {
        var obj=this;
        //Associater.removeEvent(document, "keydown", Associater._keyEvent);
        //Associater.removeEvent(document, "keypress", Associater._keyEvent);
        Associater.removeEvent(document, "click", function(){obj.hide();});
    }
    this.element.style.display = "none";
    this.hidden = true;
    this.hideShowCovered();
};

Associater.prototype.showAt = function (x, y) {
    var s = this.element.style;
    s.left = x + "px";
    s.top = y + "px";
    this.show();
};
/** 下拉框相对指定控件的显示位置. */
Associater.prototype.showAtElement = function (el, opts) {
    var p = Associater.getAbsolutePos(el);
    //alert(p.x+'-'+p.y);
    if (!opts || typeof opts != "string") {
        this.showAt(p.x, p.y + el.offsetHeight);
        return true;
    }
    this.show();
    var w = this.element.offsetWidth;
    var h = this.element.offsetHeight;
    this.hide();
    var valign = opts.substr(0, 1);
    var halign = "l";
    if (opts.length > 1) {
        halign = opts.substr(1, 1);
    }
    // 垂直对齐方式
        switch (valign) {
        case "T": p.y -= h; break;
        case "B": p.y += el.offsetHeight; break;
        case "C": p.y += (el.offsetHeight - h) / 2; break;
        case "t": p.y += el.offsetHeight - h; break;
        case "b": break; // already there
        }
    // 水平对齐方式
    switch (halign) {
        case "L": p.x -= w; break;
        case "R": p.x += el.offsetWidth; break;
        case "C": p.x += (el.offsetWidth - w) / 2; break;
        case "r": p.x += el.offsetWidth - w; break;
        case "l": break; // already there
    }
    this.showAt(p.x, p.y);
};

Associater.prototype.show = function () {
    this.element.style.display = "block";
    this.hidden = false;
    
    if (this.isPopup) {
        window[this.id] = this;
        var tId=this.id;
        //Calendar.addEvent(document, "keydown", Calendar._keyEvent);
        //Calendar.addEvent(document, "keypress", Calendar._keyEvent);
        Associater.addEvent(document, "click", function(){window[tId].hide();});
    }
    this.hideShowCovered();
};
Associater._Click=function(ev,mid,srcObj)
{
    var sel=window[mid];
    if(!sel)
    {
        return false;
    }
    var obj=null;
    obj=ev.srcElement?ev.srcElement:srcObj;
    var el=obj.parentNode;
    while(el!=null&&el!=sel.element)
    {
        el=el.parentNode;
    }
    if(el==null)
    {
        sel.hide();
        Associater.stopEvent(ev);
    }
};
Associater.prototype.hideShowCovered = function () {
    function getStyleProp(obj, style){
        var value = obj.style[style];
        if (!value) {
            if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C
                value = document.defaultView.
                    getComputedStyle(obj, "").getPropertyValue(style);
            } else if (obj.currentStyle) { // IE
                value = obj.currentStyle[style];
            } else {
                value = obj.style[style];
            }
        }
        return value;
    };

    var tags = new Array("applet", "select");
    var el = this.element;

    var p = Associater.getAbsolutePos(el);
    var EX1 = p.x;
    var EX2 = el.offsetWidth + EX1;
    var EY1 = p.y;
    var EY2 = el.offsetHeight + EY1;

    for (var k = tags.length; k > 0; ) {
        var ar = document.getElementsByTagName(tags[--k]);
        var cc = null;

        for (var i = ar.length; i > 0;) {
            cc = ar[--i];

            p = Associater.getAbsolutePos(cc);
            var CX1 = p.x;
            var CX2 = cc.offsetWidth + CX1;
            var CY1 = p.y;
            var CY2 = cc.offsetHeight + CY1;

            if (this.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) {
                if (!cc.__msh_save_visibility) {
                    cc.__msh_save_visibility = getStyleProp(cc, "visibility");
                }
                cc.style.visibility = cc.__msh_save_visibility;
            } else {
                if (!cc.__msh_save_visibility) {
                    cc.__msh_save_visibility = getStyleProp(cc, "visibility");
                }
                cc.style.visibility = "hidden";
            }
        }
    }
};



四、CSS代码:selector.css

.selector {
  position: relative;
  display: none;
  border:2px solid #C9D7F1;
  font-size: 11px;
  color: #666;
  cursor: default;
 background:white;
/*  font-family:tahoma,verdana,sans-serif;*/
  font-family:arial;
  margin-top:2px;
  width: 150px;
  height: 200px;
}


五、tld定义

<!-- 联想查询标签 -->
  <tag>
      <name>associate</name>
      <tag-class>com.moonNigh.tagSupport.AssociateQueryTag</tag-class>
      <body-content>empty</body-content>
      <small-icon></small-icon>
      <large-icon></large-icon>
      <description></description>
      <attribute>
          <name>id</name>
          <required>true</required>
      </attribute>
      <attribute>
          <name>name</name>
          <required>true</required>
      </attribute>
      <attribute>
          <name>text</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
      </attribute>
      <attribute>
          <name>value</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
      </attribute>
      <attribute>
          <name>actionUrl</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
      </attribute>
      <attribute>
          <name>startLeng</name>
          <required>false</required>
          <rtexprvalue>true</rtexprvalue>
          <type>java.lang.Integer</type>
      </attribute>
      <example></example>
  </tag>

  六、测试标签

<c:associate name="ca" id="ca" actionUrl="getTreeXml" startLeng="2"/>


JSP化妆品仓储库存系统:效期管理与扫码直连实战 库存管理系统是企业数字化运营的基础能力,其核心在于准确、实时、可追溯的库存状态管理。在快消与美妆行业,因批号非唯一、效期按月计算、多渠道SKU隔离等特殊需求,通用库存方案往往失效。本文聚焦JSP技术栈在资源受限环境下的工程价值——不依赖云服务、兼容老旧硬件、低运维门槛,通过分层架构(Servlet+DAO+JSP)、效期整数存储与分级预警、浏览器级扫码枪集成、CSV流式导出等轻量级方案,实现日均200+单的稳定运行。特别针对化妆品行业高频搜索的‘效期管理’‘扫码入库’‘JSP文件上传安全’等痛点,提供可落地 阅读详情

相关推荐

JSP自定义标签(二) 联想查询

JSP自定义标签(二) 联想查询

JS输入框添加联想、自动补充功能

这是我在公司项目中遇到的一个需求问题。大致是一个表单页面,人员需要填写基本信息,其中需要选择"学历"和"专业类别",由这两个变量去确定"所学专业"的一个范围。用户在所学专业输入框输入内容时,会自动联想、补充出剩余的字。所学专业的内容保存在数据库当中,当联想不出来相应的专业名称时,用户自行填写。 自动联想的功能解决方案参考的是菜鸟教程。直达链接 1、autocomplete.js function autocomplete(inp, arr) { /*函数主要有两个参数:文本框元素和自动补齐的

a1085578081的博客 3670

jquery联想查询

工程包中包括了两种联想查询的方式,分别使用jquery和普通的ajax请求方式,可以在web.xml中修改index.jsp就可以使用

J2EE基础:jsp标签02

forEach助手类: 在jiangwenjuan.tld文件中添加一个foreach循环 为了测试我们创建一个老师类 测试一下: 最终结果: selectTag助手类代码块: 在原来这段代码块中我们默认了: 里面的这段代码:是为了简便上面三行代码的 进一步优化了: 在jiangwenjuan.tld里面去加一段select代码块: 在去测试一下:这是之前的 看一下我们简略了之后是是怎么样的 我们还添加了一个,这样就可以弄...

weixin_67465673的博客 189

行人重识别(ReID)基础知识入门

行人重识别(Person re-identification)主要目的是针对出现在监控摄像头内的某个目标行人,准确快速地从监控网络其他摄像头内的大量行人中将这个目标行人标识出来。如图所示一个区域有多个摄像头拍摄视频序列,ReID的要求对一个摄像头下感兴趣的行人,检索到该行人在其他摄像头下出现的所有图片。

用于记录 1万+

Look4sat蓝牙追星云台

//这是一个追星云台的小程序 //配合Look4sat蓝牙传输数据(W*** A***),并让电机做出动作 //app设置内填好ESP32的蓝牙MAC,数据格式:W$AZ A$EL //希望大家可以共同改进

HoyAnGx的博客 618

Jquery+java+jsp 搜索自动联想、搜索自动提示

实现思路:后台将所有要检索的字段存放到json串中带到前端,前端再根据用户输入的内容进行检索。 实现效果:当输入“优房”时自动联想下拉,机构名称中所有包含“优房”的机构都会下拉列出来: 当选择第一个后: 我的项目后端是java语言,前端是jsp。使用的是jquery-1.11.1.js、jquery-ui.min.js。 后端关键代码: 1 List<Map<St...

weixin_30423977的博客 644

Word公式一键转MathType保姆级教程(附omml2mml.xsl报错终极解决方案)

本文提供Word公式一键转MathType的保姆级教程,重点解决常见的omml2mml.xsl报错问题。通过详细分析报错原因、官方解决方案实操步骤及转换后格式优化技巧,帮助用户高效完成公式转换,适用于科研论文和商业文档编辑。

weixin_30082367的博客 558

JSP自定义标签

前言:已经有好久没有和大家分享知识,今天我要与大家分享的知识是继反射之后的JSP自定义标签知识。 上面三张图是自己绘制的三张的思维导图。可以通过思维导图来进入我要跟大家分享的知识。 一、JSP的特点: 1、jsp的构成:开始标签、标签主体、结束标签 例如: <z:demo1>demo1</z:demo1>2 2、标签的分类:标签的分类主要是有四种 ...

m0_53151031的博客 2502

windsurf中出现无法Connecting to server的解决方案

本文主要介绍了windsurf中出现无法Connecting to server的解决方案,希望能对使用windsurf的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 6万+

【Unity的HDRP渲染管线下用Steam VR串流结合使用遇到的各种问题_SteamVR 插件和Pico串流助手】

当你启用"Mock Runtime"选项后,Unity将模拟一个虚拟的OpenXR运行时环境,并提供一些虚拟的设备和功能,让你能够进行开发和调试。在Unity中,SteamVR插件是一个由Valve提供的Unity插件,它允许开发者在Unity项目中集成SteamVR功能,以便支持SteamVR设备。OpenXR是一个跨平台的虚拟和增强现实(VR/AR)开发接口,它为开发者提供了一个统一的接口,用于访问不同VR/AR硬件设备和平台的功能。这个选项是用于模拟OpenXR运行时环境的功能。

暴走约伯的博客 2800

JSP 自定义标签详解

自定义标签是用户定义的JSP语言元素。当包含自定义标签的JSP页面转换为servlet时,这个标签就转换为一个名为tag handler的对象上的操作。之后当JSP页面的servlet执行时,Web容器就调用这些操作。JSP自定义标签可以分为两种类型:标记库和函数库。(必须在)SKIP_BODY跳过主体计算主体内容并输出再次计算主体一次EVAL_PAGE计算后续内容SKIP_PAGE跳过页面后续内容。

让优秀成为一种习惯! 2377

用 CL_SALV_TREE 把层级数据做成一棵会呼吸的 ABAP ALV 树:从类继承扫描到事件交互的完整拆解

本文介绍了SAP ABAP中使用CL_SALV_TREE实现树形ALV报表的方法。该技术将层级数据(如类继承关系)以可展开/折叠的树形结构展示,解决了传统ALV Grid无法直观显示层次结构的问题。核心实现采用"数据表+层级表"分离的设计模式:数据表存储节点业务信息,层级表维护父子关系。通过add_node方法动态构建树形结构,支持设置节点文本、图标和事件。文中提供了完整示例代码,演示了如何递归扫描ABAP类继承关系并构建树形ALV,这种技术特别适用于展示类族谱、权限树等层级数据,能显著

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 207

JSP自定义标签(一) 树形下拉选择菜单

http://blog.youkuaiyun.com/core_star/article/details/7421228 一、效果图: 二、自定义标签JAVA代码: [java] view plain copy package com.moonNigh.tagSupport;      import java.io.I

NRGAGA的专栏 4353

DeepSeek+Cline:开启自动化编程新纪元

随着 AI 技术不断进步,编程领域迎来效率变革。DeepSeek 与 Cline 的结合,成为自动化编程的强大工具。DeepSeek 凭借先进的自然语言处理能力,能精准理解编程需求;Cline 作为 VSCode 插件,可实现代码生成、调试、注释等功能的无缝衔接。本文详细阐述二者安装配置、实战操作流程,涵盖从基础代码生成到复杂项目开发的应用技巧,同时解答常见问题,帮助开发者快速掌握这对 “智能搭档”,提升编程效率,解锁自动化编程的无限可能。

邓邓子的博客 6256

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Struts2 自己定义下拉框标签Tag

自己定义标签主要包含三个步骤: 1、编写java类,继承TagSupport类。 2、创建tld文件,影射标签名和标签的java类。 3、jsp页面引入tld。 样例:自己定义下拉框标签 假设页面上有下拉选择框,通常最好的解决方法是使用数据字典。由于有可能多个页面 使用同一个下拉框。便于后台统一维护。 自己定义Tag类 import java.io....

weixin_30622107的博客 113

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java jspl是啥_artTemplate与java jspl标签库

近期看到jstl标签库,联想到以前使用过的artTemplate,感觉两者的用法几近相同,就放在一起总结了。一、artTemplate的使用artTemplate 是新一代 javascript 模板引擎,它采用预编译方式让性能有了质的飞跃,并且充分利用 javascript 引擎特性,使得其性能无论在前端还是后端都有极其出色的表现。现在就来说一说它的使用:artTemplate有两种书写形式,一...

weixin_34902131的博客 397

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

HTML5(网页基本结构、标签、媒体文件导入、表单)

HTML5笔记:网页基本结构、标签、媒体文件导入、表单

LLM | Agent | RAG | Java 2513

计算机毕业设计 jsp手机网上商城ssh 毕设

目前中国的手机市场处于高速发展阶段,中国手机市场近年来一直急速扩张,2003-2008年中国手机销售市场年复合增长率(CAGR)高达32%。过去几年内,中国一些国产手机品牌的知名度已获提升,且越来越成功[8]。国内品牌如联想、金立、步步高等在通过进军中国各级市场占领市场份额方面极具成效,在国内手机市场重新开闸的背景下,中国手机企业则加紧了海内外上市的步伐,而且都不约而同地倾向于境外资本市场。

yy521chxu的博客 482

泛微OA ecolog-9 记录获取浏览流程按钮具体执行的sql

泛微OAecolog-9记录获取浏览流程按钮具体执行的sql

weixin_42146736的博客 1459

Mybatis(动态sql)

这里写了一个带条件的动态模糊查询,大家首先联想的是不是当这个查询为空得判断是否为空?用if标签来判断 select a.id,            a.billcode,            a.productname,            a.totalprice,            a.ispayment,            a.creationdate,           ...

brid_fly的博客 415

linux服务器在线人数,千人左右同时在线,服务器需要什么样的?

千人左右同时在线,服务器需要什么样的?(2012-01-01 01:41:05)标签:服务器在线左右杂谈千人左右同时在线,服务器需要什么样的?我们实验室有个网格项目,大概就是峰值800-1000人同时在线访问的,服务器大概需要怎么样的配置?我说的这个同时在线,是个指主节点的JSP服务器。各种视频文件都会在各自不同学校的服务器上边。所以,视频点播负载小一点。应该买个什么样的服务器?JSP容器用哪个?...

weixin_36431814的博客 1404

html:link中的name,paramId,paramName和paramProperty四个属性的使用心得

看了一些使用html:link的文章,大多只是说了paramId结合paramName和paramProperty的使用。下面将会用到name,paramId,paramName和paramProperty一起使用的效果。首先是先解释简单的应用paramId,paramName和paramProperty点击链接假设在scope范围中,有一个bean叫beanName,beanName的一个属性b

kgxiang的专栏 1211
上一篇: JSP自定义标签(一) 树形下拉选择菜单
下一篇: JBPM4.4 发布流程时报错 could not insert: [org.jbpm.pvm.internal.lob.Lob]
carroll0911
博客等级 码龄17年 27粉丝 41原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值