自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(0)
  • 资源 (30)
  • 收藏
  • 关注

空空如也

邮件发送javamail所需jar包.rar

邮件发送javamail所需jar包.rar 邮件发送javamail所需jar包.rar

2011-04-19

查看java编译后的class文件的反编译工具.rar

查看java编译后的class文件的反编译工具.rar 使用它就能够查看编译过的代码程序了

2011-04-19

《编译原理》蒋立源课后答案【khdaw_lxywyl】

《编译原理》蒋立源课后答案【khdaw_lxywyl】 《编译原理》蒋立源课后答案【khdaw_lxywyl】 《编译原理》蒋立源课后答案【khdaw_lxywyl】

2011-04-19

struts2中用ajax标签出错或时间控件显示不出来

学习使用struts2的ajax时,看书说要引入<s:head theme="ajax"/>,但引入后就一直报错 在jsp页面的<head></head>之间插入<s:head theme="ajax"/>这句话,打开页面弹个对话框提示站点无法访问,如果把<s:head theme="ajax"/>这句取消了,才能打开页面,但这页面也失去ajax功能了 这主要是strut2版本的问题,不是你代码的问题 页面部分关键代码粘贴在下面了。。 <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <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"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <s:head theme="ajax"/> <!--加了这句就打不开页面--> </head> <body> <s:form action="register" theme="ajax" validate="true"> <s:textfield label="用户名" name="username"></s:textfield> <s:password label="密码" name="password"></s:password> <s:password label="重新输入密码" name="repassword"></s:password> <s:textfield label="年龄" name="age"></s:textfield> <s:datetimepicker label="生日" name="birthday"></s:datetimepicker>加了这句后,时间控件同样显示不出来 <s:submit value="发布"></s:submit> </s:form> <s:property value="result"/> </body> </html> 如果你的Struts版本是2.1.6或以上的,那就要加struts2-dojo-plugin-2.1.8.jar,Struts2升级以后把Ajax和一些控件功能单独提取出来了,且放在了struts2-dojo-plugin-2.1.8.jar里。像我用的就是struts2.1.8,所以要在项目lib中加入struts2-dojo-plugin-2.1.8.jar这个包后, 页面应该改成: <%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib prefix="sd" uri="/struts-dojo-tags"%> <head> <s:head theme="xhtml"/> <sd:parseContent="true"/></head>..... <sd:datetimepicker label="生日" name="birthday"></sd:datetimepicker>而时间空间应该使用sd标签

2011-04-19

解决struts2下载异常的jar包 struts2-sunspoter-stream-1.0.jar

有关struts2下载组件的具体介绍我就在此略过了,看此文的同志想必大多是碰到这样让人很是不爽的问题。 下面就将该问题的最终解决办法介绍如下。 问题概要: 在struts2中使用result里type="stream"的结果类型时,可以实现文件的下载管理,使用时也是比较顺畅,但是当在“下载提示窗口”中点击“取消按钮”时,总是报出“java.lang.IllegalStateException”异常,异常内容如下: 2011-1-8 20:34:20 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet default threw exception java.lang.IllegalStateException at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407) at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:108) at com.opensymphony.module.sitemesh.filter.PageResponseWrapper.sendError(PageResponseWrapper.java:176) at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:108) at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:770) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:505) at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:102) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:662) 网络解决办法: (虽然该办法可行,但是本人并不提倡。具体原因在之后解释。) 在网络中查询解决办法大多是使用异常处理的办法,其内容如下: <package name="default" extends="struts-default"> <global-results> <result name="client-abort-exception">/ignored.jsp</result> </global-results> </package> <package name="main" extends="struts-default"> <exception-mapping result="client-abort-exception" exception="org.apache.catalina.connector.ClientAbortException"/> <action name="download" class="com.DownloadAction"> <result name="success" type="stream"> <param name="inputName">targetFile</param> <param name="contentDisposition">filename=""</param> <param name="buffersize">4096</param> </result> </action></package> 也就是说,如果抛出了ClientAbortException异常,那就跳转到“ignored.jsp”这个页面,这个页面中什么内容都没有。 还有一种办法是在页面进行try..catch,之后什么都不做 异常原因分析: stream对应的类是org.apache.struts2.dispatcher.StreamResult,该类的处理过程如下: 1。配置其中result标签下的各个参数 2。从服务器中获取输入流,并同时与客户端建立输出流(服务器与客户端链接通过Socket进行连接) 3。当点击“保存”或“打开”时,开始传输数据。如果点击“取消”,关闭所有的流。 这里要注意的是,但是实际发现Socket并没有断开!并且流也没有关闭!这一点非常重要! 所以在JSP容器通过Response获取输出流之前,前面的流并没有关闭,所以会造成该异常的报出。 本文解决办法: 在前面所说的网络解决办法中,使用的是一种躲避的方式解决该问题,也就是置之不理。 这里提供一个办法可以从根本上解决该问题,但是需要下载插件,在附件中有下载,这个插件很小,才4KB而已。 《如果附件下载后文件损坏,可以到http://down.51cto.com/data/158982下载资源,不需要下载豆。》 具体做法如下: 1。将附件解压获取struts2-sunspoter-stream-1.0.jar,并复制在/WEB-INF/lib下 2。在原有的struts.xml的基础上进行相应的配置,配置如下例 <package name="default" namespace="/" extends="struts-default"> <!-- 添加如下内容 --> <result-types> <result-type name="streamx" class="com.sunspoter.lib.web.struts2.dispatcher.StreamResultX"/> </result-types> <action name="download" class="com.DownloadAction"> <!-- type改写 --> <result name="success" type="streamx"> <result name="success" type="streamx"> <!-- 下载文件类型定义 --> <param name="contentType">text/plain</param> <!-- 下载文件处理方法 --> <param name="contentDisposition"> attachment;filename="${downloadChineseFileName}" </param> <!-- 下载文件输出流定义 --> <param name="inputName">downloadFile</param> </result> </action> </package> 在这种方式下,只需添加一个result-type,将原有的result中type改为“streamx”,其他一律不变,在这种情况下,点击“取消”的同时也关闭了流,不会再报出该异常。 之后的执行“取消”后的结果如下:(配置了"log4j.properties"才能看到该结果) 21:23:44,676 WARN StreamResult:45 - StreamResultX Warn : socket write error 如果出现该警告说明正确执行,该警告说明,Socket非正常中断,但是流确实已经关闭,自此再也不用看到上面出现的讨厌异常结果。 转载至 http://sunspot.blog.51cto.com/372554/474983

2011-04-19

计算机网络 网络协议实验报告 尹剑飞

1. 理解NAT(Network Address Translation)协议概念 理解NAT协议的基本概念和4种NAT类型 2. 以虚拟机为例研究数据包在NAT转发过程中的变化 在Vmware、VirtualBox等虚拟机环境下,研究输入/输出的数据包经过NAT引擎前后发生了哪些变化 1. 在C中启动一个浏览器进程,使用任一网卡CN_,www.szu.edu.cn为目的地址,使用CW和HW查看: 1.1收发的数据包P_.1/P_.0与Q_.1/Q_.0有何不同,以列表形式给出:(至少给出1对UDP收发数据包(及相应的IP数据)、1对TCP收发数据包(及相应的IP层数据)的比较)。

2011-04-17

计算机网络 ARP协议 尹剑飞

1.掌握网络包注入工具nemesis的基本使用方法 将简要介绍nemesis的arp命令使用方法,包括ARP应答消息的构造。 2.理解ARP协议 ARP协议位于链路层,它起着连接链路层与网络层的作用。本实验将通过ARP中间人攻击的案例理解ARP协议的本质

2011-04-17

计算机网络 链路层协议 尹剑飞

(1) 掌握协议分析工具wireshark(Ethereal)的基本使用方法 将详细介绍wireshark的捕捉配置、Capture Filter和Display Filter的使用方法、 三种显示面板、统计功能、导出/打印功能。 (2) 理解以太网链路层协议 在wireshark的基础上,捕捉和分析链路层数据包,要求给出特定的信息。 请按照链路层协议.pdf中的实验文档中步骤进行实验,并在实验结论部分给出原文档中所有图示对应的实验结果图示。

2011-04-17

操作系统 内存的分配与回收 实验报告

操作系统 内存的分配与回收 实验报告 操作系统 内存的分配与回收 实验报告 操作系统 内存的分配与回收 实验报告

2011-04-17

C++ 大作业 图新编辑器 实验报告

1. 掌握继承、多形及相关的概念; 2. 了解类层次的设计方法,初步了解运算符重载、静态/动态联编及其在OOP中的应用等内容 1. 阅读附件中的VCAD程序的源代码,并将其编译、运行,简单地试验一下它的各项功能; 2. 分析VCAD程序的源代码中类层次的设计和实现。报告中应包含(但不限于)以下内容:  与图元类(CEntity、CLine、CRectangle、CCircle、CArc等类)和图元创建命令类(CCommand、CCreateLine、CCreateRect、CCreateCircle、CCreateArc等类)的各自的层次设计。要求画出类层次示意图;  对每一个(除了类CEntity之外)图元类,从其基类中继承了哪些成员,自行定义了哪些成员,其中有哪些成员是对基类相应成员的重写?  CEntity::Draw、CEntity::Draw、CEntity::Pick等函数为什么声明为虚函数?如果不声明为虚函数,对程序有什么影响?  找出各图元类实际绘制该图元对象的成员函数,并分析它是如何实现的,以了解在MFC环境下下如何绘制简单的图形;  针对一个图元创建命令类(CCreateLine、CCreateRect、CCreateCircle、CCreateArc中任选一个),分析该命令类是如何创建/绘制相关图元对象的;  找出一个运算符重载的例子(包括定义、实现和调用)来说明运算符重载的用途和使用运算符重载的的好处。 3. 向阅读附件中的VCAD程序加入以下功能(报告中要给出相应的设计思路和算法描述),并进行编译、运行和简单地测试(报告中要给出测试数据和结果):  增加对三角形图元的处理,包括绘制、创建、选取、平移、旋转、保存/打开等操作 4. 根据对原程序的分析和你对该程序的扩充实践,总结出设计类的继承应采取的原则,设计使用虚函数应遵循的原则,以及使用继承和多形对程序的代码重用所起

2011-04-17

多文件压缩与解压程序 实验报告

1. 进一步理解和掌握文件操作和命令行参数的实现; 2. 初步了解和掌握分析和使用第三方类库进行程序设计; 3. 初步接触如何对多种解决方案进行对比和选择 1. 分析给出的多文件打包/解包程序MyZip和单文件压缩程序Compress,将程序MyZip改写为一个能够处理多文件压缩/解压的控制台程序,可利用命令行参数控制其完成如下功能: 1. 将命令行参数指定的一组文件压缩为一个压缩文件。 其Usage为:MyZip /A <压缩文件名> <文件1> [<文件2> …] 2. 列出命令行参数指定的压缩文件中的各文件名。 其Usage为:MyZip /L <压缩文件名> 3将命令行参数指定的压缩文件解压到当前目录。 其Usage为:MyZip /E <压缩文件名> 提示:只需修改MyZip程序,将原先读取要加入的文件的内容后直接写到压缩文件中的代码,修改为先将要加入的文件压缩为一个临时文件后,再将压缩后的文件合并到原压缩文件中。压缩要加入的文件时,可调用LZARI类的Compress成员函数来实现。同样,解压缩时,可先将指定文件解包为各个(压缩后的)文件,再调用LZARI类的UnCompress成员函数,对解包出的临时文件进行解压缩,生成需要的(未压缩)文件; 2. (选作)修改你的程序,将功能1)改为:如果指定的压缩文件不存在,则新建一个指定名称的压缩文件,包含指定的一组文件的压缩内容;否则,将指定的一组文件压缩后加入到原有压缩文件中; 3. (选作)给出的多文件打包/解包程序MyZip所生成的打包文件中(以及由此改写而来的多文件压缩文件中),各文件的信息安排如下图所示。

2011-04-17

C++ 文件管理 实验报告

1. 理解和掌握C风格文件操作; 2. 理解和掌握流类库风格文件操作; 3. 初步掌握C++模板和异常处理的使用; 4. (选作)进一步掌握如何在面向对象程序设计中使用继承和多态。 1. 编写一个控制台程序fm.exe,可利用命令行参数控制其完成如下功能(使用C风格文件操作实现):  在控制台显示一个文本文件。其Usage为:fm /t  复制一个文件。其Usage为:fm /c  文件移动/换名。其Usage为:fm /rn  删除一个文件。其Usage为:fm /d  新建一个(长度为0的)空文件。其Usage为:fm /n  列出当前目录下的所有文件及子目录(类似dir命令)。其Usage为:fm /ls 2. 编写一个控制台程序fm2.exe,完成与fm.exe同样的功能,但改用流类库风格文件操作来实现; 3. (选做)参考附件中的程序界面,完成一个具有上述功能的MFC程序(程序名自定,界面操作参考“资源管理器”);为复制、移动/换名、删除、新建这几个操作增加Undo/Redo功能(可参考实验1程序的图元命令类的设计) 4. 根据对你的编程实践,对比分析C风格文件操作和流类库风格文件操作在易用性、可扩展性等方面的差异。分析结构化异常处理为C++程序设计带来了怎样的方便,又带来了什么问题?

2011-04-17

示波器的使用、一节电路实验报告

1.函数电源 函数电源可以产生正弦波、方波、三角波,各种波形的幅值和频率可通过相应的开关和旋钮加以调节。 2. 示波器 示波器可以用来观察电压信号的波形,测量电压信号的幅值、周期、频率及两个电压信号的相位差等。若需观察测量电路中某一支路的电流信号,可在该支路串联一个小的取样电阻,观察测量该电阻的电压。 (1)信号幅值的测量 将“VOLTS/DIV”开关的微调装置以顺时针方向旋至满度的校准位置,读取被测信号所占纵坐标格数,再乘以“VOLTS/DIV”开关的指示值,即可求得被测信号的峰-峰值(Up-p)。若使用的探头置×10的位置,应将该值乘以10 。 (2)信号周期(频率)的测量 将“TIME/DIV”开关的微调装置以顺时针方向旋至满度的校准位置,读取被测信号一周期所占横坐标格数,再乘以“TIME/DIV”开关的指示值,即可求得被测信号的周期时间T。若“TIME/DIV”开关的扩展旋钮已被拉出,则该值应除以5才是实际的周期时间。 周期T的倒数即为信号的频率。 (3)两正弦波相位差的测量 将频率相同的两个正弦信号分别由CH1和CH2通道送入示波器,读取两波 形到达最大值的时间差Td以及两波形的周期T,即可求得两波形的相位差

2011-04-17

数字电路 全加器 全加器

相加时不考虑进位的二进制的加法则称为半加,所用的电路叫半加器。相加时考虑来自低位的进位以及向高位的进位的二进制加法则称为全加,所用的电路叫全加器。全加器的逻辑表达式为: 它有三个输入端An、Bn、Cn-1。Cn-1为低位来的进位输入端,两个输入端Cn、Sn。两个多位数相加时每一位都是带进位相加,所以必须用全加器。这时,只要依次将低一位的进位输出接到高位的进位输入,就可构成多位加法器了。74LS283是中规模集成四位二进制全加器,其引脚排列如图2.3.1所示。 全加器除完成加法运算以外,还可用来产生组合逻辑函数。若某一逻辑函数的输出恰好等于输入代码表示的数值加上另外一个常数或由同一组输入变量组成的代码时,使用全加器往往会得到十分简单的设计效果。

2011-04-17

彩灯流水电路的设计 彩灯流水电路的设计

该电路可分别用如下几个方案实现 1. 用一片十进制计数器(74LS90)接成八进制计数器和3/8线译码器(74LS138)实现。 2. 用一片四位二进制计数器(74LS161)和3/8译码器(74LS138)实现。 任务:设计一电路驱动8只灯,是其七亮一暗,且这一暗灯按一定节拍循环右移。 实验步骤: 1. 选取一片四位二进制计数器(74LS161)和3/8译码器(74LS138)实现 2. 分别把74LS161的Q0、Q1、Q2、Q3接到74LS138的A0、A1、A2端,对应的74LS161的LD非、CT非、CTT、CTp接到逻辑电平开关 3 . 把74LS138的15、14、13、12、11、10、9、7端接到LED灯,4、5、6端接到逻辑电平开关 4. 分别置74LS138的4、5、6端为0、0、1,74LS161的LD非、CR非、CTT、CTp均置为高电平 5. 把CP接到固定脉冲信号源

2011-04-17

直流基本实验 直流基本实验

1.基尔霍夫电流定律(KCL) 在电路中,任何时刻,任一节点处,电流的代数和为零。即∑I=0 。 2.基尔霍夫电压定律(KVL) 在电路中,任何时刻,沿任一回路所有支路电压的代数和为零。即∑U=0 。 3.电位的概念 在电路中,可选某一点作为参考点,而其余任意一点x相对于该参考点的电压就称为该x点的电位,记为ux 。参考点选得不同,电路中各点的电位就不同。 4.两点间的电压 直流电路中,任两点之间的电压是固定的,它等于该两点相对于任一参考点的电位之差,也等于该两点之间任意一条路径上所有元件电压的代数和。 5.用“伏安法”测量电阻 根据欧姆定律可用“伏安法”测量电阻,即R=U/I 。但由于电压表和电流表内阻的存在,测量结果将存在误差。用“伏安法”测量电阻有图1和图2两种接线方式,用图1测出的结果实际上是被测电阻R与电流表内阻RI之和,而用图2测出的却是被测电阻R与电压表内阻RV并联的结果。当然,若RI<<R,或RV>>R,则图1和图2有U/I≈R 。

2011-04-17

j2EE SSH开发的一个网上购书系统

一个使用ssh框架开发的一个网上购书系统 提供的项目读者可以对应到具体实例,根据实例要求导入需要的Jar包即可运行。 很抱歉,本人未在上传资源中提供ssh的jar包,太大了,上传不了,你们根据自己在lib目录下加入ssh框架的jar包

2011-04-17

swfupload+Struts2多文件上传,有进度条,很漂亮的效果

使用struts2整合swfupload,实现包含进度条的文件上传模块 SWFUpload的主要特点 * 可以同时上传多个文件; * 类似AJAX的无刷新上传; * 可以显示上传进度; * 良好的浏览器兼容性; * 兼容其他JavaScript库 (例如:jQuery, Prototype等); * 支持Flash 8和Flash 9; SWFUpload不同于其他基于Flash构建的上传工具,它有着优雅的代码设计,开发者可以利用XHTML、CSS和JavaScript来随心所欲的定制它在浏览器下的外观;它还提供了一组简明的JavaScript事件,借助它们开发者可以方便的在文件上传过程中更新页面内容来营造各种动态效果。 默认的swfupload选择文件后,会自动开始上传,比较讨厌.因为我需要的还要等表格填完 我的代码把它自动上传的功能改写了,让用户点击开始上传后才上传文件

2011-04-17

ftp要用的commons-net-1.4.1.jar

ftp要用的commons-net-1.4.1.jar

2010-10-09

基于CryptoAPI 的数据加解密文件.rar

/* *由于多方尝试并编写Openssl对文件的加解密方法,均以失败告终,所以我们小组绝对采用新的加密算法,即Windows CrytoAPI,由微软公司提出的一种安全 *加密应用服务框架 *CryptoAPI数据加解密,它的流程为: *(加密模块)1.创建会话密钥 2.加密数据 3.安全保存或交换会话密钥 *(解密模块)1.获取会话密钥 2.解密数据 *它的加密是基于对称加密算法的(对称算法加密解密速度快),对文件的读取都要用的c语言的方法,c++的文件读取功能不好用啊 *经过测试,该算法可以对txt/doc进行加解密,其他我还没测试,你们可以试试其他文本类型看看 */

2010-10-09

JNI技术使用指导(通过JNI技术实现java后台调用C++/c的dll文件)

•编写带有native声明的方法的java类 •使用javac命令编译所编写的java类 •使用javah -jni java类名生成扩展名为h的头文件 •使用C/C++实现本地方法 •将C/C++编写的文件生成动态连接库 •ok 1) 编写java程序:这里以HelloWorld为例。 代码1: class HelloWorld { public native void displayHelloWorld(); static { System.loadLibrary("hello"); } public static void main(String[] args) { new HelloWorld().displayHelloWorld(); } } 声明native方法:如果你想将一个方法做为一个本地方法的话,那么你就必须声明改方法为native的,并且不能实现。其中方法的参数和返回值在后面讲述。 Load动态库:System.loadLibrary("hello");加载动态库(我们可以这样理解:我们的方法 displayHelloWorld()没有实现,但是我们在下面就直接使用了,所以必须在使用之前对它进行初始化)这里一般是以static块进行加载的。同时需要注意的是System.loadLibrary();的参数“hello”是动态库的名字。 2) 编译没有什么好说的了 javac HelloWorld.java 3) 生成扩展名为h的头文件 javah -jni HelloWorld 头文件的内容: /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class HelloWorld */ #ifndef _Included_HelloWorld #define _Included_HelloWorld #ifdef __cplusplus extern "C" { #endif /* * Class: HelloWorld * Method: displayHelloWorld * Signature: ()V */ JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif 这里我们可以这样理解:这个h文件相当于我们在java里面的接口,这里声明了一个 Java_HelloWorld_displayHelloWorld (JNIEnv *, jobject);方法,然后在我们的本地方法里面实现这个方法,也就是说我们在编写C/C++程序的时候所使用的方法名必须和这里的一致)。 4) 编写本地方法实现和由javah命令生成的头文件里面声明的方法名相同的方法。 代码2: #include "jni.h" #include "HelloWorld.h" JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj) { printf("Hello world!\n"); return; } 注意代码2中的第1行,需要将jni.h(该文件可以在%JAVA_HOME%/include文件夹下面找到)文件引入,因为在程序中的JNIEnv、 jobject等类型都是在该头文件中定义的;另外在第2行需要将HelloWorld.h头文件引入(我是这么理解的:相当于我们在编写java程序的时候,实现一个接口的话需要声明才可以,这里就是将HelloWorld.h头文件里面声明的方法加以实现。当然不一定是这样)。然后保存为 HelloWorldImpl.c就ok了。 5) 生成动态库这里以在Windows中为例,需要生成dll文件。在保存HelloWorldImpl.cpp文件夹下面,使用VC的编译器cl生成。 cl -I%java_home%\include -I%java_home%\include\win32 -I"%cpp_home%"\include -LD HelloWorldImpl.cpp -Fehello.dll 注意:生成的dll文件名在选项-Fe后面配置,这里是hello,因为在HelloWorld.java文件中我们loadLibary的时候使用的名字是hello。当然这里修改之后那里也需要修改。另外需要将-I%java_home%\include -I%java_home%\include\win32 -I"%cpp_home%"\include参数加上,因为在第四步里面编写本地方法的时候引入了jni.h文件(引入了哪些文件就要加上包含这些文件的参数)。还要注意的一点是:添加环境变量LIB=%cpp_home%\lib(我机器上的cpp_home=E:\Program Files\Microsoft Visual Studio\VC98),因为需要与里面的一些lib文件链接。 6) 运行程序 java HelloWorld就ok.

2010-09-10

apache-tomcat-6.0.26.zip

tomcat Web服务器下载,一个免费的服务器

2010-09-10

java编写的通讯录

摘 要 -- 第1章 绪 论 1 第2章 系统功能介绍 2 2.1系统功能总框图 2 2.1.1 系统总体功能介绍 2 2.1.2 系统总体功能模块图 3 2.3 组内任务分工 4 第3章 系统功能实现 5 3.1 用户登录功能实现 5 3.1.1用户登录模块功能 5 3.1.2用户登录模块界面 5 3.1.3用户登录模块代码 5 3.2 用户提示功能实现 7 3.3 帐户修改功能实现 7 3.4 主窗体功能实现 9 3.4.1主窗体功能 9 3.4.2用户登录模块界面 9 3.4.3主窗体代码 10 3.5文件读取功能实现 16 3.5.1文件读取与新增模块功能 16 3.5.2新增模块界面 17 3.5.3新增与文件读取模块代码 17 3.6 浏览功能实现 19 3.7 查询功能实现 20 3.7.1查询模块功能 20 3.7.2查询模块界面 21 3.7.3查询模块代码 21 3.8 测试功能实现 25 3.8.1测试模块功能 25 3.8.2测试模块代码 25 3.9 辅助类功能实现 26 3.9.1辅助类模块功能 26 3.9.2辅助类模块代码 27 结 论 29 致 谢 30

2010-09-10

实用的微软加密解密算法

这是微软提供的一个对文件加密、解密的算法,里面包括加密的截图,是使用c++语言实现的

2010-09-10

类似于qq聊天器的java程序

使用java编写的局域网聊天器 界面还不错的

2010-09-10

jspsmartUpload能接受中文的jar包

文件上传篇 ㈠ 表单要求 对于上传文件的FORM表单,有两个要求: 1、METHOD应用POST,即METHOD="POST"。 2、增加属性:ENCTYPE="multipart/form-data" 下面是一个用于上传文件的FORM表单的例子: <FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="/jspSmartUpload/upload.jsp"> <INPUT TYPE="FILE" NAME="MYFILE"> <INPUT TYPE="SUBMIT"> </FORM> ㈡ 上传的例子 1、上传页面upload.html 本页面提供表单,让用户选择要上传的文件,点击"上传"按钮执行上传操作。 页面源码如下: <!-- 文件名:upload.html 作 者:纵横软件制作中心雨亦奇([email protected]) --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>文件上传</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <p>&nbsp;</p> <p align="center">上传文件选择</p> <FORM METHOD="POST" ACTION="jsp/do_upload.jsp" ENCTYPE="multipart/form-data"> <input type="hidden" name="TEST" value="good"> <table width="75%" border="1" align="center"> <tr> <td><div align="center">1、 <input type="FILE" name="FILE1" size="30"> </div></td> </tr> <tr> <td><div align="center">2、 <input type="FILE" name="FILE2" size="30"> </div></td> </tr> <tr> <td><div align="center">3、 <input type="FILE" name="FILE3" size="30"> </div></td> </tr> <tr> <td><div align="center">4、 <input type="FILE" name="FILE4" size="30"> </div></td> </tr> <tr> <td><div align="center"> <input type="submit" name="Submit" value="上传它!"> </div></td> </tr> </table> </FORM> </body> </html> 2、上传处理页面do_upload.jsp 本页面执行文件上传操作。页面源码中详细介绍了上传方法的用法,在此不赘述了。 页面源码如下: <%-- 文件名:do_upload.jsp 作 者:纵横软件制作中心雨亦奇([email protected]) --%> <%@ page contentType="text/html; charset=gb2312" language="java" import="java.util.*,com.jspsmart.upload.*" errorPage="" %> <html> <head> <title>文件上传处理页面</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <% // 新建一个SmartUpload对象 SmartUpload su = new SmartUpload(); // 上传初始化 su.initialize(pageContext); // 设定上传限制 // 1.限制每个上传文件的最大长度。 // su.setMaxFileSize(10000); // 2.限制总上传数据的长度。 // su.setTotalMaxFileSize(20000); // 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。 // su.setAllowedFilesList("doc,txt"); // 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat, jsp,htm,html扩展名的文件和没有扩展名的文件。 // su.setDeniedFilesList("exe,bat,jsp,htm,html,,"); // 上传文件 su.upload(); // 将上传文件全部保存到指定目录 int count = su.save("/upload"); out.PRintln(count+"个文件上传成功!<br>"); // 利用Request对象获取参数之值 out.println("TEST="+su.getRequest().getParameter("TEST") +"<BR><BR>"); // 逐一提取上传文件信息,同时可保存文件。 for (int i=0;i<su.getFiles().getCount();i++) { com.jspsmart.upload.File file = su.getFiles().getFile(i); // 若文件不存在则继续 if (file.isMissing()) continue; // 显示当前文件信息 out.println("<TABLE BORDER=1>"); out.println("<TR><TD>表单项名(FieldName)</TD><TD>" + file.getFieldName() + "</TD></TR>"); out.println("<TR><TD>文件长度(Size)</TD><TD>" + file.getSize() + "</TD></TR>"); out.println("<TR><TD>文件名(FileName)</TD><TD>" + file.getFileName() + "</TD></TR>"); out.println("<TR><TD>文件扩展名(FileExt)</TD><TD>" + file.getFileExt() + "</TD></TR>"); out.println("<TR><TD>文件全名(FilePathName)</TD><TD>" + file.getFilePathName() + "</TD></TR>"); out.println("</TABLE><BR>"); // 将文件另存 // file.saveAs("/upload/" + myFile.getFileName()); // 另存到以WEB应用程序的根目录为文件根目录的目录下 // file.saveAs("/upload/" + myFile.getFileName(), su.SAVE_VIRTUAL); // 另存到操作系统的根目录为文件根目录的目录下 // file.saveAs("c:\\temp\\" + myFile.getFileName(), su.SAVE_PHYSICAL); } %> </body> </html> 四、文件下载篇 1、下载链接页面download.html 页面源码如下: <!-- 文件名:download.html 作 者:纵横软件制作中心雨亦奇([email protected]) --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>下载</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <a href="jsp/do_download.jsp">点击下载</a> </body> </html> 2、下载处理页面do_download.jsp do_download.jsp展示了如何利用jspSmartUpload组件来下载文件,从下面的源码中就可以看到,下载何其简单。 源码如下: <%@ page contentType="text/html;charset=gb2312" import="com.jspsmart.upload.*" %><% // 新建一个SmartUpload对象 SmartUpload su = new SmartUpload(); // 初始化 su.initialize(pageContext); // 设定contentDisposition为null以禁止浏览器自动打开文件, //保证点击链接后是下载文件。若不设定,则下载的文件扩展名为 //doc时,浏览器将自动用word打开它。扩展名为pdf时, //浏览器将用acrobat打开。 su.setContentDisposition(null); // 下载文件 su.downloadFile("/upload/如何赚取我的第一桶金.doc"); %> 注意,执行下载的页面,在Java脚本范围外(即<% ... %>之外),不要包含HTML代码、空格、回车或换行等字符,有的话将不能正确下载。不信的话,可以在上述源码中%><%之间加入一个换行符,再下载一下,保证出错。因为它影响了返回给浏览器的数据流,导致解析出错。

2010-08-07

概率论与数理统计课后答案(浙大版 盛骤 谢式千)

概率论与数理统计课后答案(浙大版 盛骤 谢式千)

2010-07-04

大学英语口语对话,很好用的

1. Sports 2. Weather 3. Food and drinks 4. Health 5. Music 6. Business

2010-07-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除