java web工程引用java project(以二维码和加密为例)

在多人开发同一个javaweb工程时,可以把java工程从外部调用,不必都写到一个javaweb工程,

通过将二维码和加密的java程序都写成单独的java工程,最后用一个javaweb工程调用,效果图如下

子工程目录结构

javaweb工程目录(注意子工程的jar包也要拿过来)

  

eclipse配置步骤:

主工程右键=>java build path =>projects=>add=>选择两个子工程

java build path=>libraries=>add class folder=>选中两个子工程的bin文件夹

java build path=>order and export=>选中子工程

Deployment assembly=>project=>选中子工程

配置文件和有关验证码的那篇随笔是一样的,这里不多说

userlogin.html

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>验证码??</title>
<script    src="jquery/jquery-2.1.3.min.js" type="text/javascript"></script>
</head>
<body>
<div style="text-align:center;margin-top:200px;">
    <input id="password" type="password" placeholder="输入密码" style="width:200px;height:30px;"/><br>
    <input id="key" type="password" placeholder="输入秘钥" style="width:200px;height:30px;"/><br>
    <input id="key" type="button" value="确认" onclick="javascript:checkedOk()" style="width:80px;height:30px;font-family:黑体;"/>
    <font color="red" id="message"></font>
</div>
<div id="erweima" style="text-align:center;margin-left:57px;"></div>
</body>
<script type="text/javascript">
function checkedOk(){
    var password = document.getElementById("password").value;
    var key = document.getElementById("key").value;
    $.ajax({
        url:"login.do",
        data:{password:password,key:key},
        success:function(data){
            alert(1565);
            if(data.message == 1){
                $("#erweima").html("<img src=‘erweimaimg.do‘>");
                $("#message").text("");
            }else{
                $("#message").text("密码和秘钥不匹配");
                $("#erweima").html("");
            }
        }
    });
}
</script>
</html>

UserController.java

@Controller
public class UserController {

    @RequestMapping(value = "/erweimaimg")
    public void showImgCode(HttpServletResponse resp) {
        try {
            QRCodeEncoderHandler.encoderQRCode("http://www.baidu.com", resp.getOutputStream());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @RequestMapping(value = "/login.do")
    @ResponseBody
    public Object login(HttpServletRequest request) {
        Map<String, String> message = new HashMap<String, String>();
        String password = request.getParameter("password");
        String key = request.getParameter("key");
        String passwordsure;
        try {
            passwordsure = PasswordUtil.encrypt(PasswordUtil.getMD5(password), key);
            if("Jjpx4STXruE3jZF1gG4D/BGE6w03JQK2szWUdavdsoevuVmxoV52Lw==".equals(passwordsure)){
                message.put("message", "1");
            }else{
                message.put("message", "0");
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return message;
    }

}

PasswordUtil.java

public class PasswordUtil {
    /**
     * @todo MD5加密
     * @return String
     * @param str
     */
    public static String getMD5(String str) {
        MessageDigest messageDigest = null;
        try {
            messageDigest = MessageDigest.getInstance("MD5");
            messageDigest.reset();
            messageDigest.update(str.getBytes("UTF-8"));
        } catch (NoSuchAlgorithmException e) {
            System.out.println("NoSuchAlgorithmException caught!");
            System.exit(-1);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        byte[] byteArray = messageDigest.digest();
        StringBuffer md5StrBuff = new StringBuffer();
        for (int i = 0; i < byteArray.length; i++) {
            if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));
            else md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
        }
        return md5StrBuff.toString();
    }

    /**
     * Description 根据键值进行加密
     * @param data
     * @param key  加密键byte数组
     * @return
     * @throws Exception
     */
    public static String encrypt(String data, String key) throws Exception {
        byte[] bt = encrypt(data.getBytes(), key.getBytes());
        String strs = new BASE64Encoder().encode(bt);
        return strs;
    }

    /**
     * Description 根据键值进行解密
     * @param data
     * @param key  加密键byte数组
     * @return
     * @throws IOException
     * @throws Exception
     */
    public static String decrypt(String data, String key) throws IOException,
            Exception {
        if (data == null)
            return null;
        BASE64Decoder decoder = new BASE64Decoder();
        byte[] buf = decoder.decodeBuffer(data);
        byte[] bt = decrypt(buf,key.getBytes());
        return new String(bt);
    }

    /**
     * Description 根据键值进行加密
     * @param data
     * @param key  加密键byte数组
     * @return
     * @throws Exception
     */
    private static byte[] encrypt(byte[] data, byte[] key) throws Exception {
        // 生成一个可信任的随机数源
        SecureRandom sr = new SecureRandom();

        // 从原始密钥数据创建DESKeySpec对象
        DESKeySpec dks = new DESKeySpec(key);

        // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
        SecretKey securekey = keyFactory.generateSecret(dks);

        // Cipher对象实际完成加密操作
        Cipher cipher = Cipher.getInstance("DES");

        // 用密钥初始化Cipher对象
        cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);

        return cipher.doFinal(data);
    }

    /**
     * Description 根据键值进行解密
     * @param data
     * @param key  加密键byte数组
     * @return
     * @throws Exception
     */
    private static byte[] decrypt(byte[] data, byte[] key) throws Exception {
        // 生成一个可信任的随机数源
        SecureRandom sr = new SecureRandom();

        // 从原始密钥数据创建DESKeySpec对象
        DESKeySpec dks = new DESKeySpec(key);

        // 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
        SecretKey securekey = keyFactory.generateSecret(dks);

        // Cipher对象实际完成解密操作
        Cipher cipher = Cipher.getInstance("DES");

        // 用密钥初始化Cipher对象
        cipher.init(Cipher.DECRYPT_MODE, securekey, sr);

        return cipher.doFinal(data);
    }

}

QRCodeEncoderHandler.java  //生成二维码

public class QRCodeEncoderHandler {

    public static void encoderQRCode(String content, OutputStream outputStream) {
        try {
            Qrcode qrcodeHandler = new Qrcode();
            // 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小
            qrcodeHandler.setQrcodeErrorCorrect(‘M‘);
            qrcodeHandler.setQrcodeEncodeMode(‘B‘);
            qrcodeHandler.setQrcodeVersion(5);
            byte[] contentBytes = content.getBytes("gb2312");
            BufferedImage bufImg = new BufferedImage(250,250,BufferedImage.TYPE_INT_RGB);
            Graphics2D gs = bufImg.createGraphics();
            gs.setBackground(Color.WHITE);
            gs.clearRect(0, 0, 250, 250);
            // 设定图像颜色> BLACK
            gs.setColor(Color.BLACK);
            // 设置偏移量 不设置可能导致解析出错
            int pixoff = 2;
            // 输出内容> 二维码
            if (contentBytes.length > 0 && contentBytes.length < 800) {
                boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);
                for (int i = 0; i < codeOut.length; i++) {
                    for (int j = 0; j < codeOut.length; j++) {
                        if (codeOut[j][i]) {
                            gs.fillRect(j * 5 + pixoff, i * 5 + pixoff, 5, 5);
                        }
                    }
                }
            } else {
            }
            gs.dispose();
            bufImg.flush();
            ImageIO.write(bufImg, "png", outputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
时间: 2024-10-10 22:35:17

java web工程引用java project(以二维码和加密为例)的相关文章

Java使用QRCode.jar生成与解析二维码

正题:Java使用QRCode.jar生成与解析二维码demo 欢迎新手共勉,大神监督指正 # 不知道QRCode的请移步wiki,自行了解,这里不多做解释 *******创建二维码之前的工作******** 去下面给出的地址下载QRCode.jar包,此jar包已经包括 生成与解析 . 官网下载到的jar包是没有解析的 https://files.cnblogs.com/files/bigroc/QRCode.zip ***创建好你的测试类导好jar包开始吧*** 第一部分:生成二维码 pac

实现手机扫描二维码页面登录,类似web微信-第二篇,关于二维码的自动生成

转自:http://www.cnblogs.com/fengyun99/p/3541251.html 接上一章,我们已经基本把业务逻辑分析清楚了 下面我们第一步,实现二维码的web动态生成. 页面的二维码包含的信息我在上一篇已经解释过,是一个页面的sessionID,这个sessionID主要是标示出哪个页面是哪个页面,例如你打开N个页面,必然每个页面的标示会不一样,只有你用手机扫描了某一个页面(page a)的二维码,将来响应操作的页面只能是page a. 实现二维码的类库非常多,如果你的平台

如何用web api在网页中嵌入二维码?

如何用web api在网页中嵌入二维码? 随着智能手机和平板电脑的日益普及,二维码逐渐成了链接智能终端和传统网站的桥梁.在下文中,笔者将介绍几个实时生成二维码的web api,希望能够简化web design过程中的二维码集成工作. 1. 范例一 <img src="http://qrickit.com/api/qr?d=http://www.taobao.com" > 上述代码产生如下的二维码图片: 该web api还支持下面的这些特性, 说明文字:例如addtext=H

开源)嗨,Java,你可以生成金山词霸的二维码分享海报吗?

As long as you can still grab a breath, you fight.只要一息尚存,就不得不战. 有那么一段时间,我特别迷恋金山词霸的每日一句分享海报.因为不仅海报上的图片美,文字也特别美,美得让我感觉生活都有了诗意.就像文章开头的那句中英文对照,中文和英文都妙极了. 最近,又有很多人迷恋上了流利说的小程序分享海报(朋友圈比比皆是).但不管是金山词霸还是流利说,分享的海报都不是自己的二维码,这对于个人品牌的缔造者来说,实在是一件出力不讨好的事. 当然了,这种事难不倒

asp.net.web如何简单生成和保存二维码图片的例子

首先,要有生成二维码图片,需要二维码生成的类库,到官网下载thoughtWorks.QRCode.dll 例子的步骤: 1.创建项目QRCodeTest1,选择asp.net.web窗体应用程序 2.添加引用,引入支持生成二维码图片类库,thoughtWorks.QRCode.dll 3.右键项目QRCodeTest1,选择添加web窗体,生成WebForm1.aspx, 并添加新文件夹photos,存放生成的二维码图片 4.打开webForm1.aspx,可以选择两种方式编写页面(熟悉的话,用

web.py搭建个人网址微信二维码后台开发 -《狗嗨默示录》-

建议在Python2.x版本食用 webapp.py #!/usr/bin/env python # -*- coding:UTF-8 -*- import web import qrcode from PIL import Image import datetime urls = ( '/','Index' # '/images/logo.png','Logo' #可放于静态文件夹static中 ) render = web.template.render('templates')#模板引擎

Java web项目引用java项目,类型找不到

错误信息: java.lang.ClassNotFoundException: org.codehaus.jackson.map.ObjectMapper at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoad

C#添加二维码带加密带logo

#region 生成QR码,加密与logo在此处修改 public static void CreateQr(string strQrContent, DataTable myTable) { Qr q = new Qr(); byte[] bylogo = null; //加密? //logo if (ConfigurationManager.AppSettings.AllKeys.Contains("Logo") && ConfigurationManager.Ap

Eclipse 创建Java Web工程发布并运行

设置Web服务器 添加Web服务器 启动Web服务器 创建Web工程 建立JSP文件供测试 发布Java Web工程 运行Java Web工程