锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
杞歡璇存槑錛氶傚悎澶氱綉緇滃姙鍏嬌鐢紝紕板埌鏉杞彁紺猴紝璇峰厑璁擱氳繃錛屽360
搴旂敤騫沖彴錛?a class="linkwin7" >Win7/Vista/WinXP/
杞歡澶у皬錛?96 KB
緙栧啓璇█錛欰U3
浣滆呴偖綆憋細1015208770@163.com涓嬭澆鍦板潃1錛?/strike>http://m.tkk7.com/Files/Reg/NetworkSpirit.rar(鍐呴儴鍑芥暟璋冪敤鏈夋椂鍊欏嚭鐜頒笉姝e父鐨勯棶棰?
涓嬭澆鍦板潃2錛?a href="http://m.tkk7.com/Files/Reg/NetworkSpirit.rar">http://m.tkk7.com/Files/Reg/NetworkSpirit.zip(榪欎釜鏄?.0.0.4鐗堟湰錛屾洿鏂頒竴涓増鏈彿錛屼慨澶嶄笂涓増鏈唴閮ㄥ嚱鏁拌皟鐢ㄩ棶棰?
婧愮爜鍦板潃1錛?a href="http://m.tkk7.com/Files/Reg/NetworkSpirit(code).rar">http://m.tkk7.com/Files/Reg/NetworkSpirit(code).rar(2.0.0.3婧愮爜)
MD5媯嫻嬶細
鏂囦歡鐗堟湰: 2.0.0.3
淇敼鏃墮棿: 2012-06-19, 12:34:44
MD5: 09CBAE1D6436C4EAE867AB802140E26F
SHA1: 4B2DA60F609948A46989C417E44C17515B8FAA9B
CRC32: D3A9D77E
鏇存柊璇存槑錛?br />1.婧愪唬鐮侀噸鏋?br />2.鍏ㄦ柊UI
3.姝e紡鏇村悕涓虹綉緇滅簿鐏?IP鍦板潃鍒囨崲鍣?
鍔熻兘璇存槑錛?br />1.鏀寔澶氭ā寮忓垏鎹?br />2.鑷姩灞忚斀VMware铏氭嫙緗戝崱璁劇疆
3.鑷姩鍒ゆ柇緗戠嚎鏄惁宸茶繛鎺?br />
杞歡鎴浘錛?br />
]]>
涓嬈捐兘鍒嗘瀽緋葷粺鎬ц兘鐡墮鐨勪紭鍖栬蔣浠躲傚畠閫氳繃瀵圭郴緇熷叏鏂逛綅鐨勮瘖鏂紝鎵懼埌緋葷粺鎬ц兘鐨勭摱棰堟墍鍦紝鐒跺悗鏈夐拡瀵規у湴榪涜淇敼銆佷紭鍖栥傛澶栧畠榪樺叿鏈夐棿璋嶈蔣浠跺拰鎭舵剰杞歡鎵弿娓呴櫎鍔熻兘錛屼篃鑳藉皢浣犵殑闅愮淇℃伅浠庣數鑴戜腑鎶歸櫎銆傞拡瀵逛釜浜哄厤璐逛嬌鐢ㄣ侫dvanced
WindowsCare Personal宸叉洿鍚嶄負Advanced SystemCare銆?br />娉ㄥ唽鐮?
79818-39C67-6AD87-1B8D4
]]>
涓寮濮嬫寜緗戜笂璇寸殑鐢╯ession.merge(Object)鎶ヤ簡涓涓敊錛屽彲鑳芥槸娌℃湁鐢ㄥソ錛屾敼鐢?nbsp;session.clear(); session.update(user);榪欐牱灝監K浜?
鏂規硶涓猴細
package org.springframework.orm.hibernate3.support;
public void modifyByMerge(User user) {
Session session = getHibernateTemplate().getSessionFactory().
getCurrentSession();
session.clear();
session.update(user);
}
欏圭洰鐢ㄧ殑鏄痵pring + hibernate鎵浠ュ緱鐢╣etHibernateTemplate().getSessionFactory().getCurrentSession();寰楀綋鍓峉ession
]]>鏁版嵁搴撴湇鍔$鐞嗗伐鍏?nbsp;V2.0.0.1
鍒涘涔嬪垵:鍦ㄥ紑鍙戣繃紼嬩腑錛岀儲浜庢瘡嬈″紑鏈哄悗閮借鐢ㄥ懡浠ゆ墦寮servers.msc鍚姩鏈嶅姟錛屾垨鑰呮妸瑕佸惎鍔ㄧ殑鏈嶅姟鍐欐垚涓涓狟AT 鏂囦歡榪愯鏈嶅姟銆傛垜鏈夌偣涓嶅お鍠滄榛戝拷蹇界殑紿楀彛錛屾墍浠ヤ簡鐢ˋU3鍐欎簡涓皬紼嬪簭鐢ㄦ潵綆$悊榪欎簺鏈嶅姟銆?br />
鍔熻兘錛?br />
1.鏀寔oracle,sqlserver,mysql鏁版嵁搴撴湇鍔?br />
2.鏀寔璁劇疆鏈嶅姟鍚姩妯″紡
3.鏀寔鎵歸噺鍚姩鏈嶅姟
4.鏀寔Windows(XP,VISTA,2008,7),鍏朵粬Windows緋葷粺鐢變簬鏃墮棿闂娌℃潵寰楁ユ祴璇曘?br />
娉ㄦ剰:
1.oracle鐨勭洃鍚櫒蹇呴渶閰嶇疆姝g‘(涓嬬増灝嗘敼榪涜繖涓棶棰?
鏈湴涓嬭澆:http://m.tkk7.com/Files/Reg/鏁版嵁搴撴湇鍔$鐞嗗伐鍏?rar
鍒嗘祦鍦板潃:http://down.51cto.com/data/184705
]]>
]]>
//---------------------------------------------------------------
package bean;
import javax.imageio.ImageIO;
import javax.imageio.IIOException;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.io.File;
import java.awt.image.AffineTransformOp;
import java.awt.geom.AffineTransform;
public class convertImage {
private String fileInput ;
private String fileOutput ;
public convertImage()
{
}
public String getFileInput() {
return fileInput;
}
public void setFileInput(String fileInput) {
this.fileInput = fileInput;
}
public String getFileOutput() {
return fileOutput;
}
public void setFileOutput(String fileOutput) {
this.fileOutput = fileOutput;
}
public void convert()
{
try {
File fi = new File(fileInput); //澶у浘鏂囦歡
File fo = new File(fileOutput); //灝嗚杞崲鍑虹殑灝忓浘鏂囦歡
int nw = 150; //瀹氫箟瀹戒負150
int nh = 100; //瀹氫箟楂樹負100
AffineTransform transform = new AffineTransform();
BufferedImage bis = ImageIO.read(fi);
int w = bis.getWidth();
int h = bis.getHeight();
double sx = (double)nw/w;
double sy = (double)nh/h ;
//鍒ゆ柇鏄í鍚戝浘褰㈣繕鏄潥鍚戝浘褰?/span>
if ( w > h ) //妯悜鍥懼艦
{
if ( (int)(sx * h ) > nh ) //姣旇緝楂樹笉絎﹀悎楂樺害瑕佹眰,灝辨寜楂樺害姣斾緥
{
sx = sy ;
nw = (int)(w*sx) ;
}
else
{
sy = sx ;
nh = (int)( h*sy) ;
}
}
else
{
if ( (int)(sy * w ) > nw )
{
sy = sx ;
nh = (int)(h * sy ) ;
}
else
{
sx = sy ;
nw = (int)(w*sx) ;
}
}
transform.setToScale(sx,sy);
AffineTransformOp ato = new AffineTransformOp(transform,null);
BufferedImage bid = new BufferedImage(nw,nh,BufferedImage.TYPE_3BYTE_BGR);
ato.filter(bis,bid);
ImageIO.write(bid,"jpeg",fo);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
2.涓婁紶鏂囦歡鐨剈pload.jsp
--------------------------------------------------------------------
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'upload.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">
-->
</head>
<body>
<html:form action="/upload.do" enctype="multipart/form-data">
<html:file property="theFileone"/>
<html:submit/>
</html:form>
</body>
</html>
//------------------------------------------------------------------------
3.鏄劇ず鎴愬姛欏甸潰
//------------------------------------------------------------------------
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=GB2312" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'display.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">
-->
</head>
<body>
涓婁紶鎴愬姛. <br>
</body>
</html>
//---------------------------------------------------------------------
4.Action
//Created by MyEclipse Struts
// XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_4.1.1/xslt/JavaClass.xsl
package com.mk.struts.action;
import java.io.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import com.mk.struts.form.UploadForm;
import bean.convertImage;
/**
* MyEclipse Struts
* Creation date: 03-28-2006
*
* XDoclet definition:
* @struts.action validate="true"
*/
public class UploadAction extends Action {
// --------------------------------------------------------- Instance Variables
// --------------------------------------------------------- Methods
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
// TODO Auto-generated method stub
String encoding = request.getCharacterEncoding() ;
if ( (encoding != null )&& (encoding.equalsIgnoreCase("uft-8")))
{
response.setContentType("text/html;charset=gb2312") ; //濡傛灉娌℃湁鎵懼畾緙栫爜錛岀紪鐮佹牸寮忚涓篻b2312
}
UploadForm theForm = (UploadForm) form ;
FormFile fileone = theForm.getTheFileone() ; //鍙栧緱涓婁紶鐨勬枃浠跺悕
try
{
//寮濮嬩笂浼犳枃浠?/span>
String filePath = this.getServlet().getServletContext().getRealPath("/") ; //鍙栧緱褰撳墠璺緞
InputStream stream = fileone.getInputStream() ; //鎶婃枃浠惰鍏?/span>
ByteArrayOutputStream baos = new ByteArrayOutputStream() ;
/*
* 寤虹珛涓涓笂浼犳枃浠剁殑杈撳嚭嫻佸鏋滄槸linux緋葷粺璇鋒妸"\\" 鎹㈡垚 "/"
*/
OutputStream bos = new FileOutputStream(filePath + fileone.getFileName()) ;
request.setAttribute("fileName",filePath + "/" + fileone.getFileName() ) ;
int bytesRead = 0 ;
byte[] buffer = new byte[8192] ;
while( (bytesRead = stream.read(buffer,0,8192) ) != -1 )
{
bos.write(buffer,0,bytesRead) ;
}
bos.close();
stream.close() ;
//涓婁紶鏂囦歡瀹屾垚
String oldurl= filePath + fileone.getFileName() ;
String newurl= filePath + "min_" + fileone.getFileName() ; //鏂扮殑緙╃暐鍥句繚瀛樺湴鍧
convertImage convert = new convertImage() ;
convert.setFileInput(oldurl) ;
convert.setFileOutput(newurl) ;
convert.convert() ;
}
catch(Exception e)
{
System.err.print(e) ;
}
return mapping.findForward("display");
}
}
鏉ユ簮:http://www.ideagrace.com/html/doc/2006/04/21/00776.html
]]>
鏂規硶錛?br />
1銆佷慨鏀筍erver.xml
灝嗘墍鏈夋秹鍙婂埌绔彛鐨勬暟瀛楃殑棣栨暟瀛楀姞1錛屽叿浣撴儏鍐靛彲瑙嗛渶瑕佽屽畾錛屽彧瑕佽绔彛娌℃湁琚崰鐢ㄥ嵆鍙?br />
濡傦細
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="9009" protocol="AJP/1.3" redirectPort="9443"/>
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
2銆佷慨鏀筍tartup.bat
灝?nbsp;if not "%CATALINA_HOME%" == "" goto gotHome 璇彞娉ㄩ噴鎺夛紝
rem Guess CATALINA_HOME if not defined
set CURRENT_DIR=%cd%
rem if not "%CATALINA_HOME%" == "" goto gotHome
set CATALINA_HOME=%CURRENT_DIR%
]]>
reconfigure
go
sp_configure 'xp_cmdshell',1
reconfigure
go
]]>
JNI涔婥++璋冪敤Java綾?鈥斺?java.lang.String
涓轟粈涔堣鐢–++璋冪敤Java綾伙紵寰堥毦鍥炵瓟錛屽啓鐫鏂囩珷鍙槸瑙夊緱JNI寰堟湁鎰忔濄備簬鏄紑濮嬬紪鍐欎竴孌典嬌鐢╒C++鍦╓indows緋葷粺閲岃皟鐢╦ava鐨凷tring綾伙紝鍦–++閲岃皟鐢⊿tring綾誨唴鐨勪竴浜涙柟娉曘?/p>
JNI宸茬粡琚紑鍙戜簡寰堝騫達紝鑰屽湪鎴?騫村鐨凧ava緙栫▼鏃墮棿閲屼粠鏉ユ病鏈夋帴瑙﹁繃銆傜洿鍒版渶榪戠爺絀禞VM瀹炵幇鍘熺悊鎵嶆敞鎰忓埌JNI銆?JNI鏃ava Native Interface錛孨ative榪欎釜璇嶆垜瑙佽繃鎴戣涓烘渶鎭板綋鐨勭炕璇戝氨鏄師鐢熴傚師鐢熺殑鎰忔濆氨鏄潵鑷郴緇熻嚜宸辯殑錛屽師姹佸師鍛崇殑涓滆タ錛屼緥濡俉in32 API銆侸ava綾婚渶瑕佸湪铏氭嫙鏈轟笂榪愯錛屼篃灝變笉鏄師鐢熺殑錛屽悓鏍?NET Framework涔熶笉鏄師鐢熺殑銆侸NI涔熷氨鏄疛ava鍘熺敓鎺ュ彛銆傚叧浜嶫NI鐨勮鑼冿紝浠ュ強涓轟粈涔堣浣跨敤瀹冿紝瀹冭兘鍋氫簺浠涔堬紝閮藉湪http://java.sun.com/j2se/1.4.2/docs/guide/jni/spec/jniTOC.html閲岃榪扮潃銆?/p>
JNI鏄鑼冿紝瀹冭瀹氫簡铏氭嫙鏈虹殑鎺ュ彛錛岃屾妸鍏蜂綋鐨勫疄鐜扮暀緇欏紑鍙戣呫?/p>
JVM鐨勫疄鐜頒笉鏄敮涓鐨勶紝鐩墠瀛樺湪寰堝縐岼ava铏氭嫙鏈猴紝Sun Hotspot錛孖BM JDK錛岃繕鏈塇P鐨勶紝Kaffe絳夌瓑銆傛渶嫻佽鐨勫氨鏄疭un鐨凥otspot錛屾渶澶嶆潅鐨勫氨鏄疘BM JDK錛岃繖鏄疘BM鐨勪竴璐綔椋庛傛湰鏂囦笉璁ㄨJVM鐨勫疄鐜幫紝鍙叧娉↗NI銆傚鏋滄偍瀹夎浜哠un鐨凧DK錛屾偍灝辮兘鍦╗JAVA_HOME]\include鐩綍涓嬫壘鍒癹ni.h銆傝繖涓ご鏂囦歡灝辨槸铏氭嫙鏈虹殑鍞竴鎺ュ彛錛屼綘鍙互璋冪敤瀹冨0鏄庣殑鍑芥暟鍒涘緩涓涓狫VM銆?/p>
鍦ㄨ鏄嶤++璋冪敤Java綾諱箣鍓嶏紝鎴戞兂鍏堟紨紺轟竴涓嬪鏋滅紪鍐橨ava Native Method銆?/p>
1錛庣紪鍐欏甫鏈塏ative鏂規硶鐨凧ava綾?/p>
package org.colimas.jni.test;
public class JniTest {
static { System.loadLibrary("JniTestImpl"); } //JVM璋冪敤JniTestImpl.dll
public JniTest(){
}
//鍘熺敓鏂規硶
public native void print(String str);
/**
* @param args
*/
public static void main(String[] args) {
JniTest test=new JniTest();
test.print("hello JVM"); //璋冪敤鍘熺敓鏂規硶
}
}
2錛庝嬌鐢╦avah鐢熸垚c璇█澶存枃浠躲?/p>
javah -jni org.colimas.jni.test.JniTest
鐩綍閲屽浜嗕竴涓猳rg_colimas_jni_test_JniTest.h鏂囦歡錛屾墦寮鏂囦歡錛屽唴瀹瑰涓?
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_colimas_jni_test_JniTest */
#ifndef _Included_org_colimas_jni_test_JniTest
#define _Included_org_colimas_jni_test_JniTest
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_colimas_jni_test_JniTest
* Method: print
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_colimas_jni_test_JniTest_print
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
鍏朵腑鐨凧ava_org_colimas_jni_test_JniTest_print灝辨槸JniTest綾婚噷闈㈢殑print鍘熺敓鏂規硶鐨凜璇█澹版槑銆?/p>
3錛庣紪鍐機浠g爜瀹炵幇鍘熺敓鏂規硶print
#include <jni.h>
#include "org_colimas_jni_test_JniTest.h" //javah鐢熸垚鐨勫ご鏂囦歡
#include <stdio.h>
JNIEXPORT void JNICALL Java_org_colimas_jni_test_JniTest_print
(JNIEnv *env, jobject object,jstring str)
{
//鑾峰緱瀛楃涓?br />
const char * txt=(*env)->GetStringUTFChars(env,str,0);
printf("%s\n",txt); //鎵撳嵃鍒版帶鍒跺彴
return;
}
鍙傛暟JNIEnv *env錛屾槸JNI閲屾渶閲嶈鐨勫彉閲忋侸ava.exe鍒涘緩JVM錛屼箣鍚嶫VM鐢熸垚涓涓猠nv錛岃env鐩稿綋浜嶫VM鍐呯殑Session錛屽彲浠ュ畬鎴愬垱寤篔ava瀵硅薄錛岃皟鐢ㄧ被鏂規硶錛岃幏寰楃被鐨勫睘鎬х瓑絳夈?/p>
鍦ㄨ繖閲宔nv灝嗘柟娉曠殑鍙傛暟Str浠嶫NI鐨刯string綾誨瀷杞崲涓哄父鏁癱har鏁扮粍銆?/p>
4錛庣紪璇?/p>
cl /Ic:\j2sdk1.4.2_10\include /Ic:\j2sdk1.4.2_10\include\win32 /c JniTestImpl.c
5錛庤繛鎺ヤ負DLL
link /dll JniTestImpl.obj
6錛庤緗甈ATH
set PATH=C:\MyProject\Colimas\CD\JNI\MyJNI;%PATH%
7錛庤繍琛?/p>
java org.colimas.jni.test.JniTest
榪斿洖緇撴灉
hello JVM
緇撴潫
浠ヤ笂鏄疄鐜癑ava鍘熺敓鏂規硶鐨勫紑鍙戣繃紼嬶紝涓嬮潰榪涘叆姝i錛屼嬌鐢–++璋冪敤Java鐨刯ava.lang.String綾匯?/p>
1. Object綾誨嚭鍒涘緩JVM銆?/p>
浣跨敤Java綾諱箣鍓嶅繀欏昏鍒涘緩JVM鐜銆侸DK鐢眏ava.exe鏉ュ畬鎴愩傛湰鏂囨湁Object綾葷殑闈欐佹柟娉旴eginJVM鏉ュ垱寤猴紝鐢‥ndJVM鏉ュ叧闂?/p>
鍒涘緩JVM涔嬪悗浼氬湪鍒涘緩2涓彉閲忥紝鍒嗗埆鏄疛NIEnv* env鍜孞avaVM* jvm錛孞NIEnv涓婃枃宸茬粡璇存槑錛孞avaVM錛岄【鍚嶆濅箟錛屼唬琛↗ava铏氭嫙鏈猴紝鐢ㄥ畠鏉ュ叧闂璊VM銆?/p>
Object綾葷殑澶存枃浠?/p>
#include "jni.h"
class Object
{
public:
static bool BeginJVM();
static bool EndJVM();
Object();
virtual ~Object();
protected:
static JNIEnv* env;
static JavaVM* jvm;
};
object.cpp浠g爜
#include "stdafx.h"
#include "JavaClasses.h"
#include "Object.h"
Object::Object()
{}
Object::~Object()
{}
JNIEnv* Object::env=NULL;
JavaVM* Object::jvm=NULL;
//鍒涘緩JVM
bool Object::BeginJVM()
{
JavaVMOption options[3];
JavaVMInitArgs vm_args;
//鍚勭鍙傛暟
options[0].optionString="-Xmx128m";
options[1].optionString="-Verbose:gc";
options[2].optionString="-Djava.class.path=.";
vm_args.version=JNI_VERSION_1_2;
vm_args.options=options;
vm_args.nOptions=3;
//鍒涘緩JVM錛岃幏寰梛vm鍜宔nv
int res = JNI_CreateJavaVM(&jvm,(void **)&env, &vm_args);
return true;
}
bool Object::EndJVM()
{
//鍏抽棴JVM
jvm->DestroyJavaVM();
return true;
}
2. C++鐨凷tring綾昏皟鐢╦ava.lang.String綾繪柟娉?/p>
緙栧啓C++鐗堢殑String綾伙紝璋冪敤java String綾繪柟娉曘傝皟鐢ㄧ殑鏂規硶濡備笅錛?/p>
String replaceAll(String regex, String replacement);
boolean endsWith(String str);
int indexOf(String str);
int compareTo(String anotherString);
char charAt(int i);
String鐨勫ご鏂囦歡:
class String :public Object
{
public:
//涓庤璋冪敤鐨凧ava鏂規硶鍚嶄竴鑷淬?br />
const char * replaceAll(char *regex,char *replacement);
bool endsWith(char * str);
int indexOf(char * str);
int compareTo(char *anotherString);
char charAt(int i);
String(char *str);
virtual ~String();
};
瀹炵幇錛?/p>
#include "stdafx.h"
#include "String.h"
#include "jni.h"
using namespace std;
jclass clazz; //鍏ㄥ眬鍙橀噺錛岀敤鏉ヤ紶閫抍lass
jobject object; //鍏ㄥ眬鍙橀噺錛岀敤鏉ヤ紶閫抩bject
String::String(char *str)
{
jstring jstr;
if (Object::env ==NULL){
cout << "JVM is not created" << endl;
exit(-1);
}
//鑾峰緱java.lang.String綾?br /> clazz=Object::env->FindClass("java/lang/String");
if (clazz ==0 ){
cout << "Class is not found" << endl;
exit(-1);
}
//鑾峰緱String(String str)鏋勯犱綋
jmethodID mid= Object::env->GetMethodID(clazz,"<init>", "(Ljava/lang/String;)V");
if (mid==0){
cerr<< "GetMethodID Error for class" << endl;
exit(-1);
}
//灝嗗瓧絎︿覆灝佽涓簀string銆?br /> jstr = Object::env->NewStringUTF(str);
if (jstr == 0) {
cerr << "Out of memory" <<endl;
exit(-1);
}
cout << "invoking method" << endl;
//鍒涘緩涓涓猨ava.lang.String瀵硅薄銆?br />
object=Object::env->NewObject(clazz,mid,jstr);
}
String::~String()
{}
char String::charAt(int i)
{
if (Object::env ==NULL){
cout << "JVM is not created" << endl;
exit(-1);
}
if (clazz ==0 ){
cout << "Class is not found" << endl;
exit(-1);
}
if (object ==0 ){
cout << "String object is not created" << endl;
exit(-1);
}
jmethodID mid;
//鑾峰緱charAt鏂規硶錛岋紙I錛塁琛ㄧず 鍙傛暟涓篿nt鍨嬶紝榪斿洖char鍨嬨傝緇嗗弬瑙丣NI瑙勮寖
mid = Object::env->GetMethodID(clazz,"charAt", "(I)C");
if (mid==0){
cerr<< "GetMethodID Error for class" << endl;
exit(-1);
}
jint ji=i;
cout << "invoking method" << endl;
//璋冪敤charAt
jchar z = Object::env->CallCharMethod(object,mid,i);
//榪斿洖緇撴灉銆?br />
return z;
}
int String::compareTo(char *anotherString)
{
if (Object::env ==NULL){
cout << "JVM is not created" << endl;
exit(-1);
}
if (clazz ==0 ){
cout << "Class is not found" << endl;
exit(-1);
}
if (object ==0 ){
cout << "String object is not created" << endl;
exit(-1);
}
jmethodID mid;
//(Ljava/lang/String;)I琛ㄧず鍙傛暟涓簀ava.lang.String錛岃繑鍥瀒nt
mid= Object::env->GetMethodID(clazz,"compareTo", "(Ljava/lang/String;)I");
if (mid==0){
cerr<< "GetMethodID Error for class" << endl;
exit(-1);
}
jstring jstr = Object::env->NewStringUTF(anotherString);
cout << "invoking method" << endl;
//璋冪敤鏂規硶
jint z=Object::env->CallIntMethod(object,mid,jstr);
//榪斿洖緇撴灉
return z;
}
int String::indexOf(char *str)
{
if (Object::env ==NULL){
cout << "JVM is not created" << endl;
exit(-1);
}
if (clazz ==0 ){
cout << "Class is not found" << endl;
exit(-1);
}
if (object ==0 ){
cout << "String object is not created" << endl;
exit(-1);
}
jmethodID mid;
mid= Object::env->GetMethodID(clazz,"indexOf", "(Ljava/lang/String;)I");
if (mid==0){
cerr<< "GetMethodID Error for class" << endl;
exit(-1);
}
jstring jstr = Object::env->NewStringUTF(str);
cout << "invoking method" << endl;
jint z=Object::env->CallIntMethod(object,mid,jstr);
return z;
}
bool String::endsWith(char *str)
{
if (Object::env ==NULL){
cout << "JVM is not created" << endl;
exit(-1);
}
if (clazz ==0 ){
cout << "Class is not found" << endl;
exit(-1);
}
if (object ==0 ){
cout << "String object is not created" << endl;
exit(-1);
}
jmethodID mid;
mid= Object::env->GetMethodID(clazz,"endsWith", "(Ljava/lang/String;)Z");
if (mid==0){
cerr<< "GetMethodID Error for class" << endl;
exit(-1);
}
jstring jstr = Object::env->NewStringUTF(str);
cout << "invoking method" << endl;
bool z = Object::env->CallBooleanMethod(object,mid,jstr);
return z;
}
const char * String::replaceAll(char *regex, char *replacement)
{
if (Object::env ==NULL){
cout << "JVM is not created" << endl;
exit(-1);
}
if (clazz ==0 ){
cout << "Class is not found" << endl;
exit(-1);
}
if (object ==0 ){
cout << "String object is not created" << endl;
exit(-1);
}
jmethodID mid;
mid= Object::env->GetMethodID(clazz,"replaceAll", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;");
if (mid==0){
cerr<< "GetMethodID Error for class" << endl;
exit(-1);
}
jvalue array[2];
jstring jreg = Object::env->NewStringUTF(regex);
jstring jstr = Object::env->NewStringUTF(replacement);
array[0].l=jreg;
array[1].l=jstr;
cout << "invoking method" << endl;
//浼犲叆鍙傛暟錛岃皟鐢╮eplaceAll鏂規硶
jobject z=Object::env->CallObjectMethodA(object,mid,array);
const char *result=Object::env->GetStringUTFChars((jstring)z, 0);
return (const char *)result;
}
3錛庢祴璇?/p>
緙栧啓嫻嬭瘯浠g爜
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)){
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
} else{
//鍒涘緩JVM
Object::BeginJVM();
String test("hello");
//璋冪敤replaceAll
const char *result = test.replaceAll("l","z");
//榪斿洖緇撴灉
cout<< result <<endl;
//鍏抽棴JVM
Object::EndJVM();
}
return nRetCode;
}
4錛庤繍琛?/p>
緙栬瘧闇瑕?jni.h鍜宩vm.lib鏂囦歡銆?/p>
jni.h鍦╗JAVA_HOME]\include
jvm.lib鍦╗JAVA_HOME]\lib
榪愯闇瑕乯vm.dll
jvm.dll鍦╗JAVA_HOME]\ jre\bin\client
榪愯緇撴灉濡備笅錛?/p>
invoking method
invoking method
hezzo
Press any key to continue
灝界鏈枃鐨勪唬鐮佸緢鏈夋剰鎬濓紝浣嗘垜榪樻病鏈夋兂鍒版湁浠涔堜環鍊鹼紝浠ュ強搴旂敤鍒板疄闄呴」鐩腑鐨勭悊鐢便?/p>
鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛歨ttp://blog.csdn.net/onlymilan/archive/2006/07/20/947652.aspx
<script type="text/javascript" language="javascript">
$(function()
{
$('#btn1').click(function(){
var show=window.showModalDialog('show.jsp');
var temp1=pd(show.id);
if(temp1){
temp1.childNodes[3].innerHTML=parseInt(temp1.childNodes[3].innerHTML)+1;
}else{
var tr=$('<tr>');
var td1=$('<td>').html(show.id).appendTo(tr);
var td2=$('<td>').html(show.name).appendTo(tr);
var td3=$('<td>').html(show.price).appendTo(tr);
var td4=$('<td>').html(1).appendTo(tr);
$('#tbody1').append(tr);
}
});
}
)
function pd(value){
var boq;
var tbody=$('#tbody1 tr');
for(var i=1;i<tbody.length;i++){
if(tbody[i].childNodes[0].innerHTML==value){
boq=tbody[i];
}
}
return boq;
}
</script>
</head>
<body>
<table>
<tbody id="tbody1">
<tr >
<td>搴忓彿</td>
<td>鍚嶇О</td>
<td>浠鋒牸</td>
<td>鏁伴噺</td>
</tr>
</tbody>
</table>
<input id="btn1" type="button" />
</body>