springboot生成二維碼


1:添加依賴

    <!-- 二維碼支持包 -->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.2.0</version>
        </dependency>

        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.2.0</version>
        </dependency>

 

  controller層:

1:獲取要生成二維碼的內容傳給前端

 //輸入二維碼要生成的內容
    @RequestMapping(value = "/open")
    public ModelAndView open( String qrid1){
        ModelAndView mv=new ModelAndView();
        mv.addObject("qrid",qrid1);
        mv.setViewName("/qrcode.btl");
        return mv;
    }

前端頁面:

 <form id="enter" action="/qr/open" method="post" class="form-horizontal form-label-left">
                                    <div class="form-group">
                                        <label class="control-label col-md-3 col-sm-3 col-xs-12">票編號</label>
                                        <div class="col-md-9 col-sm-9 col-xs-12">
                                            <input name="qrid1" id="qrid1" type="text" class="form-control" placeholder="請輸入有效的票編號"required>
                                            <span style="color: red" id="warning"></span>
                                        </div>
                                        <div class="modal-footer">
                                            <button type="submit"   class="btn btn-primary">提交</button>
                                        </div>
                                    </div>
                                </form>

這里再通過調用輸入的東西生成二維碼圖片:

   <img src="/qr/qrcode?content=${qrid}"/>

上面src調用了/qr/qrcode

把輸入的qrid傳入進去。

注意action的地址,我controller的地址是/qr 所以我地址前面都寫了/qr

 /**
     * 生成二維碼方法
     *
     * @param  content 要生成的內容
     * @param resp response對象
     * @throws Exception 拋出異常
     */
    @RequestMapping(value = "/qrcode")
    public void getQrcode(String content, HttpServletResponse resp) throws Exception {
        ServletOutputStream stream = null;
       /* Long qrid=Long.parseLong(content);
        Ticket ticket=ticketRepository.findByTicketId(qrid);
       if (ticket!=null) {*/
           try {
               stream = resp.getOutputStream();
               Map<EncodeHintType, Object> hints = new HashMap<>();
               //編碼
               hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
               //邊框距
               hints.put(EncodeHintType.MARGIN, 0);
               QRCodeWriter qrCodeWriter = new QRCodeWriter();
               BitMatrix bm = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, 200, 200, hints);
               MatrixToImageWriter.writeToStream(bm, "png", stream);
           } catch (WriterException e) {
               e.getStackTrace();

           } finally {
               if (stream != null) {
                   stream.flush();
                   stream.close();
               }
           }
       }

一開始剛打開這個頁面是沒有填寫數據的,應該寫一個方法打開這個頁面,賦好值

//打開生成二維碼頁面。
    @RequestMapping(value = "/open1")
    public ModelAndView open1(String qrid1){
        ModelAndView mv = new ModelAndView();
        qrid1="當前票為空"; 
        mv.addObject("qrid",qrid1);
        mv.setViewName("/qrcode.btl");
        return mv;
    }

然后就在可以在前端頁面輸入你要生成二維碼的內容啦。

剛打開頁面:

 

 輸入數據后:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM