- 浏览: 636087 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (314)
- 生活 (2)
- c# (37)
- 技术 (3)
- 400电话 (0)
- 400常见问题 (0)
- 400资费 (0)
- html (7)
- css (0)
- 数据库 (7)
- javascript (16)
- php (33)
- asp.net mvc2 (10)
- mysql (9)
- C# 3.0 LinQ (10)
- vs2005或vs2008 (4)
- flash and as3 (7)
- fms (1)
- dedeCMS (11)
- java (33)
- j2me (1)
- swing (1)
- c++ (1)
- jquery easyui (3)
- jquery (5)
- android (29)
- MongoDB (9)
- VtigerCRM (1)
- test (0)
- linux (30)
- nutch (2)
- SqlServer数据库 (2)
- 数据检索 (2)
- java抓取 (11)
- 乐天 (1)
- 淘宝 (1)
- Silverlight4.0 (6)
- sphinx实时索引 (5)
- ecshop (9)
- codeigniter(CI) (3)
- axure6 (1)
- 京东店铺装修教程 (2)
- xpath (1)
- joomla (2)
- bpm (1)
- Bootstrap (2)
- knockout (4)
- ecstore (4)
- css3 (1)
- 微信 (2)
- dede (0)
- soa_edi (1)
- odoo (0)
- web (1)
最新评论
-
骑着蜗牛超F1:
在ie6下报了个stack overflow at line ...
兼容ie6和ie7 的16进制码流在html中显示为图片代码(base64) -
冰之海洋:
好像少了一句代码吧? FloatingFunc.show(th ...
android 一直在最前面的浮动窗口效果 -
yanzhoupuzhang:
连接有问题!
iis7.0官方下载 IIS 7.0(微软Web服务器组件IIS 7.0) 官方(windows 2003,XP,2000) -
whatable:
唉,楼主你都没有搞清楚重量级和轻量级。。。。既然引用了SWT, ...
java swing 内置浏览器打开网页显示flash图表-swt Browser应用 -
yy_owen:
我晕啊,你链接的什么内容额,我要的iis,你链接个视频什么意思 ...
iis7.0官方下载 IIS 7.0(微软Web服务器组件IIS 7.0) 官方(windows 2003,XP,2000)
应用程序一个应用到 Java™ 代码中。
在您开始之前
关于本系列
Rational Application Developer、Zend Core for IBM、PHP 5 以及 DB2。您将应用 Java 和 PHP 5 分别编写部分代码。表现一个现有的股票经纪人公司,您将把一个 Facebook 接口添加到他们的在线投资组合管理系统之中。
关于本教程
程序开发环境、Zend Core For IBM 及其自带的 Apache 2 和 IBM DB2 Express-C 数据库、以及 IBM WebSphere Application Server。然后,您详细了解了 Facebook 的集成点 —— Facebook 所提供的将应用程序集成到社交网络中的机制,并且开始了某些骨干开发。您已经在 Facebook 上面创建并且配置了应用程序,为 Callback URL 创建了一个测试 index.php,然后设置了 DB2 数据库,创建了某些基础的数据表,并且将示例数据添加到数据表中。
使用进行集成的屏障之一,往往是不同的背景和看待世界的不同方式。这两种语言可以在同一个应用程序(以及同一支团队)中很好地共存,并且具有高度的抽象性和清晰的结构。
先决条件
无论具备何种程度的开发水平和经验,只要您希望应用 Java、PHP 或者将两者结合起来编写 Facebook 应用程序,那么本教程就是适合您的。本文适合于那些希望了解如何使用 Spring 架构建造 J2EE 应用程序,以及如何将一个面向对象的结构应用到他们的 PHP 应用程序中的 PHP 开发人员;本文还适合于那些希望开始使用 PHP,也许是有兴趣将 PHP 添加到一个现有的 Java 企业中的 Java 开发人员。
掌握 Facebook 应用程序开发,第 1 部分
在 PHP 旁边添加 Java
在第 1 部分中,您已经将应用程序的 PHP 那一边运行起来了。现在,您将创建 Java 这一边的内容 —— 使用流行的 Spring 架构,创建一个 Rational Rational Application Developer项目和 Web 应用程序。然后,您将编写 PHP 类,它使您能够将 PHP 上同样的 MVC 模式运用到 Java 中,并且使用 mod_rewrite 和 mod_proxy 创建一个从 Apache 到 IBM WebSphere 的反转代理,从而您可以使用同样的 Facebook Callback URL 用于 PHP 和 Java 服务器。然后,您将根据请求 URI 使用 .htaccess 文件将请求分派到 PHP 或 Java 中。在您的 Java 和 PHP 服务器之间的一个共同结构,将使得它们能够更容易地集成起来,并且使您(或者您的团队)能够为每一个 Facebook 应用程序应用更加适当的技术,而 proxy 和 .htaccess 的使用将解耦合前端和后端。
设置 Rational Rational Application Developer 项目
遵照下述步骤在 Rational Rational Application Developer中设置一个项目:
从开始菜单中,打开 Rational Rational Application Developer:Start > All Programs > IBM Software Development Platform > IBM Rational Application Developer > IBM Rational Application Developer。
创建一个新的 Java 项目(File > New > Project),选择 Dynamic Web Project 作为项目类型,WebSphere Application Server v6.1 作为目标运行时间。
请确保 Project Facets Dynamic Web Module、Java、JSTL 和 WebSphere Web Facets 都被选中。
为 facebook-stock-demo 设置上下文根目录,内容目录默认值为 WebContent,Java 源代码目录为 src。Rational Rational Application Developer随后将为您创建标准的 Web 应用程序项目。
合并 Spring 架构
将通用的 Spring 架构添加到应用程序之中。
下载 Spring 结构的版本。
将其解压到某个有用的位置,比如 c:\ (解压操作可能需要花费一定的时间),并且将 dist 文件夹中的 spring.jar 文件和 dist/modules 文件夹中的所有 JARs 文件拷贝到项目的 WEB-INF/lib 目录下。您可以通过 Project > Properties 找到您的项目的 WEB-INF/lib 目录。举例来说,我将它们拷贝到 C:\Documents and Settings\jmiles\IBM\rationalsdp7.0\workspace\facebook-stock-demo\WebContent\WEB-INF\lib 之中。
将 commons-logging.jar 添加到您的项目的类路径中,从 Spring 架构的
lib/jakarta-commons 目录下,通过 Project > Properties > Java Build Path
> Add External JARs (请参见图 1 中所示)。不要将这个 JAR 拷贝到您的 lib 目录下;否则将导致
WebSphere 部署期间的一个错误。
图 1. 将额外的 JARs 添加到 IBM Ration Rational Application Developer项目之中
刷新工作区(右键单击项目的名称,并且选择 Refresh),Project Explorer 视图将会更新所有被添加的 JARs。
配置 Spring
现在,您已经完成 Spring 的安装,并且您需要配置 Web 应用程序才能使用它。右键单击 Project Explorer 中的 web.xml (请参见图 2 中所示),并且选择 Open with > Text Editor。
图 2. 在 Rational Rational Application Developer中的文本编辑器中打开 web.xml
将内容替换为列表 1 中的内容。
列表 1. web.xml <?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>facebook-stock-demo</display-name>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/action/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
这将发送所有的请求,它们的 URI 以 facebook-stock-demo/action 开头,穿过 Spring 的 DispatcherServlet 入口点进入 Spring MVC 架构。
接下来,您需要一个 spring-servlet.xml 文件来配置 Spring beans。默认情况下,Spring 将 -servlet.xml 添加到 web.xml 中的 <servlet-name> 元素上,作为配置文件的名称,所以在 Project Explorer 视图中,在 WEB-INF 下创建一个新的文本文件,并且取名为 spring-servlet.xml。如果 Rational Rational Application Developer用一个 XML 编辑器将其打开的话,那么您就必须关闭该文件,然后右键单击它,从而在文本编辑器中将其打开。将列表 2 中的内容粘贴到 spring-servlet.xml 之中。
列表 2. 原始的 spring-servlet.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.JstlView</value>
</property>
<property name="prefix">
<value>/WEB-INF/jsp/</value>
</property>
</bean>
<bean id="urlMapping" class="org.springframework.web.servlet.
handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/stockList">
<ref bean="stockListController"/>
</entry>
</map>
</property>
</bean>
<bean id="stockListController"
class="com.jm.fbstockdemo.StockListController">
<property name="successView">
<value>stockList.jsp</value>
</property>
</bean>
</beans>
第一个 bean 指定了如何将视图名称映射到 URLs 上。每当控制器返回一个视图名称,视图解决器就会预先考虑 /WEB-INF/jsp/,举例来说,生产 /WEB-INF/jsp/stocks.jsp 来响应视图名称 stocks.jsp。第二个 bean 将 URLs 映射到 Spring 控制器,在这种情况下映射一个 /stockList 到控制器 bean 中,并且带有标识符 stockListController,而它正是定义在文件中的第三个 bean。stockListController bean 定义注入一个 successView 属性到 StockListController 对象中,从而保持 Java 代码外部视图的名称。
添加一个 Spring 控制器类和视图
要添加一个 Spring 控制器类和视图,请完成以下这些操作:
在 src 目录下,右键单击 Java Resources: src 创建一个包,并且选择 New > Package。我将我的称作 com.jm.fbstockdemo。
右键单击新创建的包,并且创建一个 StockPriceController 类,用来执行 org.springframework.web.servlet.mvc.Controller。您可以在点击 Add 后输入 Controller,则 Rational Rational Application Developer将列出一组与之匹配的选项。
填充基本的执行,返回一个视图名称(请参见列表 3 中所示)。
列表 3. 一个原始类 StockListController (Java) public class StockListController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
return new ModelAndView (getSuccessView());
}
}
接下来,右键单击 WEB-INF 并创建一个 jsp 目录。
在 jsp 目录下创建原始的 stockList.jsp,其中包含列表 4 中所示的 xml。
列表 4. 一个原始的 stockList.jsp <%@ page contentType="text/xml" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<stockList>
<stock>
<id>1</id>
<ticker>JAKE</ticker>
<price>3000</ticker>
</stock>
</stockList>
部署到 WebSphere Application Server
现在,您可以将 Java Spring 应用程序部署到 WebSphere Application Server 中了。
右键单击 Rational Rational Application Developer中的项目,创建 WAR 文件,并且选择 Export > WAR file。
在 Save As 窗口中,浏览到项目目录下(如前所示),并且创建一个名为 dist 的新文件夹。举例来说,我将我的 WAR 文件保存为 c:\Documents and Settings\jmiles\IBM\rationalsdp7.0\workspace\facebook-stock-demo\dist \facebook-stock-demo.war。
点击 Finish。Rational Rational Application Developer 将把应用程序包装到 facebook-stock-demo.war 之中。
图 3. 从 Windows 开始菜单中启动 WebSphere Application Server
登录进入 admin 控制台,打开 Applications 标签并且选择 Install New Application。
选择 Local file system,浏览到您的 WAR 文件,并且将其选中。
指定 /facebook-stock-demo 作为上下文的根目录,并且点击 Next。在 Select 安装选项窗口中,保持所有默认的设置并且点击 Next。
在 "Map modules to servers" 屏幕上,选择您所要添加到 server1 中的 Web 应用程序。
在总结屏幕上,点击 Finish。于是 WebSphere 将会安装该 Web 应用程序。请确保在安装过程结束之后,点击输出屏幕底部的 Save。
点击左侧的 Enterprise Applications,您将看到您的应用程序出现在已被安装的应用程序列表中。将其选中并且点击 Start 启动。
为了确认您的应用程序所运行的端口是哪一个,请打开左侧的 Servers 小节,点击 Application servers,选择
server1,并且在 Communications 小节中点击 Ports (请参见图 4 中所示)。WC_defaulthost
指定访问您的 Web 应用程序的端口号。在我的安装中,该端口号是 9083;将您的 WC_defaulthost 替换为图 4 中所示的内容。
图 4. 在 WebSphere Application Server 中找到您的服务器的 HTTP 端口。
最后,确认一切正常,打开另一个浏览器窗口,输入 http://localhost:9083/facebook-stock-demo/action/stockList,您将会看到 stockList.jsp 的 xml。
Spring MVC Web 应用程序现在已经被安装和工作在 IBM WebSphere 下面了,并且为开发您的 Facebook 应用程序代码提供了一个 标准的 MVC 结构。
构造一个 PHP 应用程序类似于构造一个 Java Spring 应用程序
Java Web 应用程序和 Spring 的 DispatcherServlet 结构为应用程序的 PHP 部分提供了一个极好的模型。与将这样出色的面向对象抽象抛出窗口所不同的是,您将快速地获得有助于模拟 Spring 的属性注入和 MVC 分派功能的一组类。您将编写一个负责读取多个属性文件的 Properties 类,一个使您从那些文件中向类实例注入属性的 Injectable 类,以及一个根据请求变化将其分派到正确的控制器类的 ActionDispatcher 类。
对于编写 PHP 代码来说,任何文本编辑器都是可以的,但是 Zend Studio 无疑是最好的一个选择。
从多个属性文件中读取数值(http://www.my400800.cn )
要保持应用程序的持续性,您将使用一组属性文件和一个读取它们的类 Properties,正如列表 5 中所示的那样(将 Properties.php 放到 fb_stock_demo 下面的一个 lib 子目录中)。
列表 5. Properties.php<?php
class Properties {
private $props;
public function __construct ($propertiesFilePaths) {
$this->props = array();
foreach ($propertiesFilePaths as $path) {
$this->loadProperties($path);
}
}
private function loadProperties($propertiesFilePath) {
$lines = file($propertiesFilePath);
foreach ($lines as $line) {
$trimmed = trim($line);
if (strlen($trimmed) > 0 && strchr($trimmed, 0, 1) != "#") {
$split = split("=", trim($line));
$key = $split[0];
$value = $split[1];
$this->props[$key] = $value;
}
}
}
public function get($key) {
if (! isset($this->props[$key])) {
throw new Exception ("Properties: unknown key $key");
}
return $this->props[$key];
}
}
您为构造器提供一组属性的文件路径,构造器将他们逐个读入,并且集合到 loadProperties() 之中。采用一组属性的文件路径而不是一个属性的文件路径,使您可以分割那些依赖于环境的属性,例如:数据库连接值等。这样做使得您从一个环境向另一个环境 复制代码变得更加容易,并且不需要重写那些值;在复制期间,您并不需要复制特定环境的文件,或者设置那些不能被您重写的许可。举例来说,这个应用程序将使 用两个属性文件,它们分别是 app.properties 和 db.properties,其中 app.properties 包含诸如 Facebook API Key 和 Secret 这样的约束条件,而 db.properties 包含数据库登录信息。
使用 PHP 5 魔法方法提供类似 Spring 属性的注入
对于 PHP 5 魔法来说,为了提供一些更加类似 Spring 的东西,您可以从一个配置文件中将属性注入到一个对象之中。所有需要这样的注入属性的类,都需要继承 Injectable 基类(请参见列表 6 中所示)。
列表 6. Injectable 类 (PHP)
class Injectable {
protected $properties;
private $prefix;
public function Injectable($properties=null, $propPrefix=null) {
$this->prefix = $propPrefix == null ? get_class($this) . '/' : $propPrefix;
$this->setProperties ($properties);
}
public function setProperties($properties) {
$this->properties = $properties;
}
public function __get($property) {
return $this->getProperty($property);
}
public function getProperty($property) {
return $this->properties->get($this->prefix . $property);
}
}
发表评论
-
phpredis 安装
2015-12-16 16:47 578phpredis是个人觉得最好的一个php-redis客户端, ... -
Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析
2015-08-26 10:04 686一、问题: 数据库表数据 ... -
Ubuntu14.04安装 php及mysql
2015-08-18 11:17 1068①安装php: sudo apt-get install ... -
PHP swfupload图片文件上传实例代码
2015-05-18 11:34 701swfupload是一个flash插件它可以结合php来快 ... -
php 如何开启com组件?
2013-05-08 13:04 2193先到PHP.INI中打开COM选项,com.allow_d ... -
教大家如何利用PHP去修改word的内容
2013-05-02 09:24 1912今天给大家带来一个教程,教大家如何利用PHP去修改wo ... -
20130324
2013-03-24 22:36 0203 -
PHP检测函数所在的文件名
2013-01-20 12:56 981很简单的功能,用到PHP中的反射机制,具体使用的是Refl ... -
php 下载文件,中文乱码问题
2012-11-24 16:07 1251通过把Content-Type设置为application/o ... -
CKEditor图片上传功能开启方法
2012-03-15 17:12 1771PHP怎么给ckeditor编辑器加上传图片的功能? A ... -
不错的威盾PHP加密专家解密算法
2012-02-21 16:29 1198<?php <?php /********* ... -
在php中使用CKEDITOR在线编辑器
2012-01-30 16:55 2967一、官方Download 1、CKEditor ... -
c#连接mysql中文乱码解决方案(MySql.Data.dll)
2012-01-11 10:22 4627今天用C#类连接mysql数据库出现中文乱码具体解决方案如下: ... -
windows nginx php配置
2011-12-27 14:40 1513传说中nginx要比apache的负载均衡好的多,堪称神器 ... -
开源VtigerCRM的安装
2011-10-14 15:14 3528SugarCRM是一个好东西,04年刚刚发布 ... -
MongoDB的group分组操作
2011-09-15 15:11 2080先插入测试数据: for(var i=1; i<20; ... -
用php实现mongoDB的基本操作
2011-09-15 15:07 1304说到php连mongoDB,不得不先介绍一下php的官方手 ... -
用 nuSOAP解决传递对象数组的问题
2011-08-25 15:48 1513准备工作 首先定义一个类UserInfo:class ... -
PHP SOAP服务器端 C#客户端
2011-08-24 17:22 1332最近写了个PHP的SOAP服务器 端,实现了PHP客户端的调 ... -
php如何将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串!
2011-08-17 16:59 1980php如何将图片gif,jpg或mysql longblob或 ...
相关推荐
`index.php`是项目的主要入口文件,通常包含了SDK的实例化、Facebook应用程序的配置,以及调用API的核心代码。在这个例子中,`index.php`可能会演示如何创建Facebook的OAuth登录流程,获取访问令牌,以及如何使用...
通过结合两者,我们可以轻松地在 Laravel 应用程序中实现各种 Facebook 功能,如登录授权、发布动态、获取用户信息等。 首先,要开始使用 Facebook SDK,你需要在 Laravel 项目中安装相应的包。你可以利用 Composer...
综上所述,《构建Facebook应用:傻瓜教程》提供了全面而详尽的指南,帮助开发者掌握构建Facebook应用程序所需的知识和技能。无论你是刚入门的新手还是经验丰富的开发者,这本书都能为你提供有价值的指导。
- 解释了 API(应用程序接口)的概念及其实现方式。 - 讨论了 API 如何帮助开发者更高效地与 Facebook 平台交互。 #### 二、准备阶段:构建 Facebook 应用前的准备工作(第二章) 本章重点在于帮助开发者做好...
《PHP Web 2.0开发实战》是一本深入探讨如何使用PHP技术构建Web 2.0应用程序的专业书籍。Web 2.0是互联网发展的一个重要阶段,它强调用户参与、互动性和数据共享,典型特征包括博客、社交网络、富互联网应用(RIA)...
本书《Learning Facebook Application Development》旨在为读者提供一个全面而深入的学习框架,帮助他们快速掌握如何利用PHP语言开发Facebook应用。 #### 二、Facebook应用的重要性及特点 ##### 1. 社交网络的力量...
PHP FexBook v1.0 Beta 是一个基于PHP编程语言开发的应用程序实例,它可能是类似于Facebook的一个社交网络平台的早期版本。这个源码提供了深入理解PHP在构建大型Web应用时如何处理用户交互、数据存储、页面渲染等...
PHP(Hypertext Preprocessor)是一种广泛应用于Web开发的开源脚本语言,它嵌入到HTML中,使得服务器端能够处理动态网页内容。...通过深入学习和实践,你可以掌握PHP编程语言,从而高效地开发出功能丰富的Web应用程序。
随着时间的发展,PHP演变成一个功能强大的Web开发工具,被全球无数网站所采用,包括Facebook、WordPress和Wikipedia等知名平台。它支持多种数据库系统,如MySQL、PostgreSQL等,且兼容各类操作系统,如Windows、...
#### 六、应用程序开发 除了Web应用之外,PHP还可以用于开发各种类型的应用程序,涵盖企业级应用、移动应用甚至是桌面软件。由于PHP具有良好的跨平台兼容性和丰富的第三方库支持,开发者能够利用它来快速构建出功能...
在PHP开发过程中,确保应用程序的性能和稳定性至关重要。然而,传统的错误日志和简单的调试方法往往不足以应对复杂的性能问题和难以捉摸的Bug。这就是PHP非侵入式监控平台的作用,它能帮助开发者深入理解代码运行...
《CREATEAFACEBOOKAPPLICATIONWITHPHP》这篇文章指导开发者如何使用PHP构建Facebook应用程序。主要内容包括: 1. **注册Facebook应用程序**:介绍如何在Facebook Developer Portal中注册新的应用程序,并获取应用...
对于已经使用PHP开发了大量Web应用程序的企业来说,利用PHP进行人工智能和大数据的开发可以有效降低技术栈的复杂度,提高开发效率。这种跨领域的尝试不仅展示了PHP语言的多功能性,也为开发者提供了更多创新的机会。...
总结起来,PHP作为一款强大的Web开发语言,结合XAMPP这样的集成开发环境,可以极大地简化本地开发流程,帮助开发者快速构建和测试PHP应用程序。通过学习PHP和掌握XAMPP的使用,开发者能够更好地适应Web开发的需求,...
这一章可能会介绍如何使用PHP来构建具有这些特性的应用程序。 2. **PHP基础**:PHP是一种服务器端脚本语言,广泛用于网页开发。学习者会了解到PHP的基本语法、变量、常量、数据类型、流程控制以及函数的使用。 3. ...
Facebook/MySpace 应用程序开发(Facebook/MySpace Applications) 随着社交网络的发展,开发针对 Facebook 和 MySpace 等平台的应用程序成为了一种趋势。这些应用程序不仅可以提升用户体验,还可以为企业带来新的...