Java applet 在JSP中的使用

other reference :http://quicker.iteye.com/category/93278

1. Applet Java class: CryptoApplet.java

2. 编译后,将class 放在某个目录下,这里放在jsp file的相同路径

3. JSP 引用: 包括 js , html , applet definition

 

1. CryptoApplet.java

 

import java.applet.*;

import java.io.*;

 

import java.security.InvalidKeyException;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

 

import com.bcsis.waf.logger.LogConstant;

import com.bcsis.waf.logger.Logger;

import com.bcsis.waf.logger.LoggerManager;

 

import netscape.javascript.*;

 

public class CryptoApplet extends Applet {

   private static Logger logger = LoggerManager.getInstance().getLogger(

               LogConstant.APP_LOGGER);

…………

   @Override

   public void start() {

        

   }

 

   @Override

   public void stop() {

         System.out.println("stopping");

         logger.warn("snow applet logger :CryptoApplet : " + "stopping");

   }

   @Override

   public void destroy() {

         System.out.println("destroying");

         logger.warn("snow applet logger :CryptoApplet : " + "destroying");

   }

 

   public String getJavaVersion() {

         return System.getProperty("java.version");

   }

 

   private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5",

               "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };

 

   private static String byteArrayToHexString(byte[] b) {

         StringBuffer resultSb = new StringBuffer();

         for (int i = 0; i < b.length; i++) {

               resultSb.append(byteToHexString(b[i]));

         }

         return resultSb.toString();

   }

 

   private static String byteToHexString(byte b) {

         int n = b;

         if (n < 0)

               n = 256 + n;

         int d1 = n / 16;

         int d2 = n % 16;

         return hexDigits[d1] + hexDigits[d2];

   }

 

   /* digests */

 

   public String md5(String s) throws Exception {

         try {

 

               MessageDigest md = MessageDigest.getInstance("MD5");

 

               byte[] results = md.digest(s.getBytes("UTF-8"));

 

               String resultString = byteArrayToHexString(results);

               System.out.println("=== string digest aft : " + resultString);

               return resultString.toUpperCase();

 

         } catch (Exception e) {

 

               return null;

         }

   }

 

}

 

 

2. JSP & Java Script ,取值以及往后台传值

 

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>

<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>

<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>

<script type="text/javascript" src="shatest.js"></script>

<script>

 

      function compute () {

       var str=window.document.forms[0].password.value;

       var md5 = document.crypto.md5(str);

       window.document.getElementById('encryptedPassword').value = "Prefix_XXX" + md5;

       alert("lala md5 : " + md5 ) ;

}

 

</script>

 

<!-- Start of Login section -->

<egiro:javascript formName="bankLoginForm" cdata="false" />

<html:form method="POST" action="/banklogin" οnsubmit="return validateBankLoginForm(this)">

 

<input type="hidden" id="encryptedPassword" name="encryptedPassword" value="qwe" />

 <div align="center">

  <div class="formtitle">

    <bean:message bundle="appResource" key="label.password" />

  </div>

  <div class="formfield">

    <html:password property="password" size="20" redisplay="false" styleClass="inputBox" redisplay="false" />

  </div>

 <div>

  <html:submit styleClass="button" property="submit" οnclick="javascript:return compute();">

  <bean:message bundle="appResource" key="button.login" />

  </html:submit>

 </div>

</div>

<applet name="crypto" code="CryptoApplet" archive="cryptoapplet.jar" width="0" height="0" mayscript="true">

    <param name="debug" value="true" />

    <param name="raiseExceptions" value="false" />

     No Java support for APPLET!!

</applet>

   

</html:form>

<!-- End of Login Section -->

-----------------------------------------------

1)  Js : <script>    

      function compute () {

       var str=window.document.forms[0].password.value;

       var md5 = document.crypto.md5(str);

       window.document.getElementById('encryptedPassword').value = "Prefix_XXX" + md5;

       alert("lala md5 : " + md5 ) ;

      }

 

2)  Calling js :

<div><html:submit styleClass="button" property="submit" οnclick="javascript:return compute();">

                    <bean:message bundle="appResource" key="button.login" />

                </html:submit>

            </div>

 

</script>

3)  Applet definition

<applet name="crypto" code="CryptoApplet" archive="cryptoapplet.jar" width="0" height="0" mayscript="true">

<param name="debug" value="true" />

<param name="raiseExceptions" value="false" /> No Java support for APPLET!!

</applet>

 

Notes:

 

1. In jsp, use js function compute () to call the applet

2. Applet definition : <applet name="crypto" code="CryptoApplet" archive="cryptoapplet.jar" width="0" height="0" mayscript="true">

name : applet name 就是js中call

code :Applet class的路径,这样写意味着applet class 和该jsp 在同一目录下

3.  把值放在hidden 变量'encryptedPassword'里,后台可以从request取window.document.getElementById('encryptedPassword').value = "Prefix_XXX" + md5;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值