欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

项目中要用到的小实例 java 

程序员文章站 2022-03-08 11:33:15
...

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

----------------------------------------------------------------------
相关标签: java