搭建一个简单的服务器
做Android开发有一段时间了,经常与后台服务器进行交互,有时就会想,后台服务器到底是怎么工作的呢?我发出去一个http请求,他怎么接收到,又怎么进行处理、返回信息呢?
怀着这个疑问,我进行了好一通搜索。然后,还是想动动手,自己搭建一个简单的服务器。
我的环境是win7,那么,就在win7下搭建一个吧。最简单的,自然是win7自带的,IIS,全称Internet Information Service,即Internet信息服务,专用于微软操作系统平台。
简单说下步骤:
1,启用IIS功能,一般在控制面板的“启用或关闭windows功能”里面;
2,准备好一个html文件,例如如下的内容:
<html><head>
<title>Lintax的主页</title>
</head><body>
<h1>lintax的主页</h1>
<p><font color="green">内容会很精彩的哦</font></p>
<img src="lovely.jpg" width="300" />
<p><font color="red">敬请期待...</font></p>
</body></html>
放在默认的路径下(C:\Inetpub\wwwroot),文件名使用index.htm。
为什么要使用index.htm,原来是默认打开的文件名有这样几个:
我们使用index.htm,就可以使用 http://localhost/ 来访问了。否则,就需要指定htm文件名才能访问,像这样:
http://localhost/login.htm 。
3,输入网址测试访问,可以看见:
这样,我们就搭建起来了一个简单的服务器。在局域网里其他的电脑上输入:
http://192.168.100.100 (这个ip是我的电脑的ip,根据需要修改)
就可以访问我们提供的页面了。如果转到公网上,全世界的人都可以访问到了。
但是,最初的问题还存在,就是我们现在看见的,只是一个静态页面,这个服务器,并不能针对我们的请求进行正确与否的判断,进而做出相应的回复。
那么,怎样才能对请求进行处理?
在再次经历一番搜索后,我选择了一个方案,使用java的servlet+tomcat来实现。毕竟,做Android这么久了,对java还是比较熟悉了,用java来进行后台控制,后续如果想深入的话,可以在此基础上继续研究。
下面说下搭建过程:
1,下载tomcat,解压。我用的版本是:apache-tomcat-7.0.57。
2,下载eclipse j2ee,注意,即使原来是用eclipse开发的Android,现在开发java的eclipse版本也是不一样的。
我用的eclipse版本是:Kepler Service Release 2
然后,对下载的压缩包解压,然后运行起来。
3,在eclipse中新建一个web project工程,选择动态的。
4,通过Eclipse创建和编写Servlet。
建立一个类,继承HttpServlet,实现doGet()、doPost(),代码如下:
package servlet.study;import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class ServletDemo*/
public class ServletDemo extends HttpServlet {private static final long serialVersionUID = 1L;private String name = "";private String password = "";/*** Default constructor. */public ServletDemo() {System.out.println("log: ServletDemo enter");}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String url=request.getRequestURL().toString();System.out.println("log: ServletDemo doGet: url="+url);String strName = request.getParameter("name");String strPassword = request.getParameter("password");System.out.println("log: ServletDemo doGet: name="+strName+": password="+strPassword); boolean isPass = false;if(url!=null && url.contains("login")){ try{if((strName!=null)&&(strPassword!=null)){if(name.contentEquals(strName) && password.contentEquals(strPassword) ){isPass = true;}}} catch (Exception e){e.printStackTrace();}}//返回jsonresponse.setContentType("text/json");PrintWriter out = response.getWriter();if(isPass){out.println("{\"result\":\"success\"}");} else {out.println("{\"result\":\"input info is invalid\"}");} out.flush();out.close(); }/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("log: ServletDemo doPost:"); response.setContentType("text/json");PrintWriter out = response.getWriter(); String url=request.getRequestURL().toString();System.out.println("log: ServletDemo doPost: url="+url); try{name = request.getParameter("name");password = request.getParameter("password");System.out.println("log: ServletDemo doPost: name="+name+": password="+password);if(url!=null && url.contains("register")){out.println("{\"result\":\"success\"}");} else {out.println("{\"result\":\"fail\"}");}} catch (Exception e){ out.println("{\"result\":\"fail\"}");}}
}
在web.xml中配置servlet和servlet-mapping:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>WebTest</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><servlet><description>my J2EE deom for servlet</description><display-name>disp ServletDemo</display-name><servlet-name>ServletDemo</servlet-name><servlet-class>servlet.study.ServletDemo</servlet-class></servlet><servlet-mapping><servlet-name>ServletDemo</servlet-name><url-pattern>/api/login</url-pattern><url-pattern>/api/register</url-pattern></servlet-mapping>
</web-app>
在servlet-mapping中,我映射了两个url,一个是“/api/register”,一个是“/api/login”,分别代表注册与登录。实际上,对于同一个servlet,这只是两个不同的称呼罢了,真正做区别处理的是java代码中。我添加了对url命令的判断,在doGet中处理了login,在doPost中处理了register,从而实现了注册与登录功能。
5,运行,选择Run on Server
选择手动指定server,找到tomcat的目录,运行。
此时报错,编译不过,有如下信息:
Description Resource Path Location Type
HttpServlet cannot be resolved to a type ServletDemo.java
/WebTest/src/servlet/study line 12 Java Problem
HttpServlet cannot be resolved to a type
原来是jdk 里不包括servlet-api.jar 这个包,此包在Tomcat 中存在,按如下方式操作一下即可:
项目名–> 右键
Property–> 选择
Java Build Path–> 选择
Add External JARs–> 选择
把servlet-api.jar 的路径输入。
继续运行,出现doGet调用信息(是eclipse环境运行,执行了一次默认请求):
log: ServletDemo doGet: url=http://localhost:8080/WebTest/api/login
log: ServletDemo doGet: name=null: password=null
如图:
这次请求,由于没有指定用户名与密码,所以返回失败。
第二次发请求,进行注册:
使用Postman进行post请求注册,
具体Postman的按照与使用,可以参考:
http://www.cnblogs.com/s380774061/p/4624326.html
url使用:http://127.0.0.1:8080/WebTest/api/register
用表单提交两项:name=z&password=a
然后出现doPost调用信息:
log: ServletDemo doPost: url=http://localhost:8080/WebTest/api/register
log: ServletDemo doPost: name=z: password=a
正常的注册操作,返回成功,如下图:
第三次,在浏览器上发Get请求登录:
http://127.0.0.1:8080/WebTest/api/login?name=z&password=a
服务器端的log信息:
log: ServletDemo doGet: url=http://127.0.0.1:8080/WebTest/api/login
log: ServletDemo doGet: name=z: password=a
由于第二次的post已经给用户名与密码赋值了,这次的访问,使用的是同样的用户名与密码,所以,这次的访问,返回是成功的结果:
上面我们是使用的浏览器与postman进行的测试,还有一个测试的方法,就是使用Android工程运行测试,可以使用上一个博文的附件Android demo(http://download.csdn.net/detail/lintax/9777979),是与本文的服务器端的demo相匹配的。
注意,在Android Deom中要指定正确的IP,在我的demo中,设置的是我的电脑的ip(192.168.100.100),在具体测试环境中,要相应修改下。运行时,要保证手机与服务器在一个局域网中,通常使用WIFI就可以了。
本文的服务器端的demo:
http://download.csdn.net/detail/lintax/9786392
参考:
http://blog.csdn.net/yuanguozhengjust/article/details/25747729
http://blog.chinaunix.net/uid-25799257-id-3774015.html
搭建一个简单的服务器相关推荐
- 用nodejs搭建一个简单的服务器
使用nodejs搭建一个简单的服务器 nodejs优点:性能高(读写文件) 数据操作能力强 官网:www.nodejs.org 验证是否安装成功:cmd命令行中输入node -v 如果显示版本号表示安 ...
- Node.js搭建一个简单的服务器
文章目录 Node.js的安装 了解Node.js模块系统 服务器的搭建 一.创建一个Web服务器 注意 程序代码 运行 二.静态资源托管 静态资源 注意 程序代码 运行 三.简单接口的实现(简单服务 ...
- express 文件服务器,Express搭建一个简单后台服务器
Express框架 Web 应用程序 Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能. API 使用您所选择的各种 ...
- 搭建一个简单Git服务器
1.在PC上创建一个git空仓库 # mkdir -p /home/git_test # cd git_test # git init --bare test.git //test.git目录被clo ...
- 搭建一个简单repo服务器
一.服务器端 1.安装依赖 # sudo apt install repo创建manifest.test1.test2仓库 1.创建manifest中心仓库 # cd /home/demo/repo_ ...
- 使用XMAPP搭建一个简单的服务器
1.首先去官网下载XMAPP,https://www.apachefriends.org/zh_cn/download.html 2.无脑点击next进行安装 3. 找到安装路径(我安装在d盘):D: ...
- 自己动手搭建一个简单的静态资源服务器
文章目录 自己动手搭建一个简单的静态资源服务器 介绍 一.设计到的模块 备注: 二.代码结构 三.具体代码 自己动手搭建一个简单的静态资源服务器 介绍 通过此文章的学习,可以自己使用NodeJs搭 ...
- ubuntu搭建一个简单的http服务器
使用ubuntu搭建一个简单的http服务器 安装apache2 1.sudo apt-get update 2.sudo apt-get install apache2 安装成功后,再/etc/ap ...
- Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播)
文章目录 Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播) 一.基础环境搭建 二.构建Nginx 下载nginx-rtmp-module 安装Nginx 编译nginx,代理 ...
- 用思科网络模拟器搭建一个简单的局域网
目录 前言 搭建 配置 前言 在搭建一个简单的局域网前,你必须知道一些常识. 网线(双绞)线的标准 T568A标准:白绿.绿.白橙.蓝.白蓝.橙.白棕.棕 T568B标准:白橙.橙.白绿.蓝.白蓝.绿 ...
最新文章
- pyinstaller安装以及生成exe文件
- Translating Embedding for Modeling Multi-relational Data
- Laravel Model 利用 Macroable 为数据模型添加宏能力
- 部署webservice到远程服务器
- 解决H5在微信浏览器或QQ浏览器修改title的问题
- 你必须知道iPad的10件事
- java获取时分秒毫秒_Calendar获取年月日时分秒毫秒
- PyQt之计数器(QSpinBox)控件的常用方法
- anaconda环境迁移
- 【C语言】转义字符\xhh和\ddd到底如何判断?被兔子个数支配的恐惧你也有吗?(每日小细节001)
- md+邮件服务器+334错误,邮件发送,无尽的501错误。TCP发送邮件解决方案
- 图像中里面的Ground Truth是什么意思
- 22考研上岸西电计科初试395分经验分享
- 基于GPS经纬度和当地时间计算日落日出时间实现
- Unity涂鸦【1】——基于Vectrosity的屏幕涂鸦和白板涂鸦的简单实现
- 专为Oracle数据恢复而生 - PRM/DUL
- Systemd入门:边玩边学
- 微信代驾小程序-景德镇代驾服务平台小程序源码分享
- Android -- 手机真机调试
- webapi输出炜json_C# WebApi 返回JSON