js相关(easyUI),触发器,ant,jbpm,hibernate二级缓存ehcache,Javamail,Lucene,jqplot,WebService,regex,struts2,oracle表空间
*********************************************js相关*********************************************
// 在指定的毫秒数后调用
tt = window.setTimeout("x()",3000);
// 按指定的周期调
t = window.setInterval("second_x()",1000);
// 清除
window.clearInterval(t);
// 当前对象
$('#select').change(function(){alert($(this).val())});
setTimeout("updateLoad()",5000);
<jsp:include page="/WEB-INF/page/customer/cust2Add.jsp"></jsp:include>
var imgArr = ["bmp","jpg","gif","png"];
var file = "jpg";
alert($.inArray(file,imgArr));
file = file.toLowerCase();
$('#add-window').window('close');
$.messager.alert('提示框',messgage,'info');
data-grid 相关方法属性
// 获取日期输入框编辑器并更改它的值
var ed = $('#dg').datagrid('getEditor', {index:1,field:'birthday'});
$(ed.target).datebox('setValue', '5/4/2012');
$('#data-grid').datagrid('getRows')[editIndex]
$('#data-grid').datagrid('selectRow', index)//选择一行
$('#data-grid').datagrid('beginEdit', index);//开始编辑行
$('#data-grid').datagrid('endEdit', editIndex);//结束编辑行
//验证指定的行,当验证有效的时候返回true
$('#data-grid').datagrid('validateRow', editIndex)
$('#partidValue').combobox('reload',url);//重新加载
//var row = $('#data-grid').datagrid('getSelected');
$('#data-grid').datagrid('refreshRow',editIndex);//刷新指定行,下拉框对行数据重新设值后
striped boolean 是否显示斑马线效果。
nowrap boolean 如果为true,则在同一行中显示数据。设置为true可以提高加载性能。
$('#partidValue').combogrid('clear');//在本次对combogrid进行setValue,setText之前先清除上次设置的值,否则如果本次设置的值不在当前页会有异常显示上次设置的value
//将字符串转化成json对象
var Bjson = '${businessTypes}';
Bjson = eval("(" + Bjson + ")");
//页面初始化加载
$(document).ready(function(){
});
js页面拼接方法 只能传数字不能传字符串的解决办法
function customerLink(val,row){
var customerId = row.customerId;
return '<a href="javascript:;" style="text-decoration: none" onClick="customerClick(\''+customerId+'\');">'+val+'</a>';
}
<th data-options="field:'businessType',width:80"align="center",editor:{type:"combobox",
options:{
url:'${pageContext.request.contextPath}/cus/findBusinessTypeCustomer.htm',
valueField:'businessType',
textField:'name'
}
}>企业类型</th>
<th data-options="field:'businessType',width:205,
formatter:function(value,row){
return row.name;
},
editor:{type:'combobox',
options:{
valueField:'businessType',
textField:'name',
url:'${pageContext.request.contextPath}/cus/findBusinessTypeCustomer.htm',
required:true
}
}
">企业类型</th>
<!--------------------------------------java-------------------------------------------------------------!>
com.thoughtworks.xstream.XStream 对象与xml转换
java反射机制:知道类名,方法名,方法参数就能使用接口,如果是非静态的要实例化一个对象传入
反射机制实现动态代理:
jdk动态代理java.lang.reflect.InvocationHandler,cglib动态代理net.sf.cglib.proxy.MethodInterceptor
把对接口的访问交给代理类,即每次访问都要经过代理类(像spring的aop面向切面设计),可以把某类接口共同的操作写在代理类中
<!-----------------------------------------------------ant,jbpm-----------------------------------------------------!>
Apache Ant 是一个将软件编译,测试,部署等步骤联系在一起加以优化的一个构建工具
构建: 就是把代码从某个地方拿来,编译,再copy到某个地方的操作.运行前只有java源文件运行后有class文件和jar包文件
步骤: 新增系统变量ANT_HOME apache-ant-1.9.4
在PATH环境变量中加入Ant的bin目录:%ANT_HOME%\bin
运行: ant -buildfile D:\antDemo
针对web项目,把根据build.xml生成的antwebproject.war包放到tomcat目录下发布
Jbpm 是一个工作流引擎框架,流程设计器(GPD,Eclipse插件 )进行流程设计
jBPM 即java Business Process Management,是基于java的业务流程管理系统。jBPM是市面上相当流行的一款开源工作流引擎,
引擎底层基于Active Diagram模型。jBPM4.4使用了hibernate(3.3.1版),因此可以很好的支持主流数据库。
jBPM4.4共有18张表,用于存储业务流程数据
jdbc:mysql://localhost:3306/itcastjbpm?useUnicode=true&characterEncoding=utf8可防止存储到数据库的值是乱码
create database jbpm4 default character set utf8;
一次部署的多个文件的信息。对于不需要的流程可以删除和修改。对应的表:jbpm4_deployment,jbpm4_deployprop,jpbm4_lob
<!-------------------------------------------hibernate二级缓存ehcache----Javamail,Lucene--------------------->
1,对象缓存针对单独的对象,查询缓存针对query(hql语句)查出的list<Object>进行缓存
2,缓存的对象有数量(超量清除)、存活时间(超时清除)、闲置时间(超时清除)等控制条件
3,可进行一对多等复杂对象缓存,缓存对象修改时二级缓存同步修改<cache usage="read-write" region="sampleCache1"/>
4,sessionfactory可清除缓存(某个缓存对象或一类)
Javamail 设置邮件服务器mail.smtp.host("smtp.163.com"在邮箱中设置启用smtp服务),用户名,密码,邮件接收人,抄送人,邮件主题,邮件内容(正文和附件)
接收邮件,设置mail.pop3.host("pop.qq.com"启用pop服务)
Lucene 就是一个开源的全文检索框架,它最主要就是做两件事:建立索引和进行搜索,主要是做站内搜索,即对一个系统内的资源进行搜索
对索引库的操作可以分为两种:管理与查询。管理索引库使用IndexWriter,从索引库中查询使用IndexSearcher。
Lucene的数据结构为Document与Field。Document代表一条数据,Field代表数据中的一个属性
我们只需要把在我们的程序中的对象转成Document,就可以交给Lucene管理了,搜索的结果中的数据列表也是Document的集合
全文检索时要把整个文档加入索引
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0"> //取消页面缓存
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> //向搜索引擎说明你的网页的关键词
<meta http-equiv="description" content="This is my page">
<meta http-equiv="refresh" content="0;url=${pageContext.request.contextPath}/opr/loginPage.htm">//定时让网页在指定的时间n内,跳转
*********************************************jqplot*********************************************
jqplot 饼状图pie chart 柱状图bar graph 曲线图curve graph
官网实例: http://www.jqplot.com/deploy/dist/examples/
官网API(参数详解): http://www.jqplot.com/docs/files/jqplot-core-js.html
jqPloat主要参数配置: http://www.jqplot.com/docs/files/jqPlotOptions-txt.html
$.jqplot.config.enablePlugins = true;拖拽,趋向线必须有此设置
jqploat配置:
axes:主要分为xaxis、yaxis
seriesDefaults:默认对两个分类都设置以下属性
series:分别对两个分类设置属性
legend:分类名称框相关属性设置(右上角的颜色分类说明)
highlighter:高亮显示配置,鼠标移动到数据点的效果
cursor:鼠标移动到图像上光标显示配置,(不同于highlighter的数据点)
grid:整个图表的属性设置(比如为整个图设置阴影,是否有边框)
*********************************************cxf定义webservice*****************************************
@WebParam(name = "myname")
针对客户端, Payload: <soap:Envelope ...... 客户端发请求时里面的参数名称,要与接口发布的参数名称相同(SOAP信封的Body中包含)
当服务端接口方法参数定义时,客户端访问时在本端的实体类也必须如此标识
@WebResult(name="returnWord")
定义返回的soap消息节点名称(SOAP信封的Body中包含)
@WebMethod(operationName="toSayHello",action="sayHello",exclude=false)
operationName,action只是wsdl中节点别称,exclude默认为false设置成true时该接口方法失效(wsdl中不显示,即不对外提供该接口)
@SOAPBinding(style=SOAPBinding.Style.RPC)
默认采用document样式,如果您的服务正使用字符串参数来传递或返回 XML 文档,或者它的参数之一是一个具有复杂结构且需要自定义处理的对象,那么文档消息传递就可能是较好的选择
(信息量大采用document)由于采用 RPC 样式的消息传递来编组参数的大部分(如果不是全部的话)实现都是在内存中执行这项操作,所以内存约束可能会使得 RPC 消息传递行不通
@XmlTransient转换成xml时隐藏掉个别属性 @XmlRootElement(name = "CustomerBaseInfo")
<!----------------------------------------------WebService----------------------------------------------->正确的jar包 jar包冲突,从lib里删掉 及时编译
SOAP是Web Service的基本通信协议,是一种规范,用来定义SOAP消息的XML格式(XML Format)
Java中共有三种Web Service规范,分别是JAXM&SAAJ、JAX-WS(JAX-RPC)、JAX-RS。其中JAX-WS(Java API For XML-WebService),JDK1.6自带的版本为JAX-WS2.1
WSDL: Web 服务描述语言(Web Services Description Language ,WSDL)
wss4j 对密码进行认证,为cxf提供认证访问机制(SOAP信封的Header中包装了<wsse:Security…等元素,元素包括了WS-Seurity的一些信息和设置的用户名和密码)
最普遍的一种说法就是,Web Service = SOAP + HTTP + WSDL。其中,SOAP Simple Object Access Protocol)协议是web service的主体,
它通过HTTP或者SMTP等应用层协议进行通讯,自身使用XML文件来描述程序的函数方法和参数信息,从而完成不同主机的异构系统间的计算服务处理。
这里的WSDL(Web Services Description Language)web 服务描述语言也是一个XML文档,它通过HTTP向公众发布,公告客户端程序关于某个具体的 Web service服务的URL信息、方法的命名,参数,返回值等。
SOAP 指简单对象访问协议,它是一种基于XML的消息通讯格式,用于网络上,不同平台,不同语言的应用程序间的通讯。可自定义,易于扩展。一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
• Envelope 元素,标识XML 文档一条 SOAP 消息
• Header 元素,包含头部信息的XML标签
• Body 元素,包含所有的调用和响应的主体信息的标签
• Fault 元素,错误信息标签
F:\cxf\apache-cxf-2.6.1\bin下执行
wsdl2java -p com.zzzl.webservice.qidian -d d:\cxfoutput\src -all http://localhost:8080/ccms/webservice/CustomerShopManager?wsdl
参数说明:
-p 也就是package 对应java中的包
-d 输入目录,生成.java文件会在该目录,会自动添加-p参数配置的包路径
-client 生成客户端测试web service的代码.
-server 生成服务器启动web service的代码.
-impl 生成web service的实现代码.
-ant 生成build.xml文件.
-all 生成上面-client -server -impl -ant 对应的所有文件
path=C:\\Users\\Administrator\\AppData\\Local\\Genuitec\\MyEclipse 10\\site-1.8.22
JAVA_HOME C:\jdk1.6.0_22
C:\Program Files\Java\jdk1.7.0_71\
C:\Program Files\Java\jre7\
3306,mysql, MySQL Root Password: 123456
root 123456
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" />
</head>
<body>
<script type="text/javascript">
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
//以下进行测试
document.write(ua+'<br>');
if (Sys.ie) document.write('IE: ' + Sys.ie);
if (Sys.firefox) document.write('Firefox: ' + Sys.firefox);
if (Sys.chrome) document.write('Chrome: ' + Sys.chrome);
if (Sys.opera) document.write('Opera: ' + Sys.opera);
if (Sys.safari) document.write('Safari: ' + Sys.safari);
</script>
</body>
</html>
*********************************************regex正则表达式*********************************************
重复:
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
[]:匹配[]中的元素,[0-9]代表的含意与\d就是完全一致的即:一位数字
():括号中元素作为一个整体
IP:(\d{1,3}\.){3}\d{1,3}是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:\d{1,3}匹配1到3位的数字,(\d{1,3}\.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(\d{1,3})
手机号:/^1[3|4|5|8]\d{9}$/;//其中[3|4|5|8]的|可以去掉,[]中的元素本身就是或的关系
邮箱:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
关于match和test:
function regex2(){
var reg = /\w+([-+.]\w+)*/;//加了()*的*后,括号中的已经无意义了,如果括号中的没匹配上就当没有括号校验,mather测试下
var str = 'd.s';
alert(reg.test(str)+' '+str.match(reg)+'*******'+'*');
}
var val = 'wMSIE 8#x@seMSIE 2df';
var reg = /MSIE ([\d])#([x])/;//其中MSIE 8#x会匹配,匹配整体中8和x又会匹配一次,()括号中的会单独匹配
var v = val.match(reg);//匹配结果数组有三个元素MSIE 8#x,8,x
/**
reg.test(str)可以校验完全匹配或局部匹配
用str.match(reg)目的是返回匹配字符串,进行完全匹配是没有意义的 /^MSIE ([\d])#([x])$/
**/
元字符:
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
/\w+\.com[.]/其中\.的\为转义字符,[]中的不转义
懒惰匹配:匹配最长的以a开始以b结束的字符串
js对象定义:
var Validator = {
Mobile:/\d/,
Phone:"2121",
vali : function(str){
alert(this["Mobile"].test(str));
alert(this.Mobile.test(str));
return "return";
}
}
Pattern pattern = Pattern.compile("^Java.*");
Matcher matcher = pattern.matcher("Java不是人");
boolean b= matcher.matches();
//当条件满足时,将返回true,否则返回false
System.out.println(b);
获取tomcat下指定文件输入流
InputStream is = CustomerAccessoryInfoServiceImpl.class.getResourceAsStream("/../../upload/日记.txt");
InputStreamReader isr = new InputStreamReader(is);
获取指定文件
String path = System.getProperty("user.dir");
path = path.split("bin")[0];
File file = new File(path+"webapps\\ccms\\upload\\知识点.txt");
boolean bo = file.delete();
/**
* 导入模板下载 读取指定文件输入流到response输出流中,实现下载
* @throws Exception
*/
public void loadTemplate() throws Exception{
response.setContentType("text/html;charset=UTF-8");
XSSFWorkbook wk = null;
String template = null;
try {
//template = "F://Workspaces//ccms//src//com//chinatelling//ccms//action//customer.xlsx";
template = "F://Workspaces//ccms//src//com//chinatelling//ccms//action//笔记.txt";
//template = "F://Workspaces//ccms//src//com//chinatelling//ccms//action//客户分类与特殊政策匹配系统.doc";
File file = new File(template);
FileInputStream fis = new FileInputStream(file);
try {
response.reset();// 清空输出流
//response.setHeader("Location", template);
//response.setContentType("text/plain");//txt
//response.setContentType("application/octet-stream;charset=UTF-8");//信息流
//response.setContentType("application/x-download; charset=utf-8");
//response.setContentType("application/ms-excel");//msexcel
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("笔记.txt", "UTF-8"));//utf-8对IE起作用
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = -1;
while((i = fis.read(buffer)) != -1){//读入缓冲区的总字节数;如果因为已经到达流末尾而不再有数据可用,则返回 -1
os.write(buffer, 0, i);//写到输出流中
}
os.flush();
os.close();
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
ThreadLoacl 线程池
触发器:数据完整性及级联更新,对数据的访问控制(对某些数据加上约束,不能随便改动)
游标:对结果集每一行进行处理,触发器和游标的联合使用,在游标里接收触发器的参数并逐行处理
end后要加; 弹出框参数输入时不能输入字符串
// List<Object> li = (List<Object>) baseDao.findBySql(" select myFunction('xmh5') from t_emp ", null, 0, 0);
// System.out.println("******myFunction*****"+li.size()+" "+li.get(0));
// baseDao.cudBySql("insert into t_emp (empno) values (12) ", null);
// baseDao.cudBySql("begin myproc(02,'xmh5','business',1); end;", null);
try{
baseDao.cudBySql("update t_emp set sal = '10' where empno = 4", null);
} catch(Exception e){
System.out.println(" ***********Exception**** "+e.getMessage());
Throwable next = e.getCause();
Throwable thro = null;
//获取最底层的异常信息,由数据库触发器抛出的异常
if(next != null){
while(next != null){
thro = next;
next = next.getCause();
}
if(thro != null){
System.out.println("*************trigger_Exception*****"+thro.getMessage());
thro.printStackTrace();
}
}
e.printStackTrace();
}
*********************************关于Exception异常****************************
底层发现异常可进行捕捉,捕捉后可进行处理或向上层抛出,如果不捕捉上层也可进行捕捉
*********************************关于struts2******************************
strtus后台action获取session及application: ActionContext.getContext().getSession()
ActionContext是struts的API,如果更换框架修改比较多(侵入性强)
<!-- struts2拦截器 -->
MethodFilterInterceptor对指定的方法拦截
<!-- spring由配置文件生成数据库建表配置-->
<prop key="hibernate.hbm2ddl.auto">update</prop>
struts请求后缀配置,在struts.xml配置文件里重新设置常量,针对<s:form action="mainmainAction.htm">其中htm可不配,
系统默认拼接常量的首位后缀,要配的话也要配首位的
<constant name="struts.action.extension" value="htm,action,page" />
web.xml配置struts过滤器时加上
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
*********************************struts2拦截器*******************************
使用自定义的拦截器配置在struts配置文件的action中,还要引入defaultStack,否则使用了modelDriven的formBean将不能获取到form表单中字段的值
拦截器就是AOP(Aspect-Oriented Programming)的一种实现。(AOP是指用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作
实现Interceptor接口,实现intercept方法
获取ValueStack stack = actionInvocaton.getStack() findValue("user", User.class) stack.findString("myParam") stack.setValue("myParam","新修改的value")
在调用action之前,之后都可以获取,action为valueStack重新设置
获取Servlet API HttpServletRequest request = ServletActionContext.getRequest(); ........
调用Action : actionInvocation.invoke() 连Result一起调用(决定跳转哪个页面),所以,如果在拦截器中做该调用则返回结果return null即可,之后的过滤器的返回值不起作用
actionInvocation.invokeActionOnly()只调用Action没有调用Result,此后由intercept方法返回值来确定跳转哪个页面,不再调嵌套的过滤器
过滤器只接收一次action返回的result,之后的过滤器接收上一个过滤器返回的result
*********************************struts2配置*******************************
重定向可以再url后拼接参数,如果转发就没必要在url后传参了因为共享request
<result name="initr">/WEB-INF/page/sys/classify.jsp?temp=${temp}&id=xxx</result> // type="redirect" 默认为dispatcher
平时我们常用的多个参数用&连接,但是在Struts2的配置文件中&是特殊字符需要转义 使用&转义---------注意传值和request取值的方式不同
*********************************struts2非UI标记*******************************
struts2的非UI标记:
<s:property value="message" escape="true" default=""
value:从ognl表达式中取出数据
escape:表示value中从"message"取出的数据是否转义,默认转义,转义就是<a><a/>安原样输出
default:如果ognl表达式中取不到值
<s:iterator value="userList" status="st">
<s:property value="#st.index"/>//获取该元素下标,st.count计数从1开始
<s:property value="username"/>
</s:iterator>
el表达式计算 test="${sunzi.PMid eq childMenu.MId}"
jar包归类:
导入导出excel:
/ccms/WebRoot/WEB-INF/lib/poi-3.10-FINAL-20140208.jar
/ccms/WebRoot/WEB-INF/lib/poi-ooxml-3.10-FINAL-20140208.jar
/ccms/WebRoot/WEB-INF/lib/poi-ooxml-schemas-3.10-FINAL-20140208.jar
/ccms/WebRoot/WEB-INF/lib/xmlbeans-2.3.0.jar
JOX对xml解析:
/ccms/WebRoot/WEB-INF/lib/dtdparser113.jar
/ccms/WebRoot/WEB-INF/lib/jaxp.jar
/ccms/WebRoot/WEB-INF/lib/jox116.jar
/ccms/WebRoot/WEB-INF/lib/parser.jar
json:
/ssh_example/WebRoot/WEB-INF/lib/commons-collections-3.1.jar
/ssh_example/WebRoot/WEB-INF/lib/commons-logging.jar
/ssh_example/WebRoot/WEB-INF/lib/json-lib-2.3-jdk15.jar
/ssh_example/WebRoot/WEB-INF/lib/commons-beanutils-1.7.0.jar
/ssh_example/WebRoot/WEB-INF/lib/commons-lang-2.4.jar
/ssh_example/WebRoot/WEB-INF/lib/ezmorph-1.0.3.jar
cxf依赖(jdk7环境)
/ws_client/lib/cxf-2.6.8.jar
/ws_client/lib/jaxb-api-2.2.5.jar
/ws_client/lib/jaxb-impl-2.2.5.1.jar
/ws_client/lib/neethi-3.0.2.jar
/ws_client/lib/wsdl4j-1.6.3.jar
/ws_client/lib/xmlschema-core-2.0.3.jar
cxf wss4j所需jar包
C:\Users\Administrator\Desktop\cxf\myjar\cxf-2.6.8.jar
C:\Users\Administrator\Desktop\cxf\myjar\jaxb-api-2.2.5.jar
C:\Users\Administrator\Desktop\cxf\myjar\jaxb-impl-2.2.5.1.jar
C:\Users\Administrator\Desktop\cxf\myjar\neethi-3.0.2.jar
C:\Users\Administrator\Desktop\cxf\myjar\stax2-api-3.1.1.jar
C:\Users\Administrator\Desktop\cxf\myjar\woodstox-core-asl-4.2.0.jar
C:\Users\Administrator\Desktop\cxf\myjar\wsdl4j-1.6.3.jar
C:\Users\Administrator\Desktop\cxf\myjar\wss4j-1.6.10.jar
C:\Users\Administrator\Desktop\cxf\myjar\xmlschema-core-2.0.3.jar
C:\Users\Administrator\Desktop\cxf\myjar\xmlsec-1.5.3.jar
C:\Users\Administrator\Desktop\cxf\myjar\spring-aspects-3.2.0.M2.jar
C:\Users\Administrator\Desktop\cxf\myjar\spring-context-support-3.2.0.M2.jar
C:\Users\Administrator\Desktop\cxf\myjar\spring-flex-core-1.5.2.RELEASE.jar
C:\Users\Administrator\Desktop\cxf\myjar\spring-jdbc-3.2.0.M2.jar
C:\Users\Administrator\Desktop\cxf\myjar\spring-orm-3.2.0.M2.jar
C:\Users\Administrator\Desktop\cxf\myjar\spring-struts-3.2.0.M2.jar
C:\Users\Administrator\Desktop\cxf\myjar\spring-aop-3.2.0.M2.jar
C:\Users\Administrator\Desktop\cxf\myjar\spring-beans-3.2.0.M2.jar
C:\Users\Administrator\Desktop\cxf\myjar\spring-context-3.2.0.M2.jar
C:\Users\Administrator\Desktop\cxf\myjar\spring-core-3.2.0.M2.jar
C:\Users\Administrator\Desktop\cxf\myjar\spring-expression-3.2.0.M2.jar
C:\Users\Administrator\Desktop\cxf\myjar\spring-tx-3.2.0.M2.jar
C:\Users\Administrator\Desktop\cxf\myjar\spring-web-3.2.0.M2.jar
查询客户
只能查询出有分类信息的客户,添加的客户不能及时查询出来
当前登录人只能看到其所在组织机构及其下级组织机构的客户
客户分类:
添加客户分类信息因为客户还没客户分类信息,只能查询出所有客户
添加客户分类信息时,只能选择其权限下的客户(关于客户的查询都有权限控制)
用户管理:
添加用户,只能选择当前登录人权限下的组织机构
分公司,办事处,销售区域
总部登录:可看到所有分公司,办事处和销售区域是根据分公司级联
大区登陆:可看到大区下的分公司,办事处和销售区域是根据分公司级联
分公司登陆:本分公司不看更改,可看到分公司下的办事处,销售区域根据办事处级联
办事处登陆:本分公司,本办事处不看更改,可看到办事处下的销售区域
日志记录:对于主表记录的都是客户ID,因其没有物理删除
对于子表添加,修改记录的是ID,删除记录的是重要信息字段
联系方式信息:客户营业执照注册地址
店铺信息:店铺名称
物流信息:收货联系人
财务信息:税务登记号
客户分类:客户ID
exp ccms/ccms@orcl file='E:/region22.dmp' tables = (region)
exp ccms/ccms@orcl file='E:/ccms.dmp' tables =(userdata,saleregion,role_menu_info,role_info,region,orgsuporg,org,opr_info,menu_info,factory_level,factory_attr)
imp ccms/ccms@orcl file='E:/ccms.dmp' full=y
dba导出的dmp文件须有dba权限的用户导入
oracle:
数据库 实例 表空间 用户
查询当前数据库实例名:select instance_name from v$instance;
查看数据库用户:select * from dba_users;
一个数据库实例可以有N个表空间,一个表空间下可以有N张表
创建表空间:
create tablespace db_test
datafile 'D:\oracle\product\10.2.0\userdata\db_test.dbf'
size 50m
autoextend on;
Oracle数据库建好后,要想在数据库里建表,必须先为数据库建立用户,并为用户指定表空间。
创建用户:
CREATE USER 用户名
IDENTIFIED BY 密码
DEFAULT TABLESPACE 表空间(默认USERS)
TEMPORARY TABLESPACE 临时表空间(默认TEMP) TEMPORARY TABLESPACE temp;(这里临时表空间不能使用我们创建的db_tes)
给用户分配权限:
GRANT CONNECT TO utest;
GRANT RESOURCE TO utest;
GRANT dba TO utest;--dba为最高级权限,可以创建数据库,表等。
索引和表都是独立存在的,不要将被索引的表和索引指向同一个表空间,
这样可以避免产生IQ冲突