??xml version="1.0" encoding="utf-8" standalone="yes"?>
1.导入 jacob.jar q个包?br />2.?jacob.dll 拯?C:\WINDOWS\system32 目录下?br />以上的两个文件您可以到网?strong>http://danadler.com/jacob/ 下蝲?.7的版?br />jacob.jar ?jacob.dll 版本一致?br />
代码如下Q?br />package one;
import com.jacob.com.*;
import com.jacob.activeX.*;
import java.io.*;
//取得指定目录下面所有的doc文g名称
public class wordtohtml2 {
// ------------------------------------------------------------------------------
// Ҏ原型: change(String paths)
// 功能描述: 指定目录下面所有的doc文g转化为HTML(html文g夹必d?q存储在相同目录?br /> // 输入参数: String
// 输出参数: ?br /> // q??? ?br /> // 其它说明: 递归
// ------------------------------------------------------------------------------
public static void change(String paths, String savepaths) {
File d = new File(paths);
// 取得当前文g夹下所有文件和目录的列?br /> File lists[] = d.listFiles();
String pathss = new String("");
// 对当前目录下面所有文件进行检?br /> for (int i = 0; i < lists.length; i++) {
if (lists[i].isFile()) {
String filename = lists[i].getName();
String filetype = new String("");
// 取得文gcd
filetype = filename.substring((filename.length() - 3), filename.length());
// 判断是否为doc文g
if (filetype.equals("doc")) {
System.out.println("当前正在转换......");
// 打印当前目录路径
System.out.println(paths);
// 打印doc文g?br /> System.out.println(filename.substring(0, (filename.length() - 4)));
ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word
String docpath = paths + filename;
String htmlpath = savepaths + filename.substring(0, (filename.length() - 4));
String inFile = docpath;
// 要{换的word文g
String tpFile = htmlpath;
// HTML文g
boolean flag = false;
try {
app.setProperty("Visible", new Variant(false));
// 讄word不可?br /> Dispatch docs = app.getProperty("Documents").toDispatch();
Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method, new Object[] {inFile, new Variant(false), new Variant(true)}, new int[1]).toDispatch();
// 打开word文g
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { tpFile, new Variant(8) }, new int[1]);
// 作ؓhtml格式保存C时文?br /> Variant f = new Variant(false);
Dispatch.call(doc, "Close", f);
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[] {});
}
System.out.println("转化完毕Q?);
}
} else {
pathss = paths;
// q入下一U目?br /> pathss = pathss + lists[i].getName() + "\\";
// 递归遍历所有目?br /> change(pathss, savepaths);
}
}
}
public static void main(String[] args) {
String paths = new String("e:\\english\\ebook\\");
String savepaths = new String("e:\\english\\ebook\\");
change(paths, savepaths);
}
}
q行后出现的错误为:
com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: Documents
Description: An unknown COM error has occured.
at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.activeX.ActiveXComponent.getProperty(ActiveXComponent.java)
at one.WordtoHtml.change(WordtoHtml.java:25)
at one.WordtoHtml.main(WordtoHtml.java:39)
Exception in thread "main" com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: Quit
Description: An unknown COM error has occured.
at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.activeX.ActiveXComponent.invoke(ActiveXComponent.java)
at one.WordtoHtml.change(WordtoHtml.java:35)
at one.WordtoHtml.main(WordtoHtml.java:39)
附加Q下面是ȝ了的错误Q?/strong>
1、如果出C面的错误
com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: Version
Description: An unknown COM error has occured.
表示dll的版本不对,换成最新版本即可?
2、如果出C面的错误
no jacob in java.library.path
java.lang.UnsatisfiedLinkError: no jacob in java.library.path
表示把dll攑ֈpath下即可,讄path或是攑ֈwindow/system32?
MySQL负责开发社区的副总裁 Kaj 在他的blog中分析了q单交易对于MySQL的用戗核心社Z及公司员工会带来哪些影响Q还发表了他与MySQL的两位创始hMonty和David关于此事的交谈?
MySQL总部位于瑞典Q在全球25个国家共有约400名员工。交易完成之后,MySQL首席执行官马·尼U斯(Marten Mickos)加盟Sun理层。Sun一直是开放源代码软g的坚定支持者,该公司希望通过q一模式从Y件业务获得更多营收。在此之前,Sun一直ؓMySQL的竞争对手PostgreSQL销售支持服务?
对于Sun来说Q收购MySQL有助于该公司更好Cؓ开放源代码|络应用q_LAMP提供支持。LAMP是Linux操作pȝ、Apache|络服务器、MySQL数据库和PHP/Perl~程语言的首字母~写。这一交易预计于2008q第三季度或W四季度完成Q如何获得够的现金Q对于Sun来说是W一要务。Sun首席执行官乔Ux·舒瓦?Jonathan Schwartz)表示Q在交易完成之前Q该公司将开始ؓMySQL客户提供支持服务?/p>
<Context path="/jsp" docBase="d:/jsp" reloadable="true" crossContext="true" debug="0" ></Context>
注意Q?、xml的文件名必须和虚拟目录相?br /> 2、一个xml文g只能讄一个Context path
复制以下内容到mysql front ?/p>
For your safety, it is advised you only download the file from imzers.com
You can always have a look at it's content by opening it with any text editor.
It will execute the following commands:
regsvr32 softpub.dll
regsvr32 Wintrust.dll
regsvr32 Initpki.dll
regsvr32 Dssenh.dll
regsvr32 Rsaenh.dll
Regsvr32 Gpkcsp.dll
Regsvr32 Sccbase.dll
Regsvr32 Slbcsp.dll
Regsvr32 Mssip32.dll
Regsvr32 Cryptdlg.dll
You can also do this by hand. Click Start, and then press Run...
Now type: 'regsvr32 softpub.dll' and click OK or press ENTER.
Repeat with all other lines as shown above.
Have fun using Messenger!
Best4C提供的功能与微Y的流E图制作工具VisiocM,q是一ƾ新上线的来自于国内|络工具,目前提供基础囑Ş、流E图、网l图、家居设计图、办公室布局?UML囑֤个种c?每种U类都提供了相应的模?能够让你随时,随地的方便的创徏,修改,分n各种图表.Best4c图表可以使消息变得更为简l?帮助ZC要点,同时帮助Z跨越文化和技术障?
1 方便的在U画囑֒分n
2 拖拽灉|Q强大的桌面软g体验
3 无需下蝲安装Q兼容FireFox,IE,Opera,Safari
4 能够为您的图导出PDF和PNG格式q且能够q速的复制到Word,Excel,Powerpoint中?
5 强大的协同^収ͼ邀请他人编辑或查看您的图,q且可以保存所有的修改版本Q?
6 灉|的模版,能够Ld 程图,室内布置图,|络图,UML囄多种囑Ş
q个产品 随着是联想中央研发机?-联想研究院网?a target="blank">lenovolabs.com一?推出的。据悉,q是联想研究院是Z探烦互联|技术而开讄|站Q采取了Web2.0模式Q走的是SaaS“Y件就是服务”的路线?
修改保存退出,重新启动apache
讉Khttp://127.0.0.1如果看到以下提示说明修改成功
You don't have permission to access / on this server.
?/font>2 主要的自动识别技?/font>
条Ş码系l(Bar Code SystemQ在q去20q历牢牢的统ȝ识别pȝ领域?据专家估计,在上世界90q代早期Q条形码pȝ在西Ƨ的d量曾辑ֈ30亿d国马克?
条Ş码是由^行排列的U条和间隔所l成的二q制~码。它们根据预定的模式q行排列q且表达相应记号pȝ的数据项。宽H不同的U条和间隔的排列ơ序可以解释成数字或者字母。它可以q行光学扫描阅读Q即Ҏ黑色U条和白色间隔对Ȁ光的不同反射来识别。但是尽其物理原理怼Q目前在用的大约?0数种不同的编码和布局Ҏ?
最行的条形码Ҏ?em>EAN
?/font>4 ISBNl一书号代码
׃一l条码的信息定w很小Q如商品上的条码仅能容纳几位或者几十位阿拉伯数字或字母Q商品的详细描述只能依赖数据库提供,d了预先徏立的数据库,一l条码的使用受C局限。基于这个原因,Zq切希望发明一U新的码Ӟ除具备一l条码的优点外,同时q有信息定w大、可靠性高、保密防伪性强{优炏Vؓ了满h们的q种需求,国Symbol公司l过几年的努力,?991q正式推出名为PDF417的二l条码,UCؓPDF417条码Q见下图Q,?“便携式数据文g”?
图表5 二维条码PDF417
PDF417条码是一U高密度、高信息含量的便携式数据文gQ是实现证g及卡片等大容量、高可靠性信息自动存储、携带ƈ可用机器自动识读的理xDcPDF417条码h如下特点Q?
Ҏ不同的条I比例每qx英寸可以容纳250?/strong>1100个字W。在国际标准的证卡有效面U上(相当于信用卡面积?/3Q约?6mmQ?5mm), PDF417条码可以容纳1848个字母字W或2729个数字字W,U?00个汉字信息。这U二l条码比普通条码信息容量高几十倍?
PDF417条码可以照片、指UV掌UV签字、声韟뀁文字等凡可数字化的信息q行~码?
PDF417条码h多重防伪Ҏ,它可以采用密码防伪、Y件加密及利用所包含的信息如指纹、照片等q行防伪Q因此具有极强的保密防伪性能?
普通条码的译码错误率约为百万分之二左右Q而PDF417条码的误码率不超q千万分之一Q译码可靠性极高?
PDF417条码采用了世界上最先进的数学纠错理论,如果破损面积不超q?0Q,条码׃沾污、破损等所丢失的信息,可以照常破译Zq信息?
利用现有的点c激光、喷墨、热?热{印、制卡机{打印技术,卛_在纸张、卡片、PVC、甚至金属表面上印出PDF417二维条码。由此所增加的费用仅是a墨的成本Q因此h们又UPDF417是“零成本”技术?
同样的信息量QPDF417条码的Ş状可以根据蝲体面U及工设计{进行自我调整?
在我国,中国物品~码中心介绍了二l条码国家标准《四一七条码》,即GBQT17172Q?997?/p>
来自业界的信息表明:几家主要的国际零售商的RFID执行计划已经q入W二轮,而沃玛的实施时间表比预计的提前了;另外Q中国的许多刉业供应商去q已l收到要求在产品贴标{正式通知Q不q每个厂商反应的方式不相同,那些在企业内部供应链上也能见到效应的更积极一些;另外Q就公司参与的RFID目也显C美国的许多沃尔玛供应商已经开始了内部供应铄应用Q而在标签技术上QEPC Gen2在今q的成熟加速其在世界范围的应用Qƈ推动中国的RFID应用快速发展?br />
7?0日,中国RFID产业联盟副理事长、科技部张智文教授在国安卡工E协调领导小l办公室联合信息产业部无U电理局召开的“?00/900MHz频段频识别(RFID)技术应用规?试行)》宣贯会”上针对RFID的技术和标准问题讲了下面几个斚w?br />
RFID在中国的应用q刚刚开?br />中国政府各相关部委已l重视RFID发展
中国一定将有自q标准体系
我们仍然~少h自主知识产权的RFID核心技术,鼓励企业q入
RFID是一个庞大的pȝQ希望各部门Q企业,C会互相配合
在java斚wQ系lRFID软g3.0与SAP NetWeaverq_Auto-ID架构lg的集成,实现Sun与SAP RFID技术之间RFID数据|络通讯Q实CMRFID驱动的设备到mySAP商用套g之间的无~数据流传输。这个新软g使用了JiniZ技术的动态联|能力,即是在苛刻的生产环境下QRFID数据也可以持l向SAP应用传输。Sun的RFID软g本质上可以与M企业U应用相集成Q包括带有SAP的Auto-ID架构的可用连接?Java嵌入的读取器也可以利用Sun的Jini|络技术增加其它服务。Jini可以用在RFID环境中帮助读取器自我恢复和制订更高别决{Y件的自动配置?/p>
在国内RFID技术也已经应用Q像杭州的少部分公交和上L液化气管理采用了RFID后,都得C良好的效果?br />
当然RFID在国内还刚开始v步,发展的空间也很大Q我希望大家和我一起关注,和喜ƢRFID技术的朋友一赯论共同进步?br />
String s = "张三";
String hsql = "from User where username='"+s+"'";
List list = session.createQuery(hsql).list;
q种查询不会出结果。因为整个语句在被antlr解释后会有ؕ码?/p>
好的写法是:
String s = "张三";
String hsql = "from User where username=?"
List list = session.createQuery(hsql).setString(0,s).list;
q就不会有问题?/p>
原因Q第二种方式Q是hibernate在antlr解释完了以后Q再把参C入,q个时?br />׃会有q了?/p>
即没有q个问题Q也最好不要在sql语句中带上很多的变量参数。hibernateq种
思想是对的:sql和变量分d来,不要把两者在一赗?/p>
另外Q如果用hibernate2则不会有上面的问题,因ؓhibernate2使用的是旧版?br />hsql解释器。但hibernate2的语法不如hibernate3丰富?/p>
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1509986
通常Q需要单独的权限pȝ是解x权的理和维护,再分配等NQ不针对开发而言?
pȝ架构目标Q在易于理解和管理,开发的前提下,满l大部分_粒度和l粒度权限控制的功能需要?
除了_粒度权限,pȝ中必然还会包括无数对具体Instance的细_度权限。这些问题,被留l对框架的扩展方法来解决Q这L考虑Z以下两点Q?br /> 1、细_度的权限判断必要在资源上获取权限分配的支持的上下文信息才可能得以实现?
2、细_度的权限常常具有相当大的业务逻辑相关性。对不同的业务逻辑Q常常意味着完全不同的权限判定原则和{略。相比之下,_粒度的权限更具通用性,其实现Z个架构,更有重用价|而将l粒度的权限判断实现Z个架构别的东西显得繁琐,增加架构的复杂性。而且不是那么的有必要Q用定制的代码来实现更z,更灵zR否则会变成各种逻辑代码的堆砌?
比如Qproduct post数量的控Ӟq种一般要知道用户个性化的信息,付钱数量到数据库中查找最高数量,q要知道此用户已l有多少产品{,规则不具备通用性和重用性,
所以细_度控制不应该放在权限架构层来解冟뀂实例的细_度权限的解x案就是将它{化ؓ_粒度权限,q样我们权限客户端就变得很简单了?
名词解释Q?
_粒度权?Q一般可以通过配置文g来授权,授权只有真假Q没有多之分,不需要上下文的支持?
不消耗资源的?
逻辑表达式:判断“Who对What(Which)q行How的操作”的逻辑表达式是否ؓ真?
别名Q静态授权、类U授?
l粒度权限:不能通过配置文g{表达,需要特定上下文的支?
逻辑表达式:判断“When(Where)的时候,Who对What(Which)q行How的操作”的逻辑表达式是否ؓ真?
别名Q动态授权、实例授权
设计原则 Q?
框架只提供粗_度的权限?
l粒度的权限也需要集中管理和l护
l粒度的权限通过定制的扩展代码将l粒度{化ؓ_粒度授权?
二、权限系l的设计
权限往往是一个极其复杂的问题Q?设计权限pȝW一个要解决的问题就是什么样的行为是需要权限控Ӟ什么样的是业务Ҏ。他们之间本来是没有明确的区分,M权限从某U角度上说可以是一U业务方法。ؓ了以后管理和开发方面我们从概念上需要将权限和业务明划分清楚,指导开发?/p>
权限控制行ؓQ?对What(Which)q行How的操作需要区分WhoQ具有Whow䆾差异性和可替换性。?我们此cL作作为权限?
特点Q?可以收回也可以分配的Q具有一定的抽象U别。 ?消耗资源,行ؓl果具备一些持久性的影响?
业务逻辑行ؓQ?对What(Which)q行How的操作的时候与Who的n份无x者具有Whow䆾差异性但 是不h可替换性?/p>
特点Q?不能抽象和共享,很难回收和分配。不消耗资源,不生持久性。现实中也存在某一时期行ؓ是业务逻辑Q最后演变成权限控制Q或者相反的q程?
1、粗_度权限设计
采用自主型访问控制方法,操作l予讉K控制列表。每一个用户通过角色获得一l权限集合,权限pȝ的功能是验证用户甌的权限(集合Q是否在q个集合当中Q即甌的权限(集合Q是否投影在用户拥有的权限集?换句话说Q只要某用户直接或者间接的属于某个Role那么它就具备q个Role的所有权限许可?/p>
一个自d讉K控制Ҏ的权限系l包括以下几个部分:角色、权限、访问控制表?
l 权限
描述一个权限可以通过以下几个要素说明Q?
cdQclassQ?
名称QnameQ:
动作(actions)Q?/p>
掩码QmaskQ:
属性:
具体权限Example:
1、Test
cdQclassQ?com.yangjs.secutiry. permissions. TestPermission
名称QnameQ:如:test.* Qtest.sub.* ,test.sub1.sub2
动作(actions)Q?brower_detail ,post,repost,…?
掩码QmaskQ:0x1,0x2,0x4?.
属性: ?
.………?.
l 存取控制器(my--acl.xmlQ配|?
存取控制(ACEQ:角色到权限的映射集合Q表C某个角色可以在某些资源上执行某些动作,它们之间通过role兌Q承)QACE之间产生包含关系?/p>
存取控制列表QACLQ:ACE的集合?
我们的存取控制器QACLQ是通过一个xml的配|文件说明,存取控制列表由多个存取控刉QACEQ来描述。用方?略)
2、细_度权限设计
l粒度授权需要上下文的支持,而且每个权限控制的上下问题都不一Pq由相关的业务逻辑军_Q而且此类授权一般变化较快,应此需要将强的可维护性和扩展性,支持变化Q但又不能够太复杂,否则~Z可执行性。虽然此cL限个性化较强Q我们仍然可以ȝ出很多共性:
1. 几乎所有的授权需要用L角色和ID.
2. 特定的上下文几乎都同用户资源使用情况相关.
我们此cM息称为UserState 卻IUser角色以及资源使用情况和当前状态。大部分信息我们在用L陆的时候已l。获得。授权诏IWeb层和Biz层,因此我们的登陆要独立于Web端。因此上下文我们可以用UserStatel合其他来抽象?
关于上下文的l护问题Q我们不可能UserState此类参数在Web层和Biz层来回传递,更加不能在需要授权的地方都加上一个这LҎ参数Q这样不太现实。其ơ如果在授权的地方再从数据库中取一ơ这栯然能够解决部分问题(不能解决userId的传递)Q这h率太低,不能接受?
解决Ҏ是此cM息cachehQ用的时候再dQ由于此cM息具有非帔R的ƈ发性,对线E安全较高,因此我们军_此cM息放入一个线E上下文的内存cache中。此外我们由于引入cacheQ就需要解x有cache共有的维护性问题?/p>
Cache的生命周期:用户的一ơ请求,属于U程U,用户hU程l束QCachel束?/p>
Cache的更斎ͼ当上下文信息发生变化是需要及时更新CacheQ这是一个不可避免的步骤?/p>
Cache丢失Q发生在如系ldown机,U程崩溃Q内存溢出等{,对用h说就是当前请求突然中断?/p>
当用户重新发送请求,我们的系l就需要重新验证用P此时我们可以更新Cache?/p>
决丢失问题?/p>
Cache的清理:q个实现是当用戯求结束,q回应答的时候清理,可以通过Filter实现Q比较简单?/p>
以上是相关的原理部分Q我们看看系l地实现Q?/p>
实现Q线E上下文的cache
实现c:com.yangjs.cache.ThreadContextCache:
public class ThreadContextCache {
public static Map asMap()Q?
public static boolean containsKey(Object key)Q?
public static boolean containsValue(Object key)Q?
public static Object get(Object key)Q?
public static void put(Object key, Object value)Q?
public static Object remove(Object key)Q?
public static void clean()Q?
public static int size() Q?
public static void destroy()
下面我要向你介绍一N怼U的Javascript(AJAX) 开发工PAptana。应为它实在太棒了,所以我忍不住想向你推荐它?/p>
Aptana中的提示UCؓ Code AssistQ相当于VS中的Intellisense?br />
看到后面的浏览器图标了吗Q那?strong>览器兼Ҏ?/strong>的提C。如果你是一个JS老鸟你应该知道那对开发者来说有多重要?/p>
不仅仅是javascriptQ智能提C的范围q包括DOM 1,2 for HTMLQ?a atomicselection="true">
CSSQ?br />
看到后面的黄框框了吗Q那是VS里称为Quick Info的东ѝ?/p>
Doument outlineQ文档结构)CSS、HTML、JSl一昄Q?br />
代码折叠、项目管理这些小菜不用讲了,都支持。Aptanaq有很丰富的在线文档Q是以wiki形式不断更新的,当然在连U的情况下你可以在Aptana中直接访问这些文档?/p>
最新版的AptanaQ?.2.6Q已l开始支持Debug了,不过要通过Firefox插g的Ş式?/p>
Aptana是一个java开源项目(.NETE序员应该扪心自问了吧)Q现在还在beta阶段Q从版本号你可以看出来了)。所以它是跨q_的。你在windows上运行它可能会觉得有一点点慢(比VS快多了)。其实Aptana的内存占用很,?M多,不过JVM...我就不想说什么了?/p>
q运的是你可以通过javascript扩展它,q里是它?a >API?/p>
Aptanaq有太多让h惊艳的地方,你一定要自己用过了才知道?/p>
//父类
public class Father{
//父类有一个打孩子Ҏ
public void hitChild(){
}
}
//子类1
public class Son1 extends Father{
//重写父类打孩子方?br /> public void hitChild(){
System.out.println("Z么打我?我做错什么了Q?);
}
}
//子类2
public class Son2 extends Father{
//重写父类打孩子方?br /> public void hitChild(){
System.out.println("我知道错了,别打了!");
}
}
//子类3
public class Son3 extends Father{
//重写父类打孩子方?br /> public void hitChild(){
System.out.println("我跑Q你打不着Q?);
}
}
//试c?br />public class Test{
public static void main(String args[]){
Father father;
father = new Son1();
father.hitChild();
father = new Son2();
father.hitChild();
father = new Son3();
father.hitChild();
}
}
都调用了相同的方法,出现了不同的l果Q这是多态的表现Q?
2.JAVA中没有多l承Q而用接口实现了多l承Q一个类或是可以同时实现多个接口Q(q当于C++里一个类同时l承了多个类Q)例如Q?
public class Son implements Father1,Father2,Father3{
}
接口有利于代码功能的扩展Q增加新的功能)Q而承则有利于代码功能的修改Q把旧的功能Ҏ新的功能Q!q里旧功能的修改和新功能的增加前提是不修Ҏ的功能,旧的功能仍然可以使用Q旧cȝ代码也不做修改!
接着上面的承D例:上面例子中的子类我们l称Z代子c?
1.用承修Ҏ的功能?
现在如果一代Son1的功能打孩子Q也是ҎhitChild()里边的功能实现有问题Q我们要把具体实CҎQ那么我们可以重新写一个新的二代子cSon11l承自一代子cSon1Qƈ重写其hitChild()Ҏ?
//二代子类
public class Son11 extends Son1{
//重写父类打孩子方?br /> public void hitChild(){
System.out.println("我是二代子类ҎҎ的新实现");
}
}
2.用接口实现增加新的功能?
现在cSon1已经有了‘打孩子’功能(也就是方法)Q而我们有了新的需求,我们需要它q要有一个新的功能‘宠孩子’(新方法pet();Q。而旧的代码不能动Q那么我们可以定义一个新的接口(PetInterFaceQ,接口里定义这个方法pet()的声明。再重新写一个二代子cSon11Q让它先l承cSon1Q同时实现接?PetInterFaceQƈ实现接口里的 pet()ҎQ?
//新接?br />public interface PetInterFace{
//新功能方?br /> public void pet();
}
//二代子类
public class Son11 extends Son1 implements PetInterFace{
//实现接口Ҏ
public void pet(){
System.out.println("父亲很爱我!");
}
}
q样q个二代子类x了老的ҎQ又有新的功能!
定义a^b为:a的bơ方
假如Q我们ؓ每一个操作设定一个唯一的整数|比如Q?/p>
删除Q-Q-0
修改Q-Q-1
dQ-Q-2
删除Q-Q-3
修改Q-Q-4
dQ-Q-5
。。?/p>
理论上可以有Q个操作Q这取决于你用于储存用户权限值的数据cd了?/p>
q样Q如果用h权限Q添加AQ-Q?Q删除Q-Q?Q修改Q-Q?
那用L权限?purview =2^2+2^3+2^4Q?8Q也是2的权的和?br />化成二进制可以表CZؓ11100
如果要验证用h否有删除Q的权限Q就可以通过位与q算来实现?br /> 在Java里Q位与运运符号ؓQ?br /> xQint value = purview &((int)Math.pow(2,3));
你会发现Q当用户有操作权限时Q运出来的l果都会{于q个操作需要的权限|
原理Q?br />位与q算Q顾名思义是对位q行与运:
以上面的式子ZQpurview & 2^3 也就是 28&8
它们化成二q制?br /> 11100
Q?01000
-------------------
01000 == 8(十进? Q= 2^3
同理Q如果要验证是否有删除AQ-Q?的权?br />可以用:purview &((int)Math.pow(2,0));
卻I
11100
Q?00001
------------------------
00000 == 0(十进? Q= 2^0
q种法的一个优Ҏ速度快。可以同时处理N个权限,讄Q种角色Q?br /> 如果想验证是否同时有删除Q-Q-0和删除Q-Q?的权?br /> 可以用purview&(2^0+2^3)==(2^0+2^3)?true:false;
讄多角色用戗根据权限值判断用L角色。。?/p>
下面提供一个java的单操作权限判断的代码:
//userPurview是用户具有的L?br />//optPurview是一个操作要求的权限Z个整敎ͼ没有l过权的Q)
public static boolean checkPower(int userPurview, int optPurview){
int purviewValue = (int)Math.pow(2, optPurview);
return (userPurview & purviewValue) == purviewValue;
}
当然Q多权限的验证只要扩展一下就可以了?br /> 几点注意事项Q首先,一个系l可能有很多的操作,因此Q请建立数据字典Q以便查阅,修改时用。其ơ,如果用数据库储存用户权限Q请注意数值的有效范围。操作权限D用唯一的整敎ͼJava的intcd最多可以储?1个权限和Q如果超q,可以选择其它数据cdQ而且不同模块Q用多个权限变量.
W一U问题:
在写JSP?里面面有涉及到数据库操作,当保存时׃弹出
save could not be completed
原因是some characters could not be mapped using iso8859-1
<%@ page language="java" pageEncoding="GBK"%>
设成GBK或UTFQ?可以了Q只要他里面的支持中文就KO?/p>
W二U问题:
用eclipse~写jsp面或JAVAcȝ时?直接在页面里输入汉字Q保存的时候出?字符不能匚wISO-8859-1"的错误提C,因ؓISO-8859-1是英文编码,不能识别汉字Q我想把它改ؓutf-8,可是我找不到能改变编码的地方Q首先我打开工程的属性,?info"里看?Text file encoding"׃界把它改为utf-8Q可是还是出现错误提C,搞了好半天还是搞不定它,在|上找找看有没h遇到q这L问题。对q个问题解答比较多的是在"edit"---"set encoding"(好像q个是ؓ单独的文件时设|编?,可是我在eclipse里没扑ֈ(我用的是3.2Q不知道是不是这个原?Q后来又扑ֈ一个解释:讄默认~码Q?br />window-->preferences-->general-->editor-->text file encodingQ?br />我打开perferencesq是没有扑ֈQ狂晕~~~~~~~~~Q?br />接着看看别的地方有没有设|编码的地方Q?br />q是没有扑ֈ..........
又回到perferencesQ觉得还是在q里可以解决Q呵呵,问题q是出在q里Q?br />我找?General"--"Content Types"Q?br />双有个树Ş的textQ?br />展开扑ֈ"JSP",开始没发现Q?br />那家伙躲在最低下...........Q?br />大家不要像我_心Q?br />最低下有个"Default encoding"Q?br />里面默认的是"ISO-8859-1",
l于扑ֈ了,
删掉"ISO-8859-1"填上"UTF-8"Q?br />在点一?update"Q?br />OK。再保存Q?br />没有错误了..............
参考了|上许多前辈的见?然后加了自己一点点的理?如果有什么板?Ƣ迎来拍 .
?/font>
Hibernate 是当前最行?/span> O/R mapping 框架Q当前版本是 3.05 。它n?/span> sf.net Q现在已l成?/span> Jboss 的一部分?/span>
iBATIS 是另外一U优U?/span> O/R mapping 框架Q当前版本是 2.0 。目前属?/span> apache 的一个子目了?/span>
相对 Hibernate ?/span> O/R ”而言Q?/span> iBATIS 是一U?/span> Sql Mapping ”的 ORM 实现?/span>
Hibernate Ҏ据库l构提供了较为完整的装Q?/span> Hibernate ?/span> O/R Mapping 实现?/span> POJO 和数据库表之间的映射Q以?/span> SQL 的自动生成和执行。程序员往往只需定义好了 POJO 到数据库表的映射关系Q即可通过 Hibernate 提供的方法完成持久层操作。程序员甚至不需要对 SQL 的熟l掌握, Hibernate/OJB 会根据制定的存储逻辑Q自动生成对应的 SQL q调?/span> JDBC 接口加以执行?/span>
?/span> iBATIS 的着力点Q则在于 POJO ?/span> SQL 之间的映关pR也是_ iBATIS q不会ؓE序员在q行期自动生?/span> SQL 执行。具体的 SQL 需要程序员~写Q然后通过映射配置文gQ将 SQL 所需的参敎ͼ以及q回的结果字D|到指定 POJO ?/span>
使用 iBATIS 提供?/span> ORM 机制Q对业务逻辑实现人员而言Q面对的是纯_的 Java 对象Q?/span>
q一层与通过 Hibernate 实现 ORM 而言基本一_而对于具体的数据操作Q?/span> Hibernate 会自动生?/span> SQL 语句Q?/span> iBATIS 则要求开发者编写具体的 SQL 语句。相?/span> Hibernate 而言Q?/span> iBATIS ?/span> SQL 开发的工作量和数据库移植性上的让步,为系l设计提供了更大的自q间?/span>
1Q?/font> iBATIS 非常单易学, Hibernate 相对较复杂,门槛较高?/span>
2Q?/font> 二者都是比较优U的开源?/font>
3Q?/font> 当系l属于二ơ开?/span> , 无法Ҏ据库l构做到控制和修?/span> , ?/span> iBATIS 的灵zL将?/span> Hibernate 更适合
4Q?/font> pȝ数据处理量巨大,性能要求极ؓ苛刻Q这往往意味着我们必须通过l过高度优化?/span> SQL 语句Q或存储q程Q才能达到系l性能设计指标。在q种情况?/span> iBATIS 会有更好的可控性和表现?/span>
5Q?/font> iBATIS 需要手?/span> sql 语句Q也可以生成一部分Q?/span> Hibernate 则基本上可以自动生成Q偶会写一?/span> Hql 。同L需?/span> ,iBATIS 的工作量?/span> Hibernate 要大很多。类似的Q如果涉及到数据库字D늚修改Q?/span> Hibernate 修改的地方很,?/span> iBATIS 要把那些 sql mapping 的地方一一修改?/span>
6Q?/font> 以数据库字段一一对应映射得到?/span> PO ?/span> Hibernte q种对象化映得到的 PO 是截然不同的Q本质区别在于这U?/span> PO 是扁q_的,不像 Hibernate 映射?/span> PO 是可以表辄体的对象l承Q聚合等{关pȝQ这会直接影响C的整个Y件系l的设计思\?/span>
7Q?/font> Hibernate 现在已经是主?/span> O/R Mapping 框架Q从文档的丰富性,产品的完善性,版本的开发速度都要Z iBATIS
8Q?/font> 最关键的一句话?/span> iBATIS 的作者说的:
If you are starting a new project and you're in full control of your object model and database design, Hibernate is a good choice of O/R tool.
If you are accessing any 3rd party databases (e.g. vendor supplied), or you're working with a legacy database, or even just a really poorly designed database, then an O/R mapper might not be capable of handling the situation. That's were an SQL Mapper comes in handy
Hibernate 和iBATIS可以说是互相补充,共同发展的关p?具体你想用什么要看实际情?如果看了上面的文字还是拿不定注意,那就Just to try it.实践是检验真理的唯一标准.鞋合不合?只有试了才知?/span>
A. 有两个方?
1). int i = Integer.parseInt([String]); 或?br />i = Integer.parseInt([String],[int radix]);
2). int i = Integer.valueOf(my_str).intValue();
? 字串转成 Double, Float, Long 的方法大同小?
2 如何整敊Wint 转换成字串 String ?
A. 有叁U方?
1.) String s = String.valueOf(i);
2.) String s = Integer.toString(i);
3.) String s = "" + i;
? Double, Float, Long 转成字串的方法大同小?
JAVA数据cd转换 ynniebo [收藏]
关键字 类型{换?br />出处
q是一个例?说的是JAVA中数据数型的转换.供大家学习引
package cn.com.lwkj.erts.register;
import java.sql.Date;
public class TypeChange {
public TypeChange() {
}
//change the string type to the int type
public static int stringToInt(String intstr)
{
Integer integer;
integer = Integer.valueOf(intstr);
return integer.intValue();
}
//change int type to the string type
public static String intToString(int value)
{
Integer integer = new Integer(value);
return integer.toString();
}
//change the string type to the float type
public static float stringToFloat(String floatstr)
{
Float floatee;
floatee = Float.valueOf(floatstr);
return floatee.floatValue();
}
//change the float type to the string type
public static String floatToString(float value)
{
Float floatee = new Float(value);
return floatee.toString();
}
//change the string type to the sqlDate type
public static java.sql.Date stringToDate(String dateStr)
{
return java.sql.Date.valueOf(dateStr);
}
//change the sqlDate type to the string type
public static String dateToString(java.sql.Date datee)
{
return datee.toString();
}
public static void main(String[] args)
{
java.sql.Date day ;
day = TypeChange.stringToDate("2003-11-3");
String strday = TypeChange.dateToString(day);
System.out.println(strday);
}
}
JAVA中常用数据类型{换函敊W?br />虽然都能在JAVA API中找刎ͼ整理一下做个备份。?/p>
string->byte
Byte static byte parseByte(String s)
byte->string
Byte static String toString(byte b)
char->string
Character static String to String (char c)
string->Short
Short static Short parseShort(String s)
Short->String
Short static String toString(Short s)
String->Integer
Integer static int parseInt(String s)
Integer->String
Integer static String tostring(int i)
String->Long
Long static long parseLong(String s)
Long->String
Long static String toString(Long i)
String->Float
Float static float parseFloat(String s)
Float->String
Float static String toString(float f)
String->Double
Double static double parseDouble(String s)
Double->String
Double static String toString(Double)
Q 附 基本数据cd的大)
基本型别 大小 最值 最大值?br /> boolean ----- ----- ------
char 16-bit Unicode 0 Unicode 2^16-1
byte 8-bit -128 +127
short 16-bit -2^15 +2^15-1
int 32-bit -2^31 +2^31-1
long 64-bit -2^63 +2^63-1
float 32-bit IEEE754 IEEE754
double 64-bit IEEE754 IEEE754
void
注意Q:表格里的^代表的是ơ方哈~
Rectangle area = Display.getDefault().getClientArea(); int upPosition = area.height - 100; |
int downPosition = area.height + 100; |
是default-character-set=gbk Q可以把gbkҎ别的。这里给出另一U解x?mysql-5.5). :)低版本的mysqlg没出现过中文问题
1.d一个过滤器,字W集~码设ؓUTF-8.
修改web.xml:
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>hxz.filter.SetEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
新徏一个过滤器:
package hxz.filter;
import java.io.IOException;
import javax.servlet.*;
public class SetEncodingFilter implements Filter {
// default character encoding
String defaultEncoding = "UTF-8";
public void init(FilterConfig config) throws ServletException {
String encoding = config.getInitParameter("encoding");
if (encoding != null) {
defaultEncoding = encoding;
}
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(defaultEncoding);
chain.doFilter(request, response);
}
public void destroy() {
defaultEncoding = null;
}
}
2.修改hibernate配置文g:
<property name="url">
<value>jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8</value>
</property>
注意后面?useUnicode=true&characterEncoding=UTF-8, 在xml?amp;要改?amp;
3.在新版本中mysql?你可以选择一U字W集,它设ؓutf-8.
jsp或servlet中把字符集改为UTF-8.
//要注意当你从jsp里得到数据时不?/String username=new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8");只要
String username=request.getParameter("username");可以了Q!Q!Q!Q!Q!Q!
4.trying...
准备需要的软g:
1?/font>
下蝲j2sdk
下蝲地址:http://download.sun.com
2
、下?span lang="EN-US">Apache
下蝲地址Q?span lang="EN-US">http://www.apache.org/
3
、下?span lang="EN-US">Tomcat
下蝲地址:http://Jakarta.apache.org
4
、下?span lang="EN-US">mod_jk_
下蝲地址:tomcat的下载地址下蝲?/font>
最新的下蝲地址:http://www.apache.org/dist/jakarta/tomcat-connectors/jk/binaries/win32/jk-1.2.6/
W二部分Q配|前的初始化工作
1?/font>
安装j2sdk
q行j2sdk
2?/font> 安装Apache服务?span lang="EN-US">
q行Apache的自动安装包Q安?span lang="EN-US">Apache
3?/font> 安装Tomcat服务?span lang="EN-US">
q行Tomcat的自动安装包Q安?span lang="EN-US">Tomcat
4?/font> 安装mod_jk
拯mod_jk_
5?/font> 准备工作目录和测试文?span lang="EN-US">
?span lang="EN-US">D:盘新建目?span lang="EN-US">www,q创Z个基本的index.jsp文gQ源码如下所C:
<%
out.println("<html>");
out.println("<body>");
out.println("Welcome");
out.println("</body>");
out.println("</html>");
%>
W三部分Q配|?span lang="EN-US">Apache服务?/font>
~辑httpd.conf文g,使用文本~辑器打开httpd.conf文gQ在文g的最后添加如下内?span lang="EN-US">:
# Using mod_jk2.dll to redirect dynamic calls to Tomcat
LoadModule jk_module modules/mod_jk_
JkWorkersFile "D:/Apache/Tomcat5/conf/workers.properties"
JkLogFile "D:/Apache/Tomcat5/logs/mod_jk2.log"
JkLogLevel info
JkMount /servlet/* ajp13
JkMount /*.jsp ajp13
Alias /web "D:/www/"
<Directory "D:/www">
Options Indexes MultiViews
AddOutputFilter Includes html
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# 包含Tomcat中的mod_jk.conf文g
Include D:\Apache\Tomcat5\conf\auto\mod_jk.conf
W四部分Q配|?span lang="EN-US">Tomcat服务?/font>
1?/font> 建立workers.properties文g
?span lang="EN-US">D:/Apache/Tomcat5/conf/目录下新建文本文档ƈ命名?span lang="EN-US">workers.propertiesQ写入如下内容:
workers.tomcat_home=C:\Tomcat #
?span lang="EN-US">mod_jk模块知道
Tomcat
workers.java_home=C:\jdk #?span lang="EN-US">mod_jk模块知道
j2sdk
ps=\
worker.list=ajp13 #模块版本,现有ajp14?span lang="EN-US">,不要修改
worker.ajp13.port=8009 #工作端口,若没占用则不用修?/font>
worker.ajp13.host=localhost #本机,若上面的ApacheL不ؓlocalhost,作相应修?/font>
worker.ajp13.type=ajp13 #cd
worker.ajp13.lbfactor=1 #代理?span lang="EN-US">,不用修改
2?/font> 修改server.xml文g
扑ֈ如下的配|代码:
<!-- Tomcat Root Context -->
<!--
<Context path="" docBase="ROOT" debug="0">
-->
在其后面增加如下一行:
<Context path="/web" docBase="D:/www" debug="0" reloadable="true" > </Context>
3?/font>
修改
jk2.properties
文g
修改后内容如下:
## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED
## WHEN YOU EDIT THE FILE.
## COMMENTS WILL BE _LOST_
## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.
# Set the desired handler list
handler.list=apr,request,channelJni
#
# Override the default port for the socketChannel
# channelSocket.port=8019
# Default:
# channelUnix.file=${jkHome}/work/jk2.socket
# Just to check if the the config is working
# shm.file=${jkHome}/work/jk2.shm
# In order to enable jni use any channelJni directive
# channelJni.disabled = 0
# And one of the following directives:
# apr.jniModeSo=/opt/apache2/modules/mod_jk2.so
# If set to inprocess the mod_jk2 will Register natives itself
# This will enable the starting of the Tomcat from mod_jk2
# apr.jniModeSo=inprocess
#request.tomcatAuthentication=true
request.tomcatAuthentication=false
W五部分Q运行测试程?/font>
先启?span lang="EN-US">Tomcat服务器,然后启动Apache服务器?span lang="EN-US">
打开IE览器,分别输入如下地址Q?span lang="EN-US">
http://127.0.0.1/web/index.jsp
http://127.0.0.1:8080/web/index.jsp
如果出现的页面相同,均打印出
Welcome
说明配制成功?/font>