1. 程式人生 > >新浪雲+七牛雲實現 Mysql + Servlet + Jsp 使用記錄

新浪雲+七牛雲實現 Mysql + Servlet + Jsp 使用記錄

前言

筆者最近遇到的專案,後端是用 Java Servlet + Jsp + Mysql 實現的,後端中使用的圖片託管在七牛雲CDN,整個 Java Web 應用是託管在新浪雲上的。這兒坐下專案記錄,便於自己和其他開發者查閱,如有問題歡迎留言。

新浪雲註冊

新浪雲的好處就是便宜,註冊送幾千豆,差不多能用幾個月,對於初創者是個很好的選擇。

新浪雲的邀請註冊連結 http://t.cn/R4Hwcv6 。根據新浪雲的規定,通過邀請註冊,邀請人和被邀請人都能獲得200豆的獎勵。

可以在新浪雲上面利用PHP、Python、Java 來開發 Web 程式。

blog.csdn.net/never_cxb

獎勵來源 雙方各獲得獎勵 說明
好友註冊成功 200雲豆 需通過邀請連結完成註冊
好友首次充值>=100元 600雲豆
好友首次建立獨享型MySQL 200雲豆

七牛雲註冊

七牛有 5G 的免費空間,可以存放圖片等靜態資源,給自己網站、APP提供CDN加速。

新浪雲的使用技巧

  • 檢視應用的日誌,有 Http、JVM、資料庫日誌等等
    android

  • 打印出異常棧軌跡
    一般異常都是e.printStackTrace();這樣本地除錯的時候可以輸出到控制檯。但是對於 Web 應用的 Servlet 如何辦呢?
    筆者是把棧軌跡轉換為 String,然後輸出到瀏覽器頁面。

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    PrintWriter out
= resp.getWriter(); try { ...... } catch (Exception e) { //將異常棧軌跡轉化為字串 StringWriter errors = new StringWriter(); e.printStackTrace(new PrintWriter(errors)); //利用 Servlet 的PrintWriter輸出到網頁 out.print(errors.toString()); }
  • 使用 Apache的開源專案Log4j,它是一個功能強大的日誌元件。

如何連線新浪雲 Mysql

一個問題? 是否能夠本地連線新浪雲的 Mysql,答案是很難。

新浪雲 MySQL 是不支援外部IP直連,有一些中轉的方法,但是不太穩定,有需求的小夥伴們可以選擇試試。

那麼筆者開發的時候,是本地建一個 Mysql,本地測試連線本地的 Mysql。上傳到新浪雲的時候把地址、使用者名稱、密碼修改成新浪雲的。

public class MysqlTool {

    private static Connection con = null;

    // 是否使用新浪雲
    private static boolean isCloud = true;

    // 為了方便分析錯誤,將異常全部丟擲到最頂層
    public static Connection getConnection() throws Exception {

        if (con != null) {
            return con;
        }

        // JDBC驅動程式
        Class.forName("com.mysql.jdbc.Driver").newInstance();

        // 後面unicode和utf8設定防止中文亂碼
        String url = "jdbc:mysql://127.0.0.1:3306/**database_name**?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf-8";
        String name = "root";
        String password = "**password**";

        if (isCloud) {
            String appName = SaeUserInfo.getAppName();
            String mysqlName = "app_" + appName;
            url = "jdbc:mysql://w.rdc.sae.sina.com.cn:3307/" + mysqlName + "?autoReconnect=true";
            name = SaeUserInfo.getAccessKey();
            password = SaeUserInfo.getSecretKey();
        }
        con = DriverManager.getConnection(url, name, password);

        return con;

    }
}

注意上面的程式碼

name = SaeUserInfo.getAccessKey();
password = SaeUserInfo.getSecretKey();

在本地執行得到的 name 和 password 和雲端執行得到的結果是不一樣的。

上傳到雲端後,程式碼動態獲取資料庫的使用者名稱和密碼,就可以連線資料庫了。

Note
新浪雲預設的 Mysql 埠是3307,而本地的預設是3306,請大家注意。

中文亂碼插入 Mysql

試試在 Url 後面加上useUnicode=true&characterEncoding=utf-8

 String url = "jdbc:mysql://127.0.0.1:3306/**database_name**?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf-8";

新浪雲預定義的環境變數

說明:使用時需要先匯入 SaeUserInfo這個類,使用方式:import com.sina.sae.util.SaeUserInfo

說明 使用方法
Access Key SaeUserInfo.getAccessKey()
Secret Key SaeUserInfo.getSecretKey()
SAE二級域名字首 SaeUserInfo.getAppName()
應用版本 SaeUserInfo.getAppVersion()
SAE臨時目錄路徑 SaeUserInfo.getSaeTmpPath()

Mysql 連線的一個bug: Unknown system variable ‘language’

筆者本地連線資料庫,增刪改查都測試成功了,但是上傳到新浪雲後卻連線資料庫不成功。

報的異常資訊如下:

java.sql.SQLException: Unknown system variable 'language'
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)

mysql-connector-java是mysql的官方驅動,它是java通過JDBC連線操作mysql的驅動。

後來搜尋發現,本地的 Mysql 版本是 5.1.。依賴的 Jar 包是 mysql-connector-java-5.1.38.jar,而新浪雲的 mysql 版本是5.0.,連線報上面的錯誤。

解決方法:換 jar 包,筆者把 jar 包換成了 mysql-connector-java-5.0.8-bin.jar

新浪雲集成七牛的一個坑

筆者在本地嘗試七牛上傳圖片是成功的,但是部署到新浪雲後上傳七牛卻不成功。檢視異常棧軌跡資訊是:

java.lang.UnsupportedClassVersionError: com/squareup/okhttp/RequestBody : Unsupported major.minor version 51.0  yq31.javaruntime 

在檢視版本 51.0 是對應的 Java7。才發現,筆者本地是 Java 7,七牛也是 Java 7,但是筆者新浪雲的應用是 Java 6。

解決方法就是把新浪雲的應用改成 Java 7,但是筆者沒有找到修改 Java 版本的地方,所以就新建了一個Java 7的應用。

//stanford parser和jdk版本對應關係

J2SE 8 = 52,
J2SE 7 = 51,
J2SE 6.0 = 50,
J2SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45

相關推薦

+實現 Mysql + Servlet + Jsp 使用記錄

前言 筆者最近遇到的專案,後端是用 Java Servlet + Jsp + Mysql 實現的,後端中使用的圖片託管在七牛雲CDN,整個 Java Web 應用是託管在新浪雲上的。這兒坐下專案記錄,便於自己和其他開發者查閱,如有問題歡迎留言。 新浪雲註

在ThinkPHP5框架下引入Ueditor並實現物件儲存上傳圖片同時將圖片資訊儲存到MySQL資料庫,同時實現lazyload懶載入

這是我花了很多天的時間才得以真正實現的一組需求。 文章後面有完整Demo的GitHub連結。 一、 需求描述 1. 應用是基於ThinkPHP5開發的; 2. 伺服器環境是LNMP,PHP版本是7.2,資料庫是MySQL5.6; 3. 由使用者(包括管理員)上傳的圖片一類的媒體檔案不能直接上傳到應用

Ueditor結合存儲上傳圖片、附件和圖片在線管理的實現和最新更新

1.4 star json serve 列出文件 教程 開發 存儲服務器 name 最新下載地址: https://github.com/widuu/qiniu_ueditor_1.4.3 Ueditor七牛雲存儲版本 註意事項 老版本請查看 : https://gith

C#實現存儲

網站 根據 lln edit edi except 分享 img 存儲 雲存儲,就是把本地的資源文件存放至網絡上,可以公網訪問。相當於網盤功能,感覺非常方便。 這裏介紹的是七牛雲存儲。有興趣的可以去官方網站詳看 根據官網的介紹,本身是提供SDK的,下載地址,大家可以根據

Tp3如何實現本地視頻文件上傳到

orm slist 4類 .net 指定 命名 lis xxxxxxxx ESS 對於七牛雲的使用,估計有些剛接觸開發的技術人員還不太清楚,那麽更不要說如何實現本地視頻上傳到七牛雲轉儲了,其實這個技術並沒有想象中的那麽困難,下面就來跟大家詳細介紹一下流程:   1、首先我們

實現表單上傳

表單上傳適用於檔案內容可以在一次 HTTP 請求即可傳遞完成的場景。該功能非常適合在瀏覽器中使用 HTML 表單上傳資源,或者在不需要處理複雜情況的客戶端開發中使用。如果檔案較大(大於 1GB),或者網路環境較差,可能會導致 HTTP 連線超時而上傳失敗。若發生這種情況,您需要考慮換用更安全的分片上

Hbuilder開發app實戰-識歲04-上傳檔案的js實現

七牛雲上傳 七牛雲的上傳支援很多種語言,我用過的有java和js,個人感覺都比較方便, 當然java要比js方便一點吧,由於是app中要上傳到七牛雲,所以不可能使用java, 就看拉看七牛雲的js上傳,詳見這裡:http://developer.qiniu.com/docs/v6/api/o

:使用的銳智轉碼功能,簡單實現播放內容自適應進行轉碼

文章目錄 前言 程式碼 結果 前言 銳智轉碼無需使用者指定輸出視訊的位元速率幀率等,而是由銳智轉碼依據源視訊場景內容智慧匹配最佳轉碼引數組合。 這個可以解決很大一部分的點播視訊 注:銳智轉碼目前僅支援視訊轉碼和視訊音訊同時轉碼,其

如何利用PHP實現上傳圖片及視訊到

七牛是一家怎樣的公司? 七牛雲(隸屬於上海七牛資訊科技有限公司)是國內領先的以視覺智慧和資料智慧為核心的企業級雲端計算服務商,同時也是國內最有特色的智慧視訊雲服務商,累計為 70 多萬家企業提供服務,覆蓋了國內80%網民。圍繞富媒體場景推出了物件儲存、融合 CDN 加速、容

springboot實現儲存檔案(圖片)到

1、建立QiniuConstant.java package com.zhonghao.pinfang.core.util.qiniu; import org.springframework.boot.context.properties.ConfigurationProperties; i

Angular 4/5 實現上傳

利用Angular的元件式開發,將附件上傳功能做成獨立的一個模組,在其他功能中可以共用這個元件。 本示例只實現單檔案上傳功能。 hmtl程式碼 <div class="col-sm-12 uploadBody"> <div class="uploadH

在 Laravel 5 中集成存儲實現存儲功能

abc example 官方 中新 ice str laravel hot 分段 本擴展包基於https://github.com/qiniu/php-sdk開發,是七牛雲儲存 Laravel 5 Storage版,通過本擴展包可以在Laravel 5中集成七牛雲存儲功能。

物件儲存客戶端直傳前後端實現 【spring cloud + vue】

兩種檔案上傳的方式 服務端傳輸 客戶端直傳 兩種傳輸方式比較 服務端傳輸,所有客戶端的上傳請求需傳送至業務伺服器,再由業務伺服器轉發至檔案伺服器,上傳結果的返回同樣需要業務伺服器的轉發,這樣的操作保證了傳輸的安全,但卻大大提升了業務

使用JS-SDK實現檔案上傳

1、新增js檔案<script type="text/javascript" src="/resources/js/jquery/jquery-1.7.min.js"></script> <script type="text/javascript

流暢度提高 100%! QUIC 推流方案如何實現直播 0 卡頓?

不做任何開發,弱網環境下實現直播零卡頓,聽上去是不是天方夜譚?看完這篇文章你就知道,七牛直播雲是如何做到的。 內容目錄直播痛點-卡頓 QUIC 是什麼?為什麼可以減少卡頓? 實測在弱網環境下 QUIC 推流效果 如何接入七牛雲 QUIC 解決方案? 直播痛

-python sdk 下載完整實現

目標: 熟悉七牛python sdk 的使用 呼叫七牛的domain/list 介面獲取空間繫結的域名列表 通過七牛python sdk 實現下載 概述: 七牛提供了python sdk, 可以進行上傳、下載等功能; 本文主要是將一些知識點連線起來

檔案儲存的使用【劉宇】

七牛雲端儲存 需求 使用者頭像、文章圖片等資料需要使用檔案儲存系統來儲存 方案 自己搭建檔案系統服務 選用第三方物件儲存服務 我們在頭條專案中使用七牛雲物件儲存服務 http://www.qiniu.com。 使用 註冊 新建儲存空間 使用七牛SDK完成程式碼實現

基於物件儲存,搭建一個自己專屬的極簡Web圖床應用(手摸手的註釋講解核心部分的實現原理)

一個極簡的Web圖床應用,支援複製貼上與拖拽上傳圖片 1.開發緣由 日常使用Vs Code編寫markdown筆記與部落格文章時,在文章中插入圖片時發現非常不便 使用本地檔案編寫相對路徑---沒法直接複製貼上到其它地方 使用第三方的圖床---需要登入賬號(還是放到自己"口袋"裡放心) vs code內建外掛

小程序對接存儲

use blob 定義 上傳視頻 ear 綁定 空間名字 通過 優先 前言: 做小程序有一段時間了,總結一下做過的技術點,特此貢獻給小夥伴們!項目中,有圖片存儲、視頻存儲、錄音存儲這三個需要雲對接存儲。 一、圖片/視頻/錄音上傳七牛對接 準備工作: a、你要有一個七

第一個go的web程序;調用存儲的音頻api問題解決;條件搜尋文件中的內容,字符串拼接+在上一行

業務 方式 blog efi 命令 elf wid must qiniu package main import ( "html/template" "io" "io/ioutil" &q