精华内容
下载资源
问答
  • Android服务器——TomCat服务器的搭建

    万次阅读 多人点赞 2016-01-24 22:58:00
    Android服务器——TomCat服务器的搭建 作为一个开发人员,当然是需要自己调试一些程序的,这个时候本地的服务器就十分方便了,一般都会使用TomCat或者IIS服务器,IIS就比较简单了,其实tomcat也是很简单的,接下来...

    Android服务器——TomCat服务器的搭建


    作为一个开发人员,当然是需要自己调试一些程序的,这个时候本地的服务器就十分方便了,一般都会使用TomCat或者IIS服务器,IIS就比较简单了,其实tomcat也是很简单的,接下来,我们就一起来搭建一下吧

    1.官网

    http://tomcat.apache.org/

    这里写图片描述

    2.下载

    这里写图片描述

    这里我们需要知道一点,tomcat的版本是根据你安装的JDK版本来的,所以我们打开cmd,输入java -version来查看自己的jdk版本

    这里写图片描述

    这里写图片描述

    这里我是8,所以tomcat也是下载8

    3.安装

    直接解压就可以了,这里建议解压在C盘

    4.配置TomCat环境变量

    还是根据JDK的环境变量的配置方法,我们新建一个CATALINA_HOME,填上你的路径

    这里写图片描述

    5.测试

    我们进入C:\apache-tomcat-8.0.30\bin目录下,打开startup.bat

    这里写图片描述

    然后在浏览器输入http://localhost:8080/,只要看到下图就说没配置成功了

    这里写图片描述

    这里的localhost代表的是本机的IP,你也自己自己输入本机的ip,只要在输入框输入ipconfig就可以

    这里写图片描述

    6.存放数据

    我们这个时候只要进入C:\apache-tomcat-8.0.30\webapps,然后新建一个自己的文件夹,就可以存放图片或者其他的数据了,然后通过tomcat读取出来,这里我们新建一个lgl的文件夹,然后从C:\apache-tomcat-8.0.30\webapps\ROOT目录下拷贝一个WEB-INF文件夹放在里面就算是配置好了,拿我们怎么使用呢?直接在lgl文件夹下放一张图片

    这里写图片描述

    然后在浏览器中输入地址http://localhost:8080/lgl/photo.png就可以了

    这里写图片描述

    好的,服务器搭建完了,我们是不是要拿他来做点事情呢?肯定要的,我们后面会讲到,暂时闲到这里咯,觉得好的点个赞哟!

    展开全文
  • Android服务器端开发

    千次阅读 2016-09-16 16:00:14
    Android服务器端开发 html/css:制作静态页面 servlet:动态页面 看界面与服务器之间有没有数据的交互 Web开发里面的模式 C/S:客服端/服务器端 优点:安全性高,客户端是可以分担服务器端的一些功能模块 ...

    Android服务器端开发

    1. html/css:制作静态页面
    2. servlet:动态页面
      看界面与服务器之间有没有数据的交互
    Web开发里面的模式

    C/S:客服端/服务器端
    优点:安全性高,客户端是可以分担服务器端的一些功能模块
    缺点:必须安装客服端,开发成本大,维护比较困难,不能无缝升级
    B/S:浏览器/服务器端
    优点:只要开发服务器端就可以了,可以实现无缝升级
    缺点:安全性低,所有的功能都是由服务器端去完成的(高强度的负载);
    O2O 线上和线下(去除了中介)
    P2P (点到点)

    互联网:虚拟的网络环境,将世界上所有的能上网的东西放在一个网络环境中,互相发送邮件,资源的共享。

    万维网:一种网络协议 www.baidu.com World Wide Web
    应用层:http https
    传输层:TCP/IP

    J2SE(核心基础JAVA) J2EE(企业级开发)

    CGI:公共网关接口 CGI每次都会启动一个进程来处理客户端发来的请求,效率比较低。CGI遵循HTTP协议,多语言开发:C,JAVA
    Servlet:API在J2EE。由SUN公司运营管理 Servlet每次都会启动一个轻量级的线程来处理客户端发来的请求,效率比较高
    简单概念:Servlet就是运行在服务器端的JAVA代码。有自己的一套API
    专业概念:Servlet他是一个组件(用很少的代码去完成一个功能模块)(server applet)

    服务器:就是一台主机,安装一些软件
    Tomcat:服务器端的容器

    • bin:可执行的文件
    • webapps:所有部署到服务器上的代码全都在这个文件夹里面

    三种方式写服务器端文件。

    1.实现Servlet接口,从写里面的回调方法
    2.外部想要访问Servlet,Servlet就必须注册并且向外界提供访问路径(Tomcat7.0之前的必须在WebContent目录下web.xml文件中配置,之后的可以直接利用注解@WebServlet("/hello"))

    1. 实现implements Servlet这个接口。必须重写里面的方法

       // 收到请求的时候回调
       @Override
       public void service(ServletRequest arg0, ServletResponse response)
           throws ServletException, IOException {
       // TODO Auto-generated method stub
       // Servlet线程不安全,如果你要让N个线程同时去操控一个共有的属性
       // SerVlet里面就不去写成员变量,都携程局部变量(每个线程有自己的变量名)
       // int i
       // i++;
       // 设置编码
       response.setCharacterEncoding("GBK");
       PrintWriter writer = arg1.getWriter();
       writer.write("这是我的第一个Serlvet");
       writer.flush();
       writer.close();
       System.out.println("service")
       }
    2. 在JAVAResource下面新建一个类继承extends GenericServlet在重写Service方法

        // TODO Auto-generated method stub
        response.setContentType("text/xml");
        response.setCharacterEncoding("GBk");
        PrintWriter writer = arg1.getWriter();
        writer.write("<student><name>张三</name></student>");
        writer.flush();
        writer.close();
    1. 第三种是官方建议的直接新建Servlet类似于直接新建一个Activity一样。它是继承于HttpServlet,我们只需在doGet或是doPost()方法中有一个调用对方就可以了。

       protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       // TODO Auto-generated method stub
       response.setCharacterEncoding("GBK");
       response.setContentType("text/html");
       PrintWriter writer = response.getWriter();
       writer.write("<html><img src='aa.png'></html>");
       writer.flush();
       writer.close();
        }

      这三种方式最基层就是实现Servlet接口,其次是继承GenericService。最后才是HttpServlet



    文/清枫_小天(简书作者)
    原文链接:http://www.jianshu.com/p/67ef863dc2af
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
    展开全文
  • 问题:什么叫Android服务器端?刚刚学Android 才学到fragment。学长突然让我做一个登录界面要有客户端,和服务器端。what excuse me? 学长你先告诉我什么是服务器再走! 求教各位大神 什么是服务器,and 什么是...
    问题:什么叫Android服务器端?刚刚学Android 才学到fragment。学长突然让我做一个登录界面要有客户端,和服务器端。what  excuse me? 学长你先告诉我什么是服务器再走! 求教各位大神 什么是服务器,and 什么是Android服务器端?
    回答:
    数据汇总处理的软件, 你可以这样理解.
    客户端的数据都需要通过服务端处理才有合理的业务意义.


    Android服务器分为两种:
    1. socket服务器: C/S客户端服务器
    2. web服务器: B/S网页服务器


    目前, web服务器也支持ws(另一种socket)协议


    问题2:在数据区中定义字节型变量tab,通过键盘输入混杂着符号,数字,字母的字符串(系统功能调用),将录入的字符个数以十六进制数形式显示出来。请将它们分别按字母,数字,符号挑选出来,放置于char,num(需将数字的ASCII转换为二进制数),sign中,并分别进行排序,排序后分别对char,num,sign中的内容分别进行显示。要求程序设计中设置子程序调用,子程序传递参数用堆栈进行。
    回答:写代码是基于设计的而设计正是人能做而机器做不了的因此就是再过100年程序员仍然有用。
    展开全文
  • Android服务器之SFTP上传下载功能的实现

    本文主要是讲解Android服务器之SFTP服务器的上传下载功能,也是对之前所做项目的整理。

    主要的代码块如下所示,对代码中相应地方稍作调整,复制粘贴到项目即可以使用,代码中会提供相应注释。

    1.MainActivity

    public class MainActivity extends Activity implements OnClickListener{
    	private final  String TAG="MainActivity";
    	private Button buttonUpLoad = null;  
    	private Button buttonDownLoad = null;  
    	private SFTPUtils sftp;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_sftpmain);
            init();
        }
            
        public void init(){
        	  //获取控件对象 
            buttonUpLoad = (Button) findViewById(R.id.button_upload);  
            buttonDownLoad = (Button) findViewById(R.id.button_download);  
            //设置控件对应相应函数  
            buttonUpLoad.setOnClickListener(this);  
            buttonDownLoad.setOnClickListener(this);
            sftp = new SFTPUtils("SFTP服务器IP", "用户名","密码");
        }
           public void onClick(final View v) {  
                // TODO Auto-generated method stub  
        	   new Thread() {
        		   @Override
        		   public void run() {
        		        //这里写入子线程需要做的工作
        		        
                switch (v.getId()) {  
                        case R.id.button_upload: {  
                        //上传文件 
                        Log.d(TAG,"上传文件");   
                        String localPath = "sdcard/xml/";
                        String remotePath = "test";
                        sftp.connect(); 
                        Log.d(TAG,"连接成功"); 
                        sftp.uploadFile(remotePath,"APPInfo.xml", localPath, "APPInfo.xml");
                        Log.d(TAG,"上传成功"); 
                        sftp.disconnect();
                        Log.d(TAG,"断开连接"); 
                      }  
                            break; 
                                
                        case R.id.button_download: {  
                                //下载文件
                               Log.d(TAG,"下载文件"); 
                               String localPath = "sdcard/download/";
                               String remotePath = "test";
                               sftp.connect(); 
                               Log.d(TAG,"连接成功"); 
                               sftp.downloadFile(remotePath, "APPInfo.xml", localPath, "APPInfo.xml");
                               Log.d(TAG,"下载成功"); 
                               sftp.disconnect();
                               Log.d(TAG,"断开连接"); 
                              
                              }  
                              break;  
                         default:  
                              break;  
                }      
            } 
        	   }.start();
    	      };
    }
    	


    2.SFTPUtils

    public class SFTPUtils {
    	
    	private String TAG="SFTPUtils";
    	private String host;
    	private String username;
    	private String password;
    	private int port = 22;
    	private ChannelSftp sftp = null;
    	private Session sshSession = null;
    
    	public SFTPUtils (String host, String username, String password) {
    		this.host = host;
    		this.username = username;
    		this.password = password;
    	}
    		
    	/**
    	 * connect server via sftp
    	 */
    	public ChannelSftp connect() {
            JSch jsch = new JSch();
            try {
                sshSession = jsch.getSession(username, host, port);
                sshSession.setPassword(password);
                Properties sshConfig = new Properties();
                sshConfig.put("StrictHostKeyChecking", "no");
                sshSession.setConfig(sshConfig);
                sshSession.connect();
                Channel channel = sshSession.openChannel("sftp");
                if (channel != null) {
                    channel.connect();
                } else {
                    Log.e(TAG, "channel connecting failed.");
                }
                sftp = (ChannelSftp) channel;
            } catch (JSchException e) {
                e.printStackTrace();
            }
            return sftp;
        }
    	
    			
    /**
     * 断开服务器
     */
    	public void disconnect() {
    		if (this.sftp != null) {
    			if (this.sftp.isConnected()) {
    				this.sftp.disconnect();
    				Log.d(TAG,"sftp is closed already");
    			}
    		}
    		if (this.sshSession != null) {
    			if (this.sshSession.isConnected()) {
    				this.sshSession.disconnect();
    				Log.d(TAG,"sshSession is closed already");
    			}
    		}
    	}
    
    	/**
    	 * 单个文件上传
    	 * @param remotePath
    	 * @param remoteFileName
    	 * @param localPath
    	 * @param localFileName
    	 * @return
    	 */
    	public boolean uploadFile(String remotePath, String remoteFileName,
    			String localPath, String localFileName) {
    		FileInputStream in = null;
    		try {
    			createDir(remotePath);
    			System.out.println(remotePath);
    			File file = new File(localPath + localFileName);
    			in = new FileInputStream(file);
    			System.out.println(in);
    			sftp.put(in, remoteFileName);
    			System.out.println(sftp);
    			return true;
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (SftpException e) {
    			e.printStackTrace();
    		} finally {
    			if (in != null) {
    				try {
    					in.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    		return false;
    	}
    	
    	/**
    	 * 批量上传
    	 * @param remotePath
    	 * @param localPath
    	 * @param del
    	 * @return
    	 */
    	public boolean bacthUploadFile(String remotePath, String localPath,
    			boolean del) {
    		try {
    			File file = new File(localPath);
    			File[] files = file.listFiles();
    			for (int i = 0; i < files.length; i++) {
    				if (files[i].isFile()
    						&& files[i].getName().indexOf("bak") == -1) {
    					synchronized(remotePath){
    						if (this.uploadFile(remotePath, files[i].getName(),
    							localPath, files[i].getName())
    							&& del) {
    						deleteFile(localPath + files[i].getName());
    						}
    					}
    				}
    			}
    			return true;
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			this.disconnect();
    		}
    		return false;
    
    	}
    	
    	/**
    	 * 批量下载文件
    	 * 
    	 * @param remotPath
    	 *            远程下载目录(以路径符号结束)
    	 * @param localPath
    	 *            本地保存目录(以路径符号结束)
    	 * @param fileFormat
    	 *            下载文件格式(以特定字符开头,为空不做检验)
    	 * @param del
    	 *            下载后是否删除sftp文件
    	 * @return
    	 */
    	@SuppressWarnings("rawtypes")
    	public boolean batchDownLoadFile(String remotPath, String localPath,
    			String fileFormat, boolean del) {
    		try {
    			connect();
    			Vector v = listFiles(remotPath);
    			if (v.size() > 0) {
    
    				Iterator it = v.iterator();
    				while (it.hasNext()) {
    					LsEntry entry = (LsEntry) it.next();
    					String filename = entry.getFilename();
    					SftpATTRS attrs = entry.getAttrs();
    					if (!attrs.isDir()) {
    						if (fileFormat != null && !"".equals(fileFormat.trim())) {
    							if (filename.startsWith(fileFormat)) {
    								if (this.downloadFile(remotPath, filename,
    										localPath, filename)
    										&& del) {
    									deleteSFTP(remotPath, filename);
    								}
    							}
    						} else {
    							if (this.downloadFile(remotPath, filename,
    									localPath, filename)
    									&& del) {
    								deleteSFTP(remotPath, filename);
    							}
    						}
    					}
    				}
    			}
    		} catch (SftpException e) {
    			e.printStackTrace();
    		} finally {
    			this.disconnect();
    		}
    		return false;
    	}
    
    	/**
    	 * 单个文件下载
    	 * @param remotePath
    	 * @param remoteFileName
    	 * @param localPath
    	 * @param localFileName
    	 * @return
    	 */
    	public boolean downloadFile(String remotePath, String remoteFileName,
    			String localPath, String localFileName) {
    		try {
    			sftp.cd(remotePath);
    			File file = new File(localPath + localFileName);
    			mkdirs(localPath + localFileName);
    			sftp.get(remoteFileName, new FileOutputStream(file));
    			return true;
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (SftpException e) {
    			e.printStackTrace();
    		}
    
    		return false;
    	}
    
    	/**
    	 * 删除文件
    	 * @param filePath
    	 * @return
    	 */
    	public boolean deleteFile(String filePath) {
    		File file = new File(filePath);
    			if (!file.exists()) {
    				return false;
    			}
    			if (!file.isFile()) {
    				return false;
    			}
    			return file.delete();
    		}
    		
    	public boolean createDir(String createpath) {
    		try {
    			if (isDirExist(createpath)) {
    				this.sftp.cd(createpath);
    				Log.d(TAG,createpath);
    				return true;
    			}
    			String pathArry[] = createpath.split("/");
    			StringBuffer filePath = new StringBuffer("/");
    			for (String path : pathArry) {
    				if (path.equals("")) {
    					continue;
    				}
    				filePath.append(path + "/");
    					if (isDirExist(createpath)) {
    						sftp.cd(createpath);
    					} else {
    						sftp.mkdir(createpath);
    						sftp.cd(createpath);
    					}
    				}
    				this.sftp.cd(createpath);
    				  return true;
    			} catch (SftpException e) {
    				e.printStackTrace();
    			}
    			return false;
    		}
    
    	/**
    	 * 判断目录是否存在
    	 * @param directory
    	 * @return
    	 */
    	@SuppressLint("DefaultLocale") 
    	public boolean isDirExist(String directory) {
    		boolean isDirExistFlag = false;
    		try {
    			SftpATTRS sftpATTRS = sftp.lstat(directory);
    			isDirExistFlag = true;
    			return sftpATTRS.isDir();
    		} catch (Exception e) {
    			if (e.getMessage().toLowerCase().equals("no such file")) {
    				isDirExistFlag = false;
    			}
    		}
    		return isDirExistFlag;
    		}
    	
    	public void deleteSFTP(String directory, String deleteFile) {
    		try {
    			sftp.cd(directory);
    			sftp.rm(deleteFile);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * 创建目录
    	 * @param path
    	 */
    	public void mkdirs(String path) {
    		File f = new File(path);
    		String fs = f.getParent();
    		f = new File(fs);
    		if (!f.exists()) {
    			f.mkdirs();
    		}
    	}
    
    	/**
    	 * 列出目录文件
    	 * @param directory
    	 * @return
    	 * @throws SftpException
    	 */
    	
    	@SuppressWarnings("rawtypes")
    	public Vector listFiles(String directory) throws SftpException {
    		return sftp.ls(directory);
    	}
    	
    }


    3.导入jsch-0.1.52.jar,这个包网上有下载。注意一定要把它放到工程的libs目录下

    4.布局文件:activity_sftpmain.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"
       >
     <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textStyle="bold"
            android:textSize="24dip"
            android:layout_gravity="center"
            android:text="SFTP上传下载测试 "/>
     
        <Button
    		android:id="@+id/button_upload"
    		android:layout_width="fill_parent"
    		android:layout_height="wrap_content"
    		android:text="上传"
    		/>
        
        <Button
    		android:id="@+id/button_download"
    		android:layout_width="fill_parent"
    		android:layout_height="wrap_content"
    		android:text="下载"
    		/>
    
    </LinearLayout>
    


    5.Manifest文件配置

        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>






    展开全文
  • Android服务器时间校准

    千次阅读 2014-03-03 13:31:23
    Android服务器时间与客户端时间的校准 由于Android的时间可以由用户调整,然后有时候时间的同步的需求,所以如何进行时间与服 务器的校准可能就是一个比较恶心的问题。 之前想到的比较简单(单位为毫秒),大概...
  • 如何运行android服务器段的java文件 是把java文件打包成exe文件或者apk文件 windows服务器打包成exe文件 linux打包成apk文件运行么,如何绑定域名啊
  • 使用Eclipse搭建简易Android服务器

    万次阅读 2015-07-31 12:14:49
    一直都想做一些自己的app奈何多数功能都需要借助于服务器才能实现,... 这篇文章只是简单介绍下如何使用Java搭建Android服务器,刚学习不久,有不足之处欢迎指出,共同进步!  一、环境搭建  1、 所需软件列表  
  • 如题 android 服务器只返回图片名称,img显示资源文件对应名称的图片
  • Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度! 算下来,TomCat服务器已经写了很长一段时间了,一直说拿他来搞点事情,也一直没做,今天刚好有空,交流群还有人请教,就寻思着把一些...
  • Android 服务器消息推送技术

    千次阅读 2015-01-12 13:28:38
    在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相对比较麻烦,最近利用几天的...
  • Android 服务器请求得到cookie

    千次阅读 2014-11-15 13:51:47
    1. 客户端通过http协议去请求服务器
  • Android 服务器推送技术

    万次阅读 2012-01-31 09:51:41
    在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相对比较麻烦,最近利用几天的...
  • android 服务器端推送

    千次阅读 2012-07-08 22:36:14
    通过建立持久连接的方法,服务器端发送信息给手机用户。...方法一:MQTT协议(实例android+php) 1、服务器端需下载安装IBM的 Really Small Message Broker (RSMB)(MQTT协议代理),并运行br
  • 将war包部署到android服务器

    千次阅读 2016-03-02 11:19:44
    android系统上安装i-jetty(servlet容器),可以将android手机当成一个服务器使用。 1、下载i-jetty,安装; 2、编写servlet并打成war包; 3、将war包里的classes和lib分别复制到D:\Android\android-sdk-...
  • 这两个开源库都能实现在Android平台上快速搭建服务器,功能非常强大,也都分别支持Https安全通信,大家如果有兴趣可以点进去看看。本文也是因为使用到Https通信,需要用到自签的服务器端证书,需要自己创建CA,并由...
  • 最近要搭建一个Android的APP服务器端,但是我会的语言就是JAVA和C++,所以想用JAVA搭建服务器端。请问各位前辈,用JAVA编移动应用的服务器端可以吗?有这方面的框架没有?我应该如何学习?请前辈指教,小弟在这里先...
  • 我需要从服务器中调用一个方法来打开内部android数据库的连接,使用的下面的代码: public class myService extends Service{ public void setDB(DB_DatabaseManager db){ dbManager = db; } ...
  • Android 服务器向客户端推送方案

    千次阅读 2014-04-14 18:55:50
    Android Cloud to Device Messaging (C2DM) 作为 Android 2.2 的一部分已经发布了。C2DM 允许第三方开发者开发相关的应用来推送少量数据消息(1024bytes)到用户的手机上。C2DM 创造了一个良好的机会,允许我们使用...
  • 当我第一次使用程序时,我想获取事件,所以我决定使用这个服务器: public class PackageChangeReceiver extends BroadcastReceiver { Context context; @Override public void onReceive(Context ctx, ...
  • Android服务器通信通常采用的是HTTP通信方式和Socket通信方式,本章主要介绍HTTP协议。
  • 客户端是用的Android-async-http-1.4.5这个jar包、进行传输数据。 AsyncHttpClient client=new AsyncHttpClient(); ...这里的params参数对象,服务器如何得到。有知道的麻烦告知下。。。谢谢喽。
  • 1.已经安装JDK环境 2.tomcat下载安装(windows为例,根据系统选择位数) ... 本例解压到G盘,注意目录...3.双击startup.bat后,本地服务器已经搭建起来,浏览器中输入http://localhost:8080/,如果出现以下界面说明安装成功
  • 做一个程序,要A客户端通过服务器向B终端发送一条指令,B回复信息给服务器服务器再回复到A客户端,(在网上查好像可以用Servlet转发实现,但是考虑好久不知道是什么逻辑~糗~)我是刚入行的小菜鸟,请大神们指教~跪...
  • 由于当当Android客户端采用的是客户端请求,服务端response,返回页面的方式。 在调试中,发现当用户点击注册页面,提交后,通过 header( Location: . $to_url ); exit; 无法跳转到验证页面。 但是通过tail ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,880
精华内容 15,552
关键字:

android服务器