云平台云计算大作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

云计算大作业

一、实验目的:

此次大作业实现了Web网页云平台的部署,数据库的写操作,以及微信公众号的建立以及关联;

2.通过实际的部署对云平台有实际深入的了解,体会云平台相对于传统平台的优势;

3.培养建立相对复杂系统的能力;

二、实验平台:

云平台使用的是新浪云,因为使用初期是免费的便于开发。

Web工程用MyEclipse 14建立,数据库采用云平台上的公共Mysql数据库,虽然安全性和稳定性*,但是免费。微信申请的公众号为订阅号。本实验网页采用jsp Web工程,微信接口采用php。

三、实验过程:

实验参考了大量的网上教程,期中一些为直接引用。

申请云平台:

/

创建新应用:

“控制台”—>“SAE”-->“创建新应用”;

依照提示创建新应用。由于本实验网页采用jsp Web工程,微信接口采用php。所以分别建立java 1.7 jvm的云平台和php应用,由于是轻应用,所以设置应如下图所示,否则免费额度一天就用光。如此配置一天要100左右。二级域名自定义,当然土豪可申请一级域名。

图3:Java 1.7 JVM的建立

图4:PHP空应用的建立

图5:控制台建立好的平台(域名显示)编辑和添加代码:

点击“管理应用”(就是网站的名字),进入管理界面,

点击左栏“应用”-->“代码管理”进入如下页面:

(之前可能要点击“创建版本”,记不清了)总之,只要看到这样的界面,就点击“编辑代码”,上传你已经编辑好的php的zip包(jvm是war包,具体导出步骤见下文)。

Eclipse导出war包:“file”→”export”→”选择一war形式导出”。

点击上传代码包,选择pHp代码上传。(java代码因为用带数据,所以开数据库之后才能知道接口修改代码,再上传。)

开启公共数据库:

点击左栏“数据库与缓存服务”,选择共享性数据库,

相关链接代码:

// 使用主库写数据使用SaeUserInfo提供的静态方法获取应用的AccessKey和SecretKey String URL="jdbc:mysql:// ";

String username=SaeUserInfo.getAccessKey();

String password=SaeUserInfo.getSecretKey();

String driver="com.mysql.jdbc.Driver";

Class.forName(driver).newInstance();

Connection con=DriverManager.getConnection(url,username,password);

// 使用从库读数据

String URL="jdbc:mysql:// ";

// 通过SaeUserInfo提供的静态方法获取应用的access_key和secret_key

String Username=SaeUserInfo.getAccessKey();

String Password=SaeUserInfo.getSecretKey();

String Driver="com.mysql.jdbc.Driver";

Class.forName(Driver).newInstance();

Connection con=DriverManager.getConnection(URL,Username,Password);

之后上传Java代码。

四、实验部分代码:

/*

罗网计划

*/

header('Content-type:text');

define("TOKEN", "weixin");

$wechatObj = new wechatCallbackapiTest();

if (!isset($_GET['echostr'])) {

$wechatObj->responseMsg();

}else{

$wechatObj->valid();

}

class wechatCallbackapiTest

{

//验证签名

public function valid()

{

$echoStr = $_GET["echostr"];

$signature = $_GET["signature"];

$timestamp = $_GET["timestamp"];

$nonce = $_GET["nonce"];

$token = TOKEN;

$tmpArr = array($token, $timestamp, $nonce);

sort($tmpArr, SORT_STRING);

$tmpStr = implode($tmpArr);

$tmpStr = sha1($tmpStr);

if($tmpStr == $signature){

echo $echoStr;

exit;

}

}

//响应消息

public function responseMsg()

{

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

if (!empty($postStr)){

$this->logger("R \r\n".$postStr);

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

$RX_TYPE = trim($postObj->MsgType);

//消息类型分离

switch ($RX_TYPE)

{

case "event":

$result = $this->receiveEvent($postObj);

break;

case "text":

$result = $this->receiveText($postObj);

break;

case "image":

$result = $this->receiveImage($postObj);

break;

case "location":

$result = $this->receiveLocation($postObj);

break;

case "voice":

$result = $this->receiveVoice($postObj);

break;

case "video":

case "shortvideo":

$result = $this->receiveVideo($postObj);

break;

case "link":

$result = $this->receiveLink($postObj);

相关文档
最新文档