1、下载Eclipse3.7,登录http://www.eclipse.org/downloads/,下载Eclipse Classic 3.7: 2、安装ADT插件:下载好Eclipse后解压,运行Eclipse,第一次运行会提示设置workspace;在菜单栏选择Help—Install New Software,在Work with栏输入http://dl-ssl.google.com/android/eclipse/并回车,稍后显示如下图: 选择Select All按钮,单击Next——Next,选中“I Accept (此处略去若干字)”,再单击Finish,开始安装插件: 安装期间会提示“Warning(此处略去若干字)”,选择OK。安装完成后选择Restart,重启Eclispe。 此时选择Window,会出现如下选项: 并且Preference窗口中会出现Android选项,说明ADT插件安装成功。 3、安装Android SDK:登录http://developer.android.com/sdk/index.html,下载android-sdk_r12-windows.zip: 得到的是一个压缩包,解压到D盘根目录下。这里请注意,解压之后的SDK Manager.exe文件的绝对地址不要带有空格,否则后面启动模拟器的时候会有如下报错: invalid command-line parameter: Files\android-sdk-windows\tools/emulator-arm.exe.Hint: use '@foo' to launch a virtual device named 'foo'.please use -help for more information 这里文件的绝地地址是D:\android-sdk-windows\SDK Manager.exe。 4、运行D:\android-sdk-windows\SDK Manager.exe,会自动检查更新。我们下载的android-sdk_r12-windows.zip仅仅是冰山一角,我们还要下载安装整个冰山。 在上图中,你可以直接选择Install或者选择Accept All之后再选择Install。我是全选的,接下来的安装过程持续了几个小时,一定要淡定。 5、安装完毕后,关闭SDK Manager.exe。运行Eclipse,选择Window——Preference——Android,在SDK Location选择D:\android-sdk-windows,单击Apply后在Target Name中选择Android 2.3.3,单击OK,以关闭Preference对话框。 6、创建Android模拟器:在Eclipse中选择Window——Android SDK and AVD Manager,在对话框的左边选中Virtual decices,单击右部的New按钮(你可能需要把对话框拉宽才能看见这个按钮),仿照下图填写参数: 单击Create AVD按钮,完成模拟器的创建。 7、在Android SDK and AVD Manager窗口选中Android2.3.3,单击Start,弹出对话框以设定参数。为了使模拟器大小适中,可以仿照下图填写参数: 设定参数后,单击Launch,启动模拟器: 上图显示的模拟器我进行了一些设置,如时区选择、语言选择。 至此,环境搭建完毕,可以进行开发了。 转自:http://my.oschina.net/plumsoft/blog/29283
View Details在IService1.cs定义服务契约 namespace WcfDemo{ // 注意: 如果更改此处的接口名称 "IService1",也必须更新 Web.config 中对 "IService1" 的引用。 [ServiceContract] // 服务合同 即提供服务的接口或类 public interface IService1 { [OperationContract] void AddTicket(int count); [OperationContract] int BuyTickets(int Num); [OperationContract] //服务契约 即提供服务的实现方法 int GetRemainingNum(); // 任务: 在此处添加服务操作 } // 使用下面示例中说明的数据约定将复合类型添加到服务操作。 [DataContract] //数据契约 public class Ticket { bool boolCount = true;//判断是否还有车票 int howmany = 10;//还有多少车票 [DataMember] public bool BoolCalue { get { return boolCount; } set { if (HowMany > 0) { boolCount = false; } else { boolCount = true; } } } [DataMember] public int HowMany { get { return howmany; } set { howmany = value; } } }} 在Service1.svc中实现契约服务
1 |
namespace WcfDemo { // 注意: 如果更改此处的类名“Service1”,也必须更新 Web.config 和关联的 .svc 文件中对“Service1”的引用。 public class Service1 : IService1 { Ticket T = new Ticket(); public void AddTicket(int count) { T.HowMany = T.HowMany + count; } public int GetRemainingNum() { return T.HowMany; } public int BuyTickets(int Num) { if (T.BoolCalue) { T.HowMany = T.HowMany - Num; return 1; } else { return 0; } } } } |
1 |
<wbr></wbr> |
1 |
<br />添加宿主程序用于监测服务<br />添加WinForm项目加入解决方案<br />界面如下图:<br /><img src="//www.qiandabao.com/upload/201008310021340361.jpg" real_src="//www.qiandabao.com/upload/201008310021340361.jpg" width="490" height="367" alt="WCF实例" title="WCF实例" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; border-image: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; " /><br /><br />界面上两个按钮:<br />启动服务按钮: 用于启动wcf服务<br />停止服务按钮: 用于停止wcf服务<br />Label: <wbr></wbr> <wbr></wbr> 用于显示服务相关信息<br />后台代码为:<br />应用命名空间 <wbr></wbr> using System.ServiceModel;<br />添加引用 wcf服务生成的dll文件<br /> |
1 |
public partial class Form1 : Form { public Form1() { InitializeComponent(); } ServiceHost host = null;//定义 ServiceHost private void button1_Click(object sender, EventArgs e) { host = new ServiceHost(typeof(WcfDemo.Service1));//WcfDemo.Service1 为引用的dll中的服务 host.Open();//启动服务 this.label1.Text = "服务已启动"; } private void button2_Click(object sender, EventArgs e) { if (host.State != CommunicationState.Closed)//判断服务是否关闭 { host.Close();//关闭服务 } this.label1.Text = "服务已关闭"; } } |
1 |
<br /><br />接下来配置app.config<br /> |
1 |
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services><!--添加服务--> <service name="WcfDemo.Service1" behaviorConfiguration="CalculatorServiceBehavio<wbr></wbr>r"> <!--name 必须与代码中的host实例初始化的服务一样 behaviorConfiguration 行为配置 --> <host> <baseAddresses> <!--添加调用服务地址--> <add baseAddress="http://localhost:8000/"/> </baseAddresses> </host> <!--添加契约接口 contract="WcfDemo.IService1" WcfDemo.IService1为契约接口 binding="wsHttpBinding" wsHttpBinding为通过Http调用--> <endpoint address="" binding="wsHttpBinding" contract="WcfDemo.IService1"></endpoint> </service> </services> <!--定义CalculatorServiceBehavio<wbr></wbr>r的行为--> <behaviors> <serviceBehaviors> <behavior name="CalculatorServiceBehavio<wbr></wbr>r"> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailIn<wbr></wbr>Faults="false"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration> |
1 |
<br /><br />在服务启动后可通过appConfig中baseAddress节点中的baseAddress地址查看Wcf服务<br /> |
1 |
<wbr></wbr> |
为项目添加服务引用地址输入服务主机appconfig中baseAddress地址点击前往(添加服务引用时一点是在服务启动状态下的)
1 |
public partial class Form2 : Form { public Form2() { InitializeComponent(); } ServiceReference1.Service1Client TClient = new WinFormsClient.ServiceReference1.Service1Client(); //声明客户端调用 private void button1_Click(object sender, EventArgs e) { int i = TClient.BuyTickets(2); //调用WCF中的方法 if (i == 1) { this.label1.Text = "购买成功"; } this.label1.Text += "剩余车票还有" + TClient.GetRemainingNum().ToString(); } private void button2_Click(object sender, EventArgs e) { this.label1.Text = ""; this.label1.Text = TClient.GetRemainingNum().ToString();//调用WCF中的方法 } } |
一、前言 Orion这个东西,小巧,但是功能却非常多,废话不讲,看它目前的支持就知道了: (1)Servlets/JSP (2)EJB (3)HTTP (注:说明不再需要Apache或者IIS等Web Server) 二、下载,安装下载地址为Orion Application Server官方站点:http://www.orionserver.com/,我下载的是Orion1.4版本。下载完,解压到一个目录,我这里用E:\Orion作为例子。三、配置 (1)根据Orion官方站点的安装说明,如果要支持JSP等技术的话,要将JDK的tools.jar复制到e:\orion目录下,tools.jar文件在你安装的JDK目录的lib子目录下。到现在,其实已经成功了缺省的配置了,如果你的80端口没有被占用,而且你也想用80作为端口的话,你到这里已经完成了,否则,请继续下面的配置。 (2)配置端口在E:\orion\config目录下有个default-web-site.xml文件,找到文件中下面行:将这行改为:注意,我这里使用的是8008端口。四、测试(1)启动Orion:在Orion目录下,command方式运行:java -jar orion.jar将出现Orion/x.x.x initialized,我这里版本是1.4所以显示:Orion/1.4.0 initialized到此,说明你已经成功了。(2)执行jsp文件在浏览器中输入:http://localhost:8008/出现:Orion Application Server 1.4.0 – Up and running,下面有JSP examples你可以试着运行。 十天学会JAVA之第二天Tomcat安装,JAVA/JSP学习系列之二(Tomcat安装) 一、前言 对于初学者来说,要执行JSP和Servlet,Tomcat是一个很不错的选择,。Tomcat是Apache组织的产品,sun公司对它的支持也相当不错。 二、下载,安装 下载地址为JAVA官方站点:jakarta.apache.org,国内也比较多。从这个地址可以下载:http://jakarta.apache.org/builds/tomcat/release/,我下载的是Tomcat32b4版本。 下载完,解压到一个目录,我这里用F:\tomcat32b4作为例子。三、配置 桌面上选择“我的电脑”(右键) 高级 环境变量 在“系统变量”—>“新建” 在变量名中输入:JAVA_HOME,变量值中输入:F:\JDK13然后确定; 在“系统变量”—>“新建” 在变量名中输入:TOMCAT_HOME,变量值中输入:F:\tomcat32b4然后确定;好了,配置完了,要重新启动计算机后,环境变量才能有效的。注意,对于Tomcat其他设置,如果没有必要,是可以不改的,我这里讲的都是最简单而可行的方法,如果对你的改动没有把握,还是建议不要改动。四、测试 (1)启动tomcat:在F:\tomcat32b4\bin下有一个:startup.bat,运行它,将出现一个Dos窗口。 (2)浏览 在浏览器中输入:http://localhost:8080/看看有什么效果(Tomcat默认端口为8080,在不冲突的前提下,你可以改动的),是不是可以看到一只可爱的小猫(其实,我个人认为,无论从颜色还是样子,更象一只老虎) (3)运行 在这个页面有JSP Examples和 Servlet Examples, 好了,自己测试运行它们吧。 (4)退出tomcat在F:\tomcat32b4\bin下有一个:shutdown.bat,运行它,将关闭Dos窗口(如果坚持直接关闭这个DOS窗口也是可以的,但是,既然有这个shutdown.bat,应该有它存在的理由)。
View Details一、前言 JDK(Java Development Kit )是一切java应用程序的基础,可以说,所有的java应用程序是构建在这个之上的。它是一组API,也可以说是一些java Class。目前已经正式发布的最新版本是JDK1.3。考虑到我对linux不熟悉,而且大多数都是在MS系统下,所以,在这里我用的是win2000。 二、下载,安装 下载地址为JAVA官方站点:java.sun.com,国内也到处都是。 Windows下,直接运行.exe文件,安装到一个目录,我这里用F:\jdk13作为例子。三、配置 桌面上选择“我的电脑”(右键) 高级 环境变量 在“系统变量”—>“新建” 在变量名中输入:CLASSPATH,变量值中输入:F:\JDK13\LIB\dt.JAR;F:\JDK13\LIB\TOOLS.JAR;F:\JDK13\BIN;然后确定;好了,配置完了,要重新启动计算机后,环境变量才能有效的。四、测试 (1)用文本编辑器写一个简单的java程序:public class HelloWorld {public static void main(String args[]) {System.out.println("Hello World!"); }}这个例子就是著名的“Hello World”,它的功能就是显示“Hello World”。注意:该文件名称必须为“HelloWorld.java”,大小写也区分。细心的朋友会注意到就是和public class后的名字一样的。 (2)编译:在dos命令提示符下执行:(注意大小写) javac HelloWorld.java 如果正常的话,将生成HelloWorld.class文件。 (3)运行:在dos命令提示符下执行:(注意大小写) java HelloWorld这里有一个java初学者很有可能遇到的问题(不怕笑话,我也是)就是输入:java HelloWorld.class多了后面的.class,一定要注意,否则会出现下面的错误:Exception in thread "main" java.lang.NoClassDefFoundError:HelloWorld/class(本人猜想,是不是java翻译“.”的时候换成了“/”,或者是其他的本人不知道的原因)好了,运行java HelloWorld应该会出现伟大的“Hello World”了。到这一步,你已经成功配置好了JDK,可以开始漫长而痛苦(对于象我一样的,以前不懂java的朋友来说,可以用“痛苦”来形容,不理解的概念,不熟悉的java api…,不过,不要急,我将和大家一起慢慢入门,慢慢提高… …)的Java过程了。 十天学会JAVA之第二天Tomcat安装,JAVA/JSP学习系列之二(Tomcat安装) 一、前言 对于初学者来说,要执行JSP和Servlet,Tomcat是一个很不错的选择,。Tomcat是Apache组织的产品,sun公司对它的支持也相当不错。 二、下载,安装 下载地址为JAVA官方站点:jakarta.apache.org,国内也比较多。从这个地址可以下载:http://jakarta.apache.org/builds/tomcat/release/,我下载的是Tomcat32b4版本。 下载完,解压到一个目录,我这里用F:\tomcat32b4作为例子。三、配置 桌面上选择“我的电脑”(右键) 高级 环境变量 在“系统变量”—>“新建” 在变量名中输入:JAVA_HOME,变量值中输入:F:\JDK13然后确定; 在“系统变量”—>“新建” 在变量名中输入:TOMCAT_HOME,变量值中输入:F:\tomcat32b4然后确定;好了,配置完了,要重新启动计算机后,环境变量才能有效的。注意,对于Tomcat其他设置,如果没有必要,是可以不改的,我这里讲的都是最简单而可行的方法,如果对你的改动没有把握,还是建议不要改动。四、测试 (1)启动tomcat:在F:\tomcat32b4\bin下有一个:startup.bat,运行它,将出现一个Dos窗口。 (2)浏览 在浏览器中输入:http://localhost:8080/看看有什么效果(Tomcat默认端口为8080,在不冲突的前提下,你可以改动的),是不是可以看到一只可爱的小猫(其实,我个人认为,无论从颜色还是样子,更象一只老虎) (3)运行 在这个页面有JSP Examples和 Servlet Examples, 好了,自己测试运行它们吧。 (4)退出tomcat在F:\tomcat32b4\bin下有一个:shutdown.bat,运行它,将关闭Dos窗口(如果坚持直接关闭这个DOS窗口也是可以的,但是,既然有这个shutdown.bat,应该有它存在的理由)。
View Details学习目的:学会用PHP上传文件和发邮件 上传文件表单必须加上 enctype="multipart/form-data" 和 <input type="file" name="file"> 下面看一下代码: $f=&$HTTP_POST_FILES['file']; $dest_dir=’uploads';//设定上传目录 $dest=$dest_dir.’/'.date("ymd")."_".$f['name'];//我这里设置文件名为日期加上文件名避免重复 $r=move_uploaded_file($f['tmp_name'],$dest); chmod($dest, 0755);//设定上传的文件的属性 上传的文件名为date("ymd")."_".$f['name'] ,可以在以后插入到数据库的时候用到,PHP实际上是把你上传的文件从临时目录移动到指定目录。move_uploaded_file($f['tmp_name'],$dest);这是关键 至于发邮件就更加简单,可以使用mail()函数 mail("收件人地址","主题","正文","From:发件人\r\nReply-to:发件人的地址"); 不过mail()需要服务器的支持,在WINDOWS下还需要配置SMTP服务器,一般来说外面的LINUX空间都行。 好像上传文件和发邮件比ASP简单很多,只要调用函数就可以了。ASP还需要用到服务器的不同组件比如FSO、JMAIL什么的。 十天学会PHP说到这里了,我的三大系列文章都用《十天学会》作为名字,想告诉大家的是ASP,PHP,ASP.NET入门都可以是十天,但是精通决不是十天啊,还需要大家自己去研究。
View Details学习目的:注意事项 因为我是先学ASP的,所以再做PHP的时候会发现很多地方需要适应。 1、注意不要漏了分号 2、注意不要漏了变量前的$ 3、使用SESSION的时候注意不要遗漏session_start(); 如果发生错误的时候,可以采用以下方法: 1、如果是SQL语句出错,就注释了然后输出SQL语句,注意也要注释调后续的执行SQL语句 2、如果是变量为空,大多是没有传递到位,输出变量检查一下,检查一下表单的id和name 3、如果是数据库连接出错,检查是否正确打开MY SQL和是否遗漏了连接语句 4、注意缩进,排除括号不区配的错误 在做大网站的时候,我的思路是先构建数据库,确定每一个字段的作用,和表之间的关系。然后设计后台界面,从添加数据开始做起,因为添加是否成功可以直接到数据库里面验证,做好了添加再做显示的页面,最后才是两者的结合。一般来说后台就包括添加删除修改和显示,后台没有问题了,前台也没有什么大问题。前台还需要注意安全性和容错还有就是输出格式。 好了,今天说到这里,明天说一下如果用PHP上传文件和发邮件。
View Details学习目的:做一个分页显示 关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num 对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。 $execc="select count(*) from tablename "; $resultc=mysql_query($execc); $rsc=mysql_fetch_array($resultc); $num=$rsc[0]; 这样可以得到记录总数 ceil($num/10))如果一页10记录的话,这个就是总的页数 所以可以这么写 if(empty($_GET['page'])) { $page=0; } else { $page=$_GET['page']; if($page<0)$page=0; if($page>=ceil($num/10))$page=ceil($num/10)-1;//因为page是从0开始的,所以要-1 } 这样$exec可以这么写 $exec="select * from tablename limit ".($page*10).",10"; //一页是10记录的 最后我们需要做的就是几个连接: <a href="xxx.php?page=0">FirstPage</a> <a href="xxx.php?page=<?=($page-1)?>">PrevPage</a> <a href="xxx.php?page=<?=($page+1)?>">NextPage</a> <a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a> 这是一个大致的思路,大家可以想想怎么来优化?今天说到这里,明天说一下一些注意的问题。
View Details学习目的:学会SESSION的使用 SESSION的作用很多,最多用的就是站点内页面间变量传递。在页面开始我们要session_start();开启SESSION; 然后就可以使用SESSION变量了,比如说要赋值就是:$_SESSION['item']="item1";要得到值就是$item1=$_SESSION['item'];,很简单吧。这里我们可能会使用到一些函数,比如说判断是不是某SESSION变量为空,可以这么写:empty($_SESSION['inum'])返回true or false。 下面综合一下前面所说的我们来看一个登陆程序,判断用户名密码是否正确。 登陆表单是这样:login.php <table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <form action="checklogin.php" method="post"><td align="center" valign="middle"><table width="400" border="0" cellpadding="5" cellspacing="1" class="tablebg"> <tr class="tdbg"> <td colspan="2"><div align="center">Administrators Login</div></td> </tr> <tr class="tdbg"> <td><div align="center">Username</div></td> <td><div align="center"> <input name="username" type="text" id="username"> </div></td> </tr> <tr class="tdbg"> <td><div align="center">Password</div></td> <td><div align="center"> <input name="password" type="password" id="password"> </div></td> </tr> <tr class="tdbg"> <td colspan="2"><div align="center"> <input type="submit" name="Submit" value="Submit"> <input type="reset" name="Submit2" value="Clear"> </div></td>
View Details学习目的:学会添加删除修改数据 mysql_query($exec); 单这个语句就可以执行所有的操作了,不同的就是$exec这个sql语句 添加:$exec="insert into tablename (item1,item2) values ('".$_POST['item1′]."',".$_POST['item1'].")"; 删除:$exec="delete from tablename where…"; 修改:$exec="update tablename set item1=’".$_POST['item1′]."' where …"; 说到这里就要说一下表单和php变量传递,如果表单中的一个 <input name="item1" type="text" id="item1"> 表单以POST提交的,那么处理表单文件就可以用$_POST['item1']得到变量值,同样以GET提交的就是$_GET['item1'] 是不是很简单?但是通常$exec会有问题,因为可能您的SQL语句会很长,您会遗漏.连接符,或者’来包围字符型字段。 我们可以注释mysql_query($exec);语句用echo $exec;代替来输出$exec以检查正确性。如果您还不能察觉$exec有什么错误的话,可以复制这个sql语句到phpmyadmin中执行,看看它的出错信息。还有需要注意的是,我们不要使用一些敏感的字符串作为字段名字,否则很可能会出现问题,比如说date什么的。变量的命名,字段的命名遵循一点规律有的时候对自己是一种好处,初学者并不可忽视其重要性。 今天就说到这里,大家可以DOWN一个SQL语句的参考手册,再研究研究。明天继续说SESSION。
View Details学习目的:学会读取数据 先看两个函数: 1、mysql_query 送出一个 query 字符串。 语法: int mysql_query(string query, int [link_identifier]); 返回值: 整数 本函数送出 query 字符串供 MySQL 做相关的处理或者执行。若没有指定 link_identifier 参数,则程序会自动寻找最近打开的 ID。当 query 查询字符串是 UPDATE、INSERT 及 DELETE 时,返回的可能是 true 或者 false;查询的字符串是 SELECT 则返回新的 ID 值,当返回 false 时,并不是执行成功但无返回值,而是查询的字符串有错误。 2、mysql_fetch_object 返回类资料。 语法: object mysql_fetch_object(int result, int [result_typ]); 返回值: 类 本函数用来将查询结果 result 拆到类变量中。若 result 没有资料,则返回 false 值。 看一个简单的例子: $exec="select * from user"; $result=mysql_query($exec); while($rs=mysql_fetch_object($result)) { echo "username:".$rs->username." "; } ?> 当然,表user中有一个username的字段,这就类似asp中的 当然先要连接数据库,一般我们 require_once('conn.php');而conn.php里面就是上一次说的连接数据库的代码。 小小的两条命令可以完成读取数据的工作了,今天说到这里下一次说数据的添加删除修改。
View Details