将jsp界面生成二维码,在另一个jsp界面显示,扫码签名,并用dwr回显签名图片 (二)

package com.goldgrid.qrcode.qrcodeone;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;

import com.swetake.util.Qrcode;


public class EncoderHandler {
	
	public void encoderQRCoder(String content, HttpServletResponse response) {
		try {
			Qrcode handler = new Qrcode();
			handler.setQrcodeErrorCorrect('M');
			handler.setQrcodeEncodeMode('B');
			handler.setQrcodeVersion(12);
			
			System.out.println(content);
			byte[] contentBytes = new byte[4096];
			contentBytes = content.getBytes("UTF-8");
			System.out.println("---------"+contentBytes.length);
			
			BufferedImage bufImg = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB);
			
			Graphics2D gs = bufImg.createGraphics();
			
			gs.setBackground(Color.WHITE);
			gs.clearRect(0, 0, 200, 200);
			
			//设定图像颜色:BLACK
			gs.setColor(Color.BLACK);
			
			//设置偏移量  不设置肯能导致解析出错  
			int pixoff = 2;
			//输出内容:二维码
			if(contentBytes.length > 0 && contentBytes.length < 2000) {
				boolean[][] codeOut = handler.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 * 3 + pixoff, i * 3 + pixoff,3, 3);
						}
					}
				}
			} else {
				System.err.println("QRCode content bytes length = " + contentBytes.length + " not in [ 0,2000 ]. ");
			}
			
			gs.dispose();
			bufImg.flush();
			
			
			
			//生成二维码QRCode图片
			ImageIO.write(bufImg, "jpg", response.getOutputStream());
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

package com.goldgrid.qrcode.utils;

import java.util.Collection;

import javax.servlet.ServletException;

import org.directwebremoting.Browser;
import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.ScriptSession;
import org.directwebremoting.ScriptSessionFilter;
import org.directwebremoting.WebContextFactory;

public class DwrImage {
	public void onPageLoad(String uuid) {
		System.out.println("gotoOnPage:"+uuid);
		ScriptSession scriptSession = WebContextFactory.get().getScriptSession();
		scriptSession.setAttribute("userId", uuid);
		/*DwrScriptSessionManagerUtil dwrScriptSessionManager = new DwrScriptSessionManagerUtil();
		try {
			dwrScriptSessionManager.init();
		} catch (ServletException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}*/
	}
	
	
	public void sendMsg(String userid, String message, String jsFuc) {
        final String userId = userid;
        final String msg = message;
        final String jsFunc = jsFuc;
        
        Browser.withAllSessionsFiltered(new ScriptSessionFilter(){
            public boolean match(ScriptSession session) {
                if (session.getAttribute("userId")==null){
                    return false;
                }else {
                    return (session.getAttribute("userId")).equals(userId);
                }
            	//return true;
            }
        }, new Runnable(){
            private ScriptBuffer script = new ScriptBuffer();
            public void run() {
                // 推送消息
                script.appendCall(jsFunc,msg);
                Collection<ScriptSession>sessions = Browser.getTargetSessions();
                for (ScriptSession scriptSession : sessions) {
                    scriptSession.addScript(script);
                }             
            }
        }); 
    }
	
	
	



}


package com.goldgrid.qrcode.utils;

import java.util.UUID;

/**
 *@time 2017年10月27日上午9:28:59
 *@auth NK
 */
public class UUIDUtil {
	public  String getUuid(){
		String uuid = UUID.randomUUID().toString();
		return uuid.replaceAll("-", "");
	}
}

qrcode.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    
    <%@ page import="com.goldgrid.qrcode.utils.UUIDUtil"%>
<% String path=request.getContextPath();
  String basepath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
 	 UUIDUtil uuid=new UUIDUtil();
    String UUID = uuid.getUuid();
 	session.setAttribute("UUID", UUID);
 	
  %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="shortcut icon" href="#" />
<base herf="<%=basepath %>"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>DWR推送消息</title>
	<script type="text/javascript" src="<%=request.getContextPath() %>/qrcode/jquery-1.7.2.js"></script>
	<script type='text/javascript' src='<%=request.getContextPath() %>/dwr/engine.js'></script>  
	<script type='text/javascript' src='<%=request.getContextPath() %>/dwr/util.js'></script>  
	<script type='text/javascript' src='<%=request.getContextPath() %>/dwr/interface/DwrImage.js'></script>  
	
	<script type="text/javascript" src="<%=request.getContextPath() %>/qrcode/jq-signature.js"></script>
	<script type="text/javascript" src="<%=request.getContextPath() %>/qrcode/jq-signature.min.js"></script>
	<script type="text/javascript" src="<%=request.getContextPath() %>/qrcode/jquery.easyui.min.js"></script>
	<script>
		function init(){
	  		dwr.engine.setActiveReverseAjax(true);
	  		dwr.engine.setNotifyServerOnPageUnload(true);
	  		DwrImage.onPageLoad('<%=UUID%>');
	  	    dwr.engine._errorHandler = function(message, ex) {dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true);};
	  	}
	  	window.onload = init;
	  	
	  	function receiveMsg(msg){
	  		$("#content").attr("src", msg);
	  	}

	</script>
	<style> 

body{margin:0px;padding:0px;}

 /*{transform就是专门为img图片设置的旋转*/

#content{transform:rotate(270deg); border:1px solid black;} 

</style>
	
</head>
<body>
<img id="erweima" title="二维码" style="height:120px;width:120px" src="QRServlet"  />



<img id="content"  style="height:120px;width:120px;" src=""/>
<!-- <div id="contentext" style=" width: 120px ;height: 120px;border : 1px solid ; text-align: center ; padding: 5px;"></div> -->  
</body>
</html>

signature.jsp

<!doctype html>
<%
	String protocol = request.getScheme();
	String serverIP = request.getServerName();
	int port = request.getServerPort();
	String uuid = request.getParameter("keyID");
	//String uuid=(String)session.getAttribute("UUID");
	String areaCode = request.getParameter("AreaCode");
	String businessID = request.getParameter("BusinessID");
	/* out.println("签名页接收到---keyid----"+uuid);
	out.println("签名页接收到---areaCode----"+areaCode);
	out.println("签名页接收到---businessID----"+businessID); */
	String _ctx = (request.getContextPath()).equalsIgnoreCase("/") ? "" : request.getContextPath();
	String url = protocol + "://"+ serverIP + ":" + port + _ctx;
	String porurl = url + "/SignatureServlet";
	
%>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>签名</title>
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <link rel="stylesheet" href="base.css">
    <link rel="stylesheet" href="index.css">
    <script src="jquery-1.12.4.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath() %>/qrcode/jquery-1.7.2.js"></script>
	<script type='text/javascript' src='<%=request.getContextPath() %>/dwr/engine.js'></script>  
	<script type='text/javascript' src='<%=request.getContextPath() %>/dwr/util.js'></script>  
	<script type='text/javascript' src='<%=request.getContextPath() %>/dwr/interface/DwrImage.js'></script>  
	
	<script type="text/javascript" src="<%=request.getContextPath() %>/qrcode/jq-signature.js"></script>
	<script type="text/javascript" src="<%=request.getContextPath() %>/qrcode/jq-signature.min.js"></script>
	<script type="text/javascript" src="<%=request.getContextPath() %>/qrcode/jquery.easyui.min.js"></script>
	<script>
		function init(){
	  	    dwr.engine.setActiveReverseAjax(true);
	  		dwr.engine.setNotifyServerOnPageUnload(true);
	  		DwrImage.onPageLoad("<%=uuid%>");
	  	    dwr.engine._errorHandler = function(message, ex) {dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true);};
	  	}
	  	window.onload = init;
	</script>
</head>
<body>
    <!--头部占位-->
    <div style="height: 44px;background-color: #0095EE;">
        
    </div>
    
    <div class="container">

    <div class="top clearfix">
    
        <div class="bottom clearfix">
            <div> 
           <button id="saveBtn" class="btn btn-default" οnclick="saveSignature();" disabled
			style="width: 50px;height: 50px;background:#0095EE;color:#ffffff;transform: rotate(90deg);position:absolute;bottom:135px;border-radius:5px;">保存</button>
            </div>
             
            <div>
            <button id="clearBtn" class="btn btn-default" οnclick="clearCanvas();" 
			style="width: 50px;height: 50px;background:#ffffff;color:#0095EE;transform: rotate(90deg);position:absolute;bottom:65px;border-radius:5px;">清除</button>
			</div>
        </div>

            <div class="row" style="display: none;">
				<div class="col-xs-12">
					<div class="js-signature"></div>
				</div>
			</div>
        <div class="top-left clearfix">
            <div class="top-kuang">
                <div class="top-xukuang">
                    <div class="js-signature" data-width="600" data-height="580" 
						data-border="1px solid white" data-line-color="#000000" data-auto-fit="true"></div>
                </div>
            </div>
        </div>
        <div id="signature">
						<p>
						</p>
					</div>
        <div class="top-right">
            <span><img class="img-logo" src="imgs/logo.png" alt=""></span>
        </div>
        <div class="top-r-drs"><span>安徽电信无纸化系统</span></div>
        <!--<span class="xingxing"></span>-->
        <div class="top-r-drst">
            <span><img class="img-xing" src="imgs/xing.png" alt=""></span><span style="vertical-align: middle;">无纸化受理符合国家签名法,具有纸质文档同等法律效力</span>
        </div>
        </div>
    </div>
    
 <script >
$(document).on('ready', function() {
	if ($('.js-signature').length) {
		$('.js-signature').jqSignature();
	}
});

function clearCanvas() {
	$('.js-signature').eq(1).jqSignature('clearCanvas');
	$('#saveBtn').attr('disabled', true);
}

function saveSignature() {
	$('#signature').empty();
	var dataUrl = $('.js-signature').eq(1).jqSignature('getDataURL');
	$.ajax({
		url : '<%=porurl %>',
		type : "post",
		data : {
			commond : 'save',
			keyID : '<%=uuid %>',
			areaCode : '<%=areaCode %>',
			businessID : '<%=businessID %>',
			basePicture : dataUrl
		},
		success : function(data) {
			if(data == 1){
				DwrImage.sendMsg("<%=uuid%>", dataUrl, "receiveMsg");
				alert("保存签名成功");
				<%-- DwrImage.sendMsg("<%=uuid%>", dataUrl, "receiveMsg"); --%>
				window.close();
			}else if(data==2){
				DwrImage.sendMsg("<%=uuid%>", dataUrl, "receiveMsg");
				alert("更新签名成功");
				<%-- DwrImage.sendMsg("<%=uuid%>", dataUrl, "receiveMsg"); --%>
				window.close();
			}
		}
	});
//		var img = $('<img>').attr('src', dataUrl);
//		$('#signature').append(img);
	 
}

$('.js-signature').eq(1).on('jq.signature.changed', function() {
	$('#saveBtn').attr('disabled', false);
});

    var winWid =  $(window).width();
    var rW = Math.floor(winWid/5);
    var poRW = Math.floor(rW/2)+10;
    $('.top-r-drs').css('right',poRW);
    $('.top-r-drst').css('right',poRW);
//    $('.xingxing').css('right',poRW);
    var winHei =  $(window).height();
    var lHei = winHei-44-40;
    var inHei = lHei-16;
    var mgTHei = -Math.floor(inHei/2);
    $('.top-kuang').css('height',lHei);
    $('.top-xukuang').css('height',inHei);
    $('.bottom').css('height',winHei);
    $('.top-xukuang').css('margin-top',mgTHei);

//    $('.top-left').css('margin-top',lHei);

</script>

</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值