项目中要用到的小实例 java
程序员文章站
2022-03-08 11:29:14
...
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 ----------------------------------------------------------------------