如果您想了解创建HTML:PHP服务器端与jQuery客户端和html搭建服务器的知识,那么本篇文章将是您的不二之选。我们将深入剖析创建HTML:PHP服务器端与jQuery客户端的各个方面,并为您解
如果您想了解创建HTML:PHP服务器端与jQuery客户端和html搭建服务器的知识,那么本篇文章将是您的不二之选。我们将深入剖析创建HTML:PHP服务器端与jQuery客户端的各个方面,并为您解答html搭建服务器的疑在这篇文章中,我们将为您介绍创建HTML:PHP服务器端与jQuery客户端的相关知识,同时也会详细的解释html搭建服务器的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- 创建HTML:PHP服务器端与jQuery客户端(html搭建服务器)
- Android 客户端与PHP服务器的简单交互&&登录注册实例
- android 客户端支付宝 php服务器端编写
- android 客户端支付宝 php服务器端编写_PHP教程
- Android客户端与java服务器端的Socket连接
创建HTML:PHP服务器端与jQuery客户端(html搭建服务器)
这是一个设计问题。我有需要进入HTML表的数据,稍后将由用户操纵。基本上,用户将能够选择表格行中的项目。
我有两个选择-在两种情况下,我都使用AJAX来获取数据:
在服务器端使用PHP创建HTML代码,并将其作为HTML发送到客户端。然后,用户使用Javascript(本质上是jQuery)来操纵表格。
使用JSON将原始数据发送到客户端,然后使用jQuery创建HTML,然后由用户对其进行操作。
从设计/易于编码/美观的角度来看,推荐哪种方法?感谢您的任何见解。
答案1
小编典典为什么要在PHP中生成HTML:
- JavaScript应该定义行为,而不是内容。
- 用JavaScript创建需要更多标记(多行字符串不像PHP中那样容易)。
- 如果您的HTML是在多个位置(PHP和JS)生成的,则很难维护。
- 您可以使用jQuery的DOM操作函数来创建HTML,但从长远来看,您会陷入困境。
- 在服务器上创建HTML的速度比在浏览器上创建HTML的速度要快(在计算意义上)。
- 使用PHP循环更容易-生成表标记很容易。
- 如果在页面加载时输出标记,则用户禁用了JavaScript,则可以保留某种可操作性。
为什么要在jQuery中生成HTML:
- 您会节省一些带宽。
- 绑定事件可能更简单。
因此,我赞成第一种选择,即在PHP中生成HTML。
视觉比较这两种方法,创建一个简单的表。
选项1,使用PHP:
// PHP$html = ''<table>''; foreach($data as $row) { $html .= ''<tr>''; $html .= ''<td><a href="#">Click!</a></td>''; $html .= ''<td>''.$row[''id''].''</td>''; $html .= ''<td>''.$row[''name''].''</td>''; $html .= ''</tr>'';}$html .= ''</table>''; echo $html;?>// jQuery$(''#container'').load(''handler.php'', function() { $(''#container a.button'').click(function() { // Do something });});
选项2,使用jQuery:
// PHPecho json_encode($data);// jQuery$.ajax({ url: ''handler.php'', dataType: ''json'', success: function(data) { var table = $(''<table />''); var len = data.length; for(var i = 0; i < len; i++) { var row = $(''<tr />''); var a = $(''<a />'').attr(''href'', ''#'').addClass(''button''); row.append($(''<td />'').append(a)); row.append($(''<td />'').html(data[i].id); row.append($(''<td />'').html(data[i].name); table.append(row); } table.find(''.button'').click(function() { // Do something }); $(''#container'').html(table); }});
从设计/易于编码/美观的角度来看,我肯定会说采用PHP方法。
Android 客户端与PHP服务器的简单交互&&登录注册实例
服务器采用本地的apache服务器,所有的php文件都写在D:\AppServ\www目录下。。之前也一直在写请求的代码,一直没有成功,原因是请求的url有问题。。请求的url一定要跟自己服务器的端口号一致。如何改变端口号,参看 :http://jingyan.baidu.com/article/a65957f4fe8ec424e67f9bff.html
设置好自己的端口号之后,还需要注意一下请求的url格式:
该php文件在本地保存的地址是这样的 :D:\AppServ\www\get_data.json
在android客户端 中:url-------------- "http://10.0.2.2:8080/get_data.json"
在网页 :HTTP http://127.0.0.1:8080/get_data.json/
这里一定要弄正确。。然后启动apache
一,客户端准备
需要加入网络权限,由于网络请求时耗时操作,所以把请求的内容都写在了一个继承与thread的子类中。
1.MainActivity.java
package com.example.log_user;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.os.Build;
public class MainActivity extends ActionBarActivity {
EditText user_name;
EditText pass_word;
Button login;
Button zhuce;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
user_name=(EditText) findViewById(R.id.editText1);
pass_word=(EditText) findViewById(R.id.editText2);
login=(Button) findViewById(R.id.button1);
zhuce=(Button) findViewById(R.id.button2);
login.setOnClickListener(new OnClickListener(){
String url="http://10.0.2.2:8080/config.inc.php";
@Override
public void onClick(View arg0) {
String user=user_name.getText().toString();
String pass=pass_word.getText().toString();
// TODO Auto-generated method stub
new LoginThread(user,pass,url).start();
Log.d("MAIN","-------------------->MAINSUCCESS");
}
});
zhuce.setOnClickListener(new OnClickListener(){
String url="http://10.0.2.2:8080/test_signup.php";
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String user=user_name.getText().toString();
String pass=pass_word.getText().toString();
new signup(user,pass,url).start();
Log.d("Main","------------------->signupsuccess");
}
});
}
}
2.LoginThread.java登录
简单说一下这个类,之前也因为没有意识到需要新建子线程而犯了很多错误。继承于thread,把需要执行的操作放在run方法里。gotoLogin方法用来判断输入用户名和密码是否与服务器所连数据库里面的字段匹配。这里用了httpClient来处理post请求,需要将传递的数据放在这个数组里。
ArrayList<NameValuePair> params
在执行了post请求之后
HttpResponse respose=client.execute(post);
会返回一个httpresponse,将这个对象转为string之后其实就是请求的php url页面所echo 出来的字符串。
String content=EntityUtils.toString(respose.getEntity());
package com.example.log_user;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import android.content.res.Resources.Theme;
import android.util.Log;
import android.widget.Toast;
public class LoginThread extends Thread {
String username;
String password;
String Url;
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
Log.d("run","-------------------->MAINSUCCESS");
boolean isLoginSuccess=gotoLogin(username,password,Url);
if(isLoginSuccess){
Log.d("Log","--------------------->登录成功");
}
else
{
Log.d("Log","--------------------->登录失败");
}
}
public LoginThread(String user,String pass,String url){
this.username=user;
this.password=pass;
this.Url=url;
}
public boolean gotoLogin(String user,String pass,String url){
boolean issuccess=false;
String result;
//发送post请求
HttpClient client=new DefaultHttpClient();
HttpPost post = new HttpPost(url);
//Post运作传送变数必须用NameValuePair[]阵列储存
ArrayList<NameValuePair> params=new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("name",user));
params.add(new BasicNameValuePair("password",pass));
try {
post.setEntity(new UrlEncodedFormEntity(params));
try {
HttpResponse respose=client.execute(post);
if(respose.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
String content=EntityUtils.toString(respose.getEntity());
Log.d("post","--------------------->success");
Log.d("post",content+"");
if(content.equals("logsuccess")){
issuccess=true;
}
}
else
{
Log.d("post","--------------------->failes");
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return issuccess;
}
}
3.signup.java注册页面 :原理与登录类似
package com.example.log_user;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import android.util.Log;
public class signup extends Thread {
private String username;
private String password;
private String url;
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
boolean issuccess=doPOSThttp(username,password,url);
if(issuccess){
Log.d("sign","-------------->signsuccess");
}
else
{
Log.d("sign","-------------->signfailue");
}
}
public signup(String user,String password,String url){
this.username=user;
this.password=password;
this.url=url;
}
public boolean doPOSThttp(String username,String password,String url){
boolean issuccess=false;
HttpClient client=new DefaultHttpClient();
HttpPost post =new HttpPost(url);
ArrayList<NameValuePair> param=new ArrayList<NameValuePair>();
param.add(new BasicNameValuePair("name",username));
param.add(new BasicNameValuePair("password",password));
try {
post.setEntity(new UrlEncodedFormEntity(param));
try {
HttpResponse response=client.execute(post);
if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
String cont=EntityUtils.toString(response.getEntity());
Log.d("post","------------>"+cont);
if(cont.equals("signsuccess"))
{
issuccess=false;
}
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return issuccess;
}
}
二。服务器准备
1,config.inc.php 这个是与客户端的登录请求对应。通过$_POST方法取到传递的数据,在于数据库里面的数据匹配一下,匹配成功,则echo 一个标示字符串,用来使客户端用response取到该字符串进行判断。
<?
$db_host=localhost;
$db_user="root";
$db_pass="123456789";
$db_name="stu";
$table_name="student";
/* mysql_query(''set names utf8''); */
if($con=mysql_connect($db_host,$db_user,$db_pass))
{
}
else
{
echo "连接失败";
}
if(mysql_select_db(web_01))
{
}
else{
echo "选择数据库失败";
}
$username=$_POST[''name''];
$sql="select * from my_user where name=''$username''";
$query=mysql_query($sql);
if($row=mysql_fetch_array($query)){
if($_POST[''password'']==$row[''password''])
echo "logsuccess";
}
mysql_close($con);
?>
2.test_signup.php 这个与客户端的注册请求对应。
<?
$db_host=localhost;
$db_user="root";
$db_pass="123456789";
$db_name="stu";
$table_name="student";
/* mysql_query(''set names utf8''); */
if($con=mysql_connect($db_host,$db_user,$db_pass))
{
}
else
{
echo "连接失败";
}
if(mysql_select_db(web_01))
{
}
else{
echo "选择数据库失败";
}
$username=$_POST[''name''];
$pass=$_POST[''password''];
if(mysql_query(''insert into my_user(name,password) values($username,$pass)'')){
echo "signsuccess";
}
mysql_close($con);
?>
android 客户端支付宝 php服务器端编写
android 客户端支付宝 php服务器端编写_PHP教程
生成私钥
输入“genrsa -out rsa_private_key.pem 1024”命令,回车后,在当前 bin 文件目 录中会新增一个 rsa_private_key.pem 文件,其文件为原始的商户私钥(请妥善保 存该文件,PHP 开发语言中需要使用该文件),
生成公钥
输入“rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem”命令回车 后,在当前 bin 文件目录中会新增一个 rsa_public_key.pem 文件,其文件为原始 的商户公钥(请妥善保存该文件,PHP 开发语言中需要使用该文件)
立即学习“PHP免费学习笔记(深入)”;
生成Android用的pkcs8
输入命令“pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt”并回车
php服务器端需要刚才生成的rsa_private_key.pem和支付宝提供的demo中得alipay_public_key.pem
Android客户端与java服务器端的Socket连接
1.首先直接看服务器端代码:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; import java.io.LineNumberReader; public class Server extends Thread { private ServerSocket server = null; private static final int PORT = 6000; private BufferedWriter writer; private BufferedReader reader; private Server() throws IOException { // 创建Socket服务器 CreateSocket(); } public void run() { Socket client; String txt; try { // 线程无限循环,实时监听socket端口 while (true){ client = ResponseSocket(); // 响应客户端链接请求。。 while (true) { txt = ReceiveMsg(client); // 链接获得客户端发来的命令 System.out.println(txt); if (txt != null) { // 执行命令 txt = exceCommand(txt); } // 向客户端返回消息 SendMsg(client, txt); // 中断,关闭此次连接 break; } CloseSocket(client); } } catch (IOException e) { System.out.println(e); } } //创建一个ServerSocket实例,绑定到一个特定的端口。一个服务器端口最多可以支持50个链接,超出了则拒绝链接。 //所以,最多只能有50个客户端同时使用这个指定的端口向服务器发送消息 private void CreateSocket() throws IOException { server = new ServerSocket(PORT); System.out.println("Server starting.."); } /* ServerSocket:这个类是实现了一个服务器端的Socket,利用这个类可以监听来自网络的请求。 1、创建ServerSocket的方法: ServerSocket(Int localPort) ServerSocket(int localport,int queueLimit) ServerSocket(int localport,int queueLimit,InetAddress localAddr) 创建一个ServerSocket必须指定一个端口,以便客户端能够向该端口号发送连接请求。端口的有效范围是0-65535 2、ServerSocket操作 Socket accept() void close accept()方法为下一个传入的连接请求创建Socket实例,并将已成功连接的Socket实例返回给服务器套接字,如果没有连接请求, accept()方法将阻塞等待; close方法用于关闭套接字 */ private Socket ResponseSocket() throws IOException { Socket client = server.accept(); System.out.println("client connected.."); return client; } //关闭socket private void CloseSocket(Socket socket) throws IOException { reader.close(); writer.close(); socket.close(); System.out.println("client closed.."); } //向客户端发送消息 private void SendMsg(Socket socket, String Msg) throws IOException { writer = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream())); writer.write(Msg + "\n"); writer.flush(); } //接收来自客户端的消息。服务器通过server.accept();接收来自客户端的套接字,采用I/O方式 //将套接字的消息取出来 private String ReceiveMsg(Socket socket) throws IOException { reader = new BufferedReader(new InputStreamReader( socket.getInputStream())); System.out.println("server get input from client socket.."); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); return line; } return line; } //执行客户端发送来的命令。服务器将在本机执行客户端发送过来的消息(命令)。 //并返回执行命令后,服务器返回的结果。譬如,在linux下执行“ls”命令,返回的是当前目录 //下面的所有文件的名称 private String exceCommand(String command) { String msg = ""; try { //Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象的exec() //方法指示Java虚拟机创建一个子进程执行指定的可执行程序(命令),并返回与该子进程对应的Process对象实例。 //通过Process可以控制该子进程的执行或获取该子进程的信息 Process process = Runtime.getRuntime().exec(command); InputStreamReader ir = new InputStreamReader( process.getInputStream()); LineNumberReader input = new LineNumberReader(ir); String line; while ((line = input.readLine()) != null) { System.out.println(line); msg += line + "\n"; } } catch (java.io.IOException e) { System.err.println("IOException " + e.getMessage()); } return msg; } public static void main(final String args[]) throws IOException { Server commandServer = new Server(); if (commandServer != null) { // commandServer.stop(); commandServer.start(); } } }
2、Android客户端activity_main.xml代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/edittext" android:hint="请输入内容" /> <Button android:id="@+id/send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送" ></Button> </LinearLayout>
3、Android客户端Activity.java代码:
package com.example.socket2; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.InetSocketAddress; import java.net.Socket; import java.net.UnknownHostException; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.method.ScrollingMovementMethod; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { //服务器ip地址 public static final String DEFULT_PRES = "192.168.56.1"; public static final String PREFS_NAME = "PreferencesFile"; public static final int CONNENTED = 0; public static final int UPDATALOG = 1; private static final int PORT = 6000; private EditText command; private TextView log; private Button send; private String ip; private String logMsg; private Socket socket; private BufferedWriter writer; private InetSocketAddress isa = null; Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case CONNENTED: logMsg += "Server Connented\n"; log.setText(logMsg); break; case UPDATALOG: log.setText(logMsg); log.setScrollContainer(true); break; } } }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findviews(); init(); setonclick(); } public void findviews() { command = (EditText) this.findViewById(R.id.edittext); log = (TextView) this.findViewById(R.id.textview); send = (Button) this.findViewById(R.id.send); } private void init() { log.setMovementMethod(ScrollingMovementMethod.getInstance()); logMsg = log.getText().toString(); //创建一个socket实例 socket = new Socket(); ip ="192.168.56.1" ; } private void setonclick() { send.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { ip = "192.168.56.1"; //当点击发送按钮时,开启一个tcpClient线程,向服务器发送消息 tcpClient tcp = new tcpClient(command.getText().toString()); tcp.start(); } }); } class tcpClient extends Thread { String commandString; public tcpClient() { commandString = "ls"; } public tcpClient(String command) { commandString = command; } public void run() { String recv; try { Socket ConSocket = new Socket(); //创建套接字地址,其中 IP 地址为通配符地址,端口号为指定值。 //有效端口值介于 0 和 65535 之间。端口号 zero 允许系统在 bind 操作中挑选暂时的端口。 isa = new InetSocketAddress(ip, PORT); //建立一个远程链接 ConSocket.connect(isa); //socket.connect(isa); socket=ConSocket; if (socket.isConnected()) { Message msg = new Message(); msg.what = CONNENTED; mHandler.sendMessage(msg); } //向服务器发送命令 writer = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream())); Log.i("msg", commandString.replace("\n", "")+"\n"); writer.write(commandString.replace("\n", "")+"\n"); writer.flush(); //等待,接收来自服务器返回的消息 BufferedReader reader = new BufferedReader(new InputStreamReader( socket.getInputStream())); String line; String txt = ""; while ((line = reader.readLine()) != null) { txt += line + "\n"; } reader.close(); recv = txt; if (recv != null) { logMsg += recv; // close BufferedWriter and socket writer.close(); socket.close(); // 将服务器返回的消息显示出来 Message msg = new Message(); msg.what = UPDATALOG; mHandler.sendMessage(msg); } } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } }
4、在清单文件中增加两条授权:(重要)
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
关于创建HTML:PHP服务器端与jQuery客户端和html搭建服务器的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Android 客户端与PHP服务器的简单交互&&登录注册实例、android 客户端支付宝 php服务器端编写、android 客户端支付宝 php服务器端编写_PHP教程、Android客户端与java服务器端的Socket连接等相关知识的信息别忘了在本站进行查找喔。
本文标签: