`

项目中要用到的小实例

阅读更多

hibernate sql 分组查询

/**
	 * 销售统计
	 * @return
	 */
	public String goodsTongJi()
	{
		String sql="select g.mingcheng,sum(o.goods_quantity) as num,g.jiage,sum(o.goods_quantity)*g.jiage zongjia from t_orderitem  o " + 
				" left join t_goods g on o.goods_id=g.id  GROUP BY g.mingcheng,g.jiage order by sum(o.goods_quantity) desc";
		Session  session=goodsDAO.getHibernateTemplate().getSessionFactory().openSession();
		List goodsList=session.createSQLQuery(sql).list();
		Map request=(Map)ServletActionContext.getContext().get("request");
		request.put("goodsList", goodsList);
		return ActionSupport.SUCCESS;
	}


------------------------------------------------------------------
使用Navicat快速生成数据库字典

SELECT #*,
	#TABLE_SCHEMA '库名',
	TABLE_NAME '表名',
	COLUMN_NAME  '列名',
	COLUMN_TYPE '数据类型',
	COLUMN_COMMENT '字段描述'
FROM 
	information_schema.columns
WHERE 
TABLE_NAME IN ('t_card_voucher','t_card_distribution_config','t_card_voucher_receive','t_card_voucher_send');

导出成world文档  菜单 -》文件-》导出向导 doc
----------------------------------------------------------------------------

动态加事件
$("#roll").delegate("dd","hover",function(e){
			var e=e||window.event;
			if(e.type=="mouseenter"){
				$(this).find(".sus_tit").stop(true,true).slideDown(200);
			}else
			if(e.type=="mouseleave"){
				$(this).find(".sus_tit").stop(true,true).slideUp(200);
			}
		});

下拉框 只读后不能操作
 onfocus="this.defaultIndex=this.selectedIndex;" onchange="this.selectedIndex=this.defaultIndex;"
<select class="form-control input-sm" name="storeId" id="storeId_${status.index }" shelfId="${item.storeShelfId }" readonly="readonly" onfocus="this.defaultIndex=this.selectedIndex;" onchange="this.selectedIndex=this.defaultIndex;">
															<option value="">请选择...</option>
															<c:forEach var="ss" items="${store}">
																<option value="${ss.id}" ${item.storeId == ss.id ? 'selected' : '' }>${ss.name}</option>
															</c:forEach>
														</select>


<a href="http://heisetoufa.iteye.com" onclick="return confirm('确定将此记录删除?')">删除</a>  

//return 返回值为真时执行跳转

 <a href="#" onclick="alert('确定将此记录删除?')">刷新</a> 

// 不加return执行跳转
----------------------------------------------------------------------------------------------------------
怎么用js去掉超链接的下划线?
     //当鼠标指向链接的时候下划线消失,因为加上了一个事件event.如果去去掉event事件,当页面加载的时候消失。
  
  <a   href="abc.htm"   id=a1>链接</a> 
  
  <script   for=a1   event="onmouseover">   
  a1.style.textDecoration='none';  //none下划线消失.underline有下划线 
  </script>

-----------------------------------------------------------------------------------------------------------
  //event.srcElement 当前发生事件的对象

 function showAlert(){

         var   obj   =   event.srcElement; 

        alert(obj.innerText);
    
	   }

  <a href="#" onclick="showAlert()">中华我的家</a>
------------------------------------------------------------------------------------------------------------
setTimeout和setInterval的区别
setTimeout()只调用一种。。。
setInterval()会连续调用。。。。
------------------------------------------------------------------------------------------------------------
  <A   HREF="qq.jsp"   onclick="javascript:location.replace(this.href);     
    
  event.returnValue=false;   ">     
    
  禁止后退到本页面的链接</A> 当用户点击超链接时会把当前的地址替换为href
--------------------------------------------------------------------------------------------------------
 <html>     
  <head>     
  <meta   http-equiv="Expires"   CONTENT="0">     
  <meta   http-equiv="Cache-Control"   CONTENT="no-cache">     
  <meta   http-equiv="Pragma"   CONTENT="no-cache">     
  </head>     
    
       如果使用上面的方法强制浏览器不再缓存Web页面,必须注意以下几点:     
  只有在使用安全连接时“Pragma:   no-cache”才防止浏览器缓存页面。对于不受安全保护的页面,“Pragma:   no-cache”被视为与“Expires:   -1”相同,此时浏览器仍旧缓存页面,但把页面标记为立即过期。在IE   4或5中,“Cache-Control”META   HTTP-EQUIV标记将被忽略,不起作用。     
       在实际应用中我们可以加上所有这些代码。然而,由于这种方法不能适用于所有的浏览器,所以是不推荐使用的。但如果是在Intranet环境下,管理员可以控制用户使用哪种浏览器,我想还是有人会使用这种方法。     
----------------------------------------------------------------------------------------------------------------
当用户向数据库提交数据后,往往由于点击了F5刷新页面,造成数据的重复提交,很容易造成数据库数据混乱.   
  如果屏蔽了刷新按钮,二次提交的可能性会小很多!   
  下面是禁止页面刷新的javascript代码:   
    
  document.onkeydown   =   function()   
    {   
                      if(event.keyCode==116)   {   
                      event.keyCode=0;   
                      event.returnValue   =   false;   
                      }  //禁止按F5 
  }   
  document.oncontextmenu   =   function()   {event.returnValue   =   false;} //禁止鼠标右击
-------------------------------------------------------------------------------------------------------------
提交表单的同时把按钮禁用,CSDN论坛用的就是这个方法!代码如下:   
    
  <form   name="form1"   method="post"   action="http://www.xxx.net"   onsubmit="this.s.disabled=true">   
      <input   type="submit"   name="s"   value="提交">   
  </form>   
    
  你可以发现按钮按下后变灰了。
------------------------------------------------------------------------------------------------------------------
 function searchs(){
       var doc=document.fo.musicName.value;
       if(doc!=null&&doc!=""){
          document.fo.action="music.do?submit=dispSearch";
//fo为表单的名字也可以写成document.froms[第几个表单].action="music.do?submit=dispSearch";
          document.fo.method="post";
          document.fo.submit();
       }else{
             alert("搜索内容不能为空!");
        }
    } 
js提交表单。。。。。
----------------------------------------------------------------------------------------------------------------
js正则匹配日期
<script>
var regM =/^(0[1-9]|1[0-2])$/;        //匹配月
alert(regM.test("12"));
var regD =/^(0[1-9]|[1-2]\d|3[0-1])$/; //匹配日
alert(regD.test("10"));
</script>
------------------------------------------------------------------------------------------------------
var chineseNameReg = /^[\u4E00-\u9FA5]{1,}$/;//中文名字的正则表达式 
var englishNameReg = /^[a-zA-Z]{1,}\/[a-zA-Z]{1,}[\sa-zA-Z]{0,}$/;//英文名字的正则表达式 
开始结束符号/^和$ 
{1,}表示重复一次以上 

--------------------------------------------------------------------------------------------------------
var table=document.getElementById("table1");
    for(var i=0;i<table.rows.length;i++){
        for(var j=0;j<table.rows[i].cells.length;j++){
             alert(table.rows[i].cells[j].innerHTML);
        } //获得一个表的每个元素的值。。。。
--------------------------------------------------------------------------------------------------------
disabled 不可用的。。。readonly 只读的 文本框属性
--------------------------------------------------------------------------------------------------------
java 生成随机数策略

Math.random()方法生成0.0至1.0(不包含1.0)的double型随机数,一般地, a + Math.random() * b可以返回a到a+b之间的随机数,不包括a+b.
---------------------------------------------------------------------------------------------------------------
struts1 中的attribute属性的作用
为<action>中name属性制定的ActionForm制定一个key关键字,这样就可根据scope属性指定的范围获取该ActionForm:
如:
<action  
  name="userForm"  
  attribute="user"
  scope="request"
  ……
/>
则可通过request.getAttribute("user")获取"userForm"指定的ActionForm。
如果省略attribute属性,则可通过request.getAttribute("userForm")获取ActionForm
attribute属性当然如跟actionform取了一个别名

-----------------------------------------------------------------------------------------------------------------
js禁止按钮  x.disabled=true; //document.getElementById(x).disabled=true; 
-----------------------------------------------------------------------------------------------------------------
<a href="javascript:window.parent.document.URL='/CustomerRelationshipManagementSystem/Login.do?method=exitUser'" onclick="return confirm('真的注销吗?')">退出系统</a>
-------------------------------------------------------------------------------------------------------------------//公共测试方法 map集合 list集合
<script type="text/javascript">
function basicTest1(){
//定义一个map集合存放对象
var maps={t1:{id:"1"},t2:{id:"2"}};
  //遍历map集合中的key值与value值
	for(var key in maps){ 
		alert("key:"+key+"--value:"+maps[key].id); 
	}
 //定义一个list集合存放对象
 var lists=[{id:"1"},{id:"2"}];
 	 //遍历list集合值
	for(var p in lists){ 
		alert(lists[p].id); 
	}
}
</script>
-------------------------------------------------------------------------------------------------
  利用DWR框架动态给Table加数据

dwr.util.removeAllRows("userTab");
	for(var i in dates){
	 //arrays必须是个数组,数组里面放对象,javabean的信息组装成一个简单的数组,然后显示到页面上
	 var user=[{id:dates[i].id,name:dates[i].name,sex:dates[i].sex,passWord:dates[i].passWord,remark:dates[i].remark}];
	 DWRUtil.addRows("userTab",user,[function(item){return item.name},
	 function(item){return item.passWord},
	 function(item){return item.sex},
	 function(item){return item.remark},
	 function(item){
	   var userDelete="<a href=javascript:onclick=deleteUsers("+item.id+","+"'"+item.name+"'"+")>刪除</a>";
	 return userDelete},
	 function(item){
	   var userUpdate="<a href='javascript:onclick=updateUser("+item.id+")'"+">更新</a>";
	 return userUpdate}
	 ],{escapeHtml:false});
}
-------------------------------------------------------------------------------------------------------------
<%=request.getRealPath("/") %> 当前发布项目的绝对路径 如:D:\软件\JAVA开发工具\apache-tomcat-5.5.20\webapps\item
-------------------------------------------------------------------------------------------------------------
获得下拉列表选中的值 
<script> 
function show(){ 
alert(document.myform.mysel.options[document.myform.mysel.selectedIndex].text); 
} 
</script> 
<form name="myform"> 
<select name="mysel" onchange="show()"> 
<option value="1">上海</option> 
<option value="2" selected="selected">天津</option> 
<option value="3">北京</option> 
</select> 
</form> 
----------------------------------------------------------------------
重定向中文乱码问题的解决

<1>jsp页面间传输要在tomcat里边的server.xml文件里边加入下面的语句
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" 
disableUploadTimeout="true"
URIEncoding="GBK" />


URIEncoding="GBK"这句是加进去的

<2>servlet/jsp页面间的传输要在所传输的文字前用到如下的语句
当然修改server.xml是必不可少的

例如
response.sendRedirect("MessageShow.jsp?message=" + URLEncoder.encode("成功发送邮件至","GBK") + to + URLEncoder.encode("信箱","GBK"));

URLEncoder.encode()这个方法是必不可少的

java.net.URLEncoder.encode()

----------------------------------------------------------------------
利用CSS让容器的溢出部分内容隐藏起来,smarty就可以不用截取字

在网页设计中,会遇到文本超过固定长度导致整体的网页变形的情况。程序员往往需要截取固定的长度来实现某些固定长度的控制。介绍一种直接采用CSS的代码控制来实现文本截取的方法。与程序员的直接字符截取的方式有点区别,其优势是可以自动控制文本显示的长度;缺点是不同浏览器的兼容性并不完美。使用到 overflow,text-overflow,white-space 这三个主要的属性,其他的代码属于修饰作用。
 CSS代码: <style> 
.texthidden{
 width:200px; 
overflow:hidden;
 text-overflow:ellipsis; 
white-space:nowrap;
 border:1px solid #ddd;
} 
</style>

 HTML代码:
 <div class="texthidden"> CSS让容器的溢出部分内容隐藏起来 </div>
 
代码分析:
1. width:200px; //指定宽度:
2. overflow:hidden; //将超出内容隐藏
3. text-overflow:ellipsis; //IE专用属性,文本溢出时显示省略标记();其他浏览器不支持。
4. white-space:nowrap; //强制内容不换行。

强制在同一行内显示所有文本,直到文本结束或者遭遇 br 元素 目前使用这种方法比较成功的示例是Gmail的内容显示,在IE下达到最好的效果。如果是FF那就比较糟糕,总是会出现截取半个中文的效果。其中涉及到最主要的原因是 text-overflow 这个属性只在IE下有效,目前很多CSS属性也存在这个问题,特别重要的是Margin和Padding这两个属性,往往导致页面出现各种不同的效果;在页面设计的时候,需要注意这些属性在不同浏览器的显示效果。
----------------------------------------------------------------------
用 showModalDialog 打开的窗口获得父窗口对象

 showModalDialog( "tt.htm ",window,"font-size:20px;dialogWidth:400px;dialogHeight:400px;scrollbars=no;status=no"); //把父网页的   window   对象传给对话框 

在   tt.htm   里: 
var   w   =   window.dialogArguments; //获得父窗口对象
alert(w.document.all.IDshowwhatprop.value);
---------------------------------------------------------------------
hibernate 查询返回指定的字段 把返回的字段封装到object数组中。。。
List list=session.createQuery("select r.user.loginid,r.menu.title,count(r.menu.title),max(startTime) from ReportForm r where r.user.loginid='admin' group by r.menu.title,r.user.loginid order by count(r.menu.title) desc").list(); 
			System.out.println(list.size());
			 Iterator iterator = list.iterator();
             while(iterator.hasNext()){
	    	//你返回的结果集都封装到了Object数组中。
	    	Object[] obj = (Object[])iterator.next();
	    	 System.out.println(obj[0]+"-"+obj[1]+"-"+obj[2]+"-"+obj[3]);
	    	
	    }
----------------------------------------------------------------------



oracle 操作
如果是exp导出的文件,可以用:   
  imp   user/pass@database   file=c:\backup.mdf   full = y;

----------------------------------------------------------------------
C:\Users\Administrator>exp system/123456@192.168.1.120:1521/file=oralce e:\data.d
mp owner=(user)


C:\Users\Administrator>imp system/123456@192.168.1.120:1521/oralce  file=e:\data.d
mp fromuser=user touser=user1

exp oracleuser/passwd file=(/mydata/dat1.dmp,/mydata/dat2.dmp,mydata/dat3.dmp) tables=(table1,table2,table3) 

说明
1.如果加上“full=y”,将整个数据库全部导出,需要特殊的权限(具体什么权限没研究过),一般用system用户就足够了,普通用户是不可以的
2.不加“full=y”,默认导出连接数据库的用户数据库对象,比如:exp aaa/abc@oracle file=a.dmp,导出aaa模式下的所有数据库对象
3.你说的有多个用户,可以使用system来指定导出哪个用户的数据库对象,比如:exp aaa/abc@oracle file=a.dmp owner=(bbb,ccc),普通用户是不可以指定owner的
4.数据有多个实例的情况,这个要看你“@”后面是什么,如果@oracle,则在oracle实例上进行导出,@ora,则在ora实例上进行导出


创建 用户 权限


创建用户: 
create user user1 identified by user1 default tablespace tspace1;

可以省略 default tablespace tspace1

最高授权:
grant connect,resource ,dba to user1;
基本授权:
grant connect,create view ,resource  to TEST;

CONNECT角色:    --是授予最终用户的典型权利,最基本的   
    
   ALTER    SESSION    --修改会话   
   CREATE    CLUSTER    --建立聚簇   
   CREATE    DATABASE    LINK    --建立数据库链接   
   CREATE    SEQUENCE    --建立序列   
   CREATE    SESSION    --建立会话   
   CREATE    SYNONYM    --建立同义词   
   CREATE    VIEW    --建立视图   
    
    
   RESOURCE角色:    --是授予开发人员的   
    
   CREATE    CLUSTER    --建立聚簇   
   CREATE    PROCEDURE    --建立过程   
   CREATE    SEQUENCE    --建立序列   
   CREATE    TABLE    --建表   
   CREATE    TRIGGER    --建立触发器   
   CREATE    TYPE    --建立类型

但是实际查找 oracle 10 2.0.1.0 系统时,发现两个角色的权限如下:

用sys登陆到oracle中,执行以下两条语句:


         select * from role_sys_privs WHERE ROLE LIKE 'CONNECT';  --查询connect角色的权限

         select * from role_sys_privs WHERE ROLE LIKE 'RESOURCE';  --查询 RESOURCE角色的权限


CONNECT角色:    --是授予最终用户的典型权利,最基本的       
   CREATE    SESSION    --建立会话  

        
RESOURCE角色:    --是授予开发人员的      
   CREATE    CLUSTER         --建立聚簇   
   CREATE    PROCEDURE    --建立过程   
   CREATE    SEQUENCE      --建立序列   
   CREATE    TABLE              --建表   
   CREATE    TRIGGER          --建立触发器   
   CREATE    TYPE                --建立类型

   CREATE    OPERATOR       --创建操作者

   CREATE    INDEXTYPE      --创建索引类型

   CREATE    TABLE              --创建表 
-------------------------------------------------------------------------
启动 实例,监听
 service oracle start 
  lsnrctl start


sqldeveloper查找TNS文件的顺序如下: 1,$HOME/.tnsnames.ora 2,$TNS_ADMIN/tnsnames.ora 3,TNS_NAMES lookup key in the registry 4,/etc/tnsnames.ora ( non-windows ) 5,$ORACLE_HOME/network/admin/tnsnames.ora 6,LocalMachine\SOFTWARE\ORACLE\ORACLE_HOME_KEY 7,LocalMachine\SOFTWARE\ORACLE\ORACLE_HOME 如果sqldeveloper没有找到合适的TNS文件,可以这样来给它设定需要的TNS文件: 1)配置环境变量TNS_ADMIN,让其指向TNS文件所在的目录,如:D:\Program Files\sqldeveloper; 2)在CMD中查看环境变量值是否正确,可使用命令:echo %TNS_ADMIN%,并重启sqldeveloper; 3)在sqldeveloper中,点击创建新链接按钮,Connection Type选择 TNS,Network Alias 中的下拉框中会显示出所有定义在TNS文件中的所有条目。 
-------------------------------------------------------------------------
memcached 启动
/usr/local/bin/memcached -d -m 200 -u root restart

----------------------------------------------------------------------
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics