怎样在一个月内学会用java web服务器做服务器接口

扫一扫体验手机阅读
Java Web系统常用的第三方接口
但script标签也有一定的局限性,并不能解决所有js跨域问题。script标签的src属性值不能动态改变以满足在不同条件下获取不同数据的需求, 更重要的是,不能通过这种方式正确访问以xml内容方式组织的数据。&&&2.2.2&对外提供js接口
对外提供js接口只需要通过&script src=&...& type=&...&/&请求的地址返回的是JSON字符串即可。
&&&在本实例中,用到了笔者一篇JSON文章的实例(《JSON知识总结入门篇》:),在上面进行了小幅修改,简便起见,没有创建任何的Java类,提供的对外的js接口是直接通过json.txt,通过该文件返回一个JSON字符串,在实际的应用情况中,可以是一个Ation等。
&&&json.txt定义了JSON格式的字符串,并定义放在json这个变量中,jsInterface.html文件请求远端的一个路径,而后解析返回的JSON串,并打印出来。json.txt在远端的一个服务器上,例如该文件访问地址为:,文件的内容如下:
var&json={
&&programmers&:&[
&&&&{&&firstName&:&&阿蜜果&,&&lastName&:&McLaughlin&,&&email&:&&&&},
&&&&{&&firstName&:&&范范&,&&lastName&:&Hunter&,&&email&:&&&&},
&&&&{&&firstName&:&&高子&,&&lastName&:&Harold&,&&email&:&&&&}
&&authors&:&[
&&&&{&&firstName&:&&安安&,&&lastName&:&&Asimov&,&&genre&:&&science&fiction&&},
{&&firstName&:&&Tad&,&&lastName&:&&Williams&,&&genre&:&&fantasy&&},
{&&firstName&:&&Frank&,&&lastName&:&&Peretti&,&&genre&:&&christian&fiction&&}
&&musicians&:&[
&&&&{&&firstName&:&&茂茂&,&&lastName&:&&Clapton&,&&instrument&:&&guitar&&},
{&&firstName&:&&Sergei&,&&lastName&:&&Rachmaninoff&,&&instrument&:&&piano&&}
在本地创建一个jsInterface.html网页,使用&script type=&text/javascript& src=&&&/&请求返回json字符串的路径信息,接着进行打印,该文件代码如下:
&&&&&head&
&&&&&&&&&title&JS&Interface&Test&/title&
&&&&&&&&&meta&http-equiv=&Content-Type&&content=&text/&charset=UTF-8&&
&&&&&&&&&script&type=&text/javascript&&src=&http://test.com/json.txt&&&/script&
&&&&&&&&&script&type=&text/javascript&&
&&&&&&&&&&&&alert(json.programmers[<span style="background-color: #f5f5f5; color: #].firstName&+&','&+&json.programmers[<span style="background-color: #f5f5f5; color: #].lastName&+&','&+&json.programmers[<span style="background-color: #f5f5f5; color: #].email);
&&&&&&&&&&&&alert(json.programmers[<span style="background-color: #f5f5f5; color: #].firstName&+&','&+&json.programmers[<span style="background-color: #f5f5f5; color: #].lastName&+&','&+&json.programmers[<span style="background-color: #f5f5f5; color: #].email);
&&&&&&&&&&&&alert(json.programmers[<span style="background-color: #f5f5f5; color: #].firstName&+&','&+&json.programmers[<span style="background-color: #f5f5f5; color: #].lastName&+&','&+&json.programmers[<span style="background-color: #f5f5f5; color: #].email);
&&&&&&&&&&&&
&&&&&&&&&&&&alert(json.authors[<span style="background-color: #f5f5f5; color: #].firstName&+&','&+&json.authors[<span style="background-color: #f5f5f5; color: #].lastName&+&','&+&json.authors[<span style="background-color: #f5f5f5; color: #].genre);
&&&&&&&&&&&&alert(json.authors[<span style="background-color: #f5f5f5; color: #].firstName&+&','&+&json.authors[<span style="background-color: #f5f5f5; color: #].lastName&+&','&+&json.authors[<span style="background-color: #f5f5f5; color: #].genre);
&&&&&&&&&&&&alert(json.authors[<span style="background-color: #f5f5f5; color: #].firstName&+&','&+&json.authors[<span style="background-color: #f5f5f5; color: #].lastName&+&','&+&json.authors[<span style="background-color: #f5f5f5; color: #].genre);
&&&&&&&&&&&&
&&&&&&&&&&&&alert(json.musicians[<span style="background-color: #f5f5f5; color: #].firstName&+&','&+&json.musicians[<span style="background-color: #f5f5f5; color: #].lastName&+&','&+&json.musicians[<span style="background-color: #f5f5f5; color: #].instrument);
&&&&&&&&&&&&alert(json.musicians[<span style="background-color: #f5f5f5; color: #].firstName&+&','&+&json.musicians[<span style="background-color: #f5f5f5; color: #].lastName&+&','&+&json.musicians[<span style="background-color: #f5f5f5; color: #].instrument);
&&&&&&&&&/script&
&&&&&/head&
&&&&&body&
&&&&&/body&
&&&&&&&& 运行后可看到运行结果与《JSON知识总结入门篇》第一个实例的运行结果一致。
3.http接口
3.1 接口方式说明和优缺点
需要为第三方提供一个接口,本来打算继续使用Web Service接口,结果那边的开发人员说,他们没有使用过Web Service接口(是做IPTV的一个公司),希望我们能够提供http方式的接口。
另外我们一般在提供Web Sservice接口的同时,也对外提供http接口。
3.2 开发实例
3.2.1 向http接口发送消息的使用小程序
&&&本实例对自己提供请求信息为xml格式的http接口,将xml格式的请求信息发给http接口的地址后,将调用接口的返回消息简单的显示在页面,为了简便起见,笔者没有对js代码进行包装。
&&&3.2.2 作为提供商提供http接口
在这个实例中,服务器提供了一个http接口,在这里是一个jsp页面的访问地址,实际应用过程中,可以是Servlet或Action的访问地址,在这个实例中,客户端发送http get发送请求,带上了hotel(宾馆信息)和name(顾客姓名),http接口程序拿到参数信息后,根据一定算法检查分配空闲房间号,这里为了简便起见,只是随机的生成一个数字返回给客户端。http接口的简单程序httpInterface.jsp如下所示:
&%@&page&language=&java&&contentType=&text/&charset=UTF-8&&pageEncoding=&UTF-8&%&
&!DOCTYPE&HTML&PUBLIC&&-//W3C//DTD&HTML&4.01&Transitional//EN&&
Double&room&=&<span style="background-color: #f5f5f5; color: #0&*&Math.random();
out.write(&hotel=&&+&request.getParameter(&hotel&)
&&&&&&&&&&&&+&&;name=&&+&request.getParameter(&name&)
&&&&&&&&&&&&+&&;room=&&+&room.intValue());
out.close();
&&&&&&&head&
&&&&&&&&&meta&http-equiv=&Content-Type&&content=&text/&charset=UTF-8&&/&
&&&&&&&&&title&http&Interface&/title&
&&&&&&&&&meta&http-equiv=&pragma&&content=&no-cache&&
&&&&&&&&&meta&http-equiv=&cache-control&&content=&no-cache&&
&&&&&&&&&meta&http-equiv=&expires&&content=&0&&
&&&&&&&/head&
&&&&&body&
&&&&&&&/body&
hotel=name=room=407
<span type="1" blog_id="669026" userid='
682篇文章,48W+人气,1粉丝
容器私有云平台实践之路
¥51.0083人订阅
掌握VMware超融合技术
¥51.0048人订阅
高并发架构之路
¥51.00150人订阅
前百度高级工程师的架构高可用实战
¥51.00237人订阅在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
用java编写app的服务器端,需要用到什么技术和框架?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
AXIS2之类的web service。
返回JSON数据。客户端调用URL然后直接解析JSON数据就好了。
看我的博客,这是关于如何使用AXIS2 搭建Web Service并传递JSON数据的文章。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
首先,App的服务端跟Web的服务端没有多大区别,而且在实际的开发过程中,业务逻辑也都是共用一套,只是会针对不同的客户端做不同的适配(这点可参考Amazon,其对PC的web端,移动的Web端,移动的App都做了不同程度的适配).
其次,既然与Web的服务端没多大区别,那所用的技术也大同小异,对于App而言,服务端更多是一个数据接口,所以框架页大同小异;
最后,大致总结一下:
网络通信: tcp,http等;
Web服务:servlet, cgi脚本,asp等;
系统调度:多线程,并发等;
对应不同的web服务技术,采用的编程语言不同;
对应不同的网络通信协议,采用的框架也不同,netty->tcp,servlet等web服务框架->http等;
对应系统调度,有不同的多线程,多进程通信框架等;
对应提供不同的服务接口,有web service和restful两大类,前者基于soap协议,后者基于http协议,对应的框架就很多,不一一叙述;
除此之外,还有很多其他的技术,可先做,发现问题,自然就知道怎么去找相应的技术、解决方案(包含框架)来解决,所以先动手吧;
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
1.webservice通信,其中有REST风格的webservice,基于http协议;普通的webservice是基于soap的方式,如果用这种方式的话,你客户端要解析传输过来的xml,不方便!
PS:使用spring web mvc实现REST风格,非常方便,当然还有其他的框架,eg:CXF,axis2等
2.使用hessian,可以进行远程方法调用,实际操作比较繁琐!
3.直接使用servlet. 不推荐
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
1、servlet
1、http 1.0
2、http 1.1
mysql就可以了
能用到的差不多就这些了
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
看你的需求啦,用户量很少的话用Java的那一套体系就可以了,JSP/Servlet,数据交换格式json,xml都随意的啦,注意的是数据交换之后处理的流程与逻辑
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
比较推荐使用spring + spring mvc + 任意的orm框架(hibernate,mybatis)
通过http协议进行通信,推荐使用json格式数据进行数据交互.
相对于webservice速度更快
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
一般能提供web服务的包都可以的吧
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。做一个完整的Java Web项目需要掌握的技能做一个完整的Java Web项目需要掌握的技能悦览天下百家号最近自己做了几个Java Web项目,有公司的商业项目,也有个人做着玩的小项目,写篇文章记录总结一下收获,列举出在做项目的整个过程中,所需要用到的技能和知识点,带给还没有真正接触过完整Java Web项目的同学一个比较完整的视角,提供一个所谓的“大局观”,也以便于同学们更有针对性地学习。当然,这里所用到的例子项目是非常初级,简单的项目,所以大神们就可以不用往下看了。首先我们从网站的架构谈起。一般来说,我们将网站分为前端和后端。前端主要负责页面的展示,后端则是业务逻辑的实现。由于html5的兴起,前端领域已经越来越火热,前端技术发展极快,今天我们不做过多介绍,因为现在的互联网公司,前端工程师和Java工程师是完全不同的两种技术岗位。所以我们还是以Java的角度去看待一个项目。在前端没有那么火的前几年,或者说在经典的Java Web的开发模式中,我们使用Jsp技术来作为展现层的实现,其实也就是所谓的前端。当然只懂得Jsp是不够的还需要懂html,css,js,ajax等一些前端的基础技术,Jsp技术在其中扮演外层包装的角色。那么后端呢?后端是由于一些实现了业务逻辑Java代码和数据库组成。说到这,就可以推出Web开发中经典的MVC模式,Model-View-Controller。View,,就是指表现层,Model,是用来承载数据的抽象结构,而Controller则是View和Model的桥梁。View存在与前端代码中,Controller,Model存在与后端代码中。在后端代码中,为了保证代码的整洁,易读性,一般会采用分层的办法,自顶向下分为controller层,service层,dao层,数据层或者叫持久层(直接与数据库打交道)。有时候,为了达到解耦的目的,会在上述基层中间加入响应的接口层,以使得接口与实现分离。在更加大型的网站中,会出现更加复杂的架构,比如dao层与数据层之间要有缓存层,或者访问压力增大后,需要使用集群,负载均衡等高级技术,但在这里,我们就不深入讨论复杂架构了。开发:视图层技术——HTML,CSS,JS,AJAX,Tiles,Velocity,FreeMarker持久层技术——MyBatis,HibernateSpring , Spring MVC项目构建工具Maven日志Log4j版本控制 Git数据库技术:SQL语句参数调优操作系统:熟练掌握一种Linux系统,原理,Shell命令服务器技术:熟练使用并理解一个应用服务器技术的原理(Tomcat)熟练使用并理解一个Web服务器技术的原理(Nginx)附加:缓存技术:熟练使用并理解一种缓存技术(Redis,Memcache,EhCache)非关系型数据库熟练使用并理解一种非关系型数据库(MongoDB)中间件技术:JMS:activeMQ和kafkaRPC: Dubbo设计模式:了解并能够使用几种最主要的设计模式网络:熟练使用并理解一个网络开发技术(Netty)熟悉http,TCP协议Java虚拟机:熟悉jvm运行原理,内存分布jvm参数调优本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。悦览天下百家号最近更新:简介:慧眼看世界,慢步待生活作者最新文章相关文章随笔 - 275
评论 - 3038java web给手机端写接口HttpServletRequest ,HttpServletResponse
时间: 17:21:12
&&&& 阅读:20476
&&&& 评论:
&&&& 收藏:0
标签:前言:
作为一名android开发人员,网络数据都是web开发人员提供,每次让他们写一个接口都跟求神拜佛一样,与其求别人还不如自己动手,这是八百年前写的word,今天把它记在csdn,防止以后忘记还可以看看。
1.接口的数据源来自于数据库。(这里没办法提供方法教你怎么查数据,自己去网站上学吧,我觉得挺不错的)
2.我所写接口的框架是structs+spring+ibatis,要会接口首先要学会这三个框架怎么用。下面是myecplise开发的web项目结构图张这样:
我们有个大概的了解了,之后你新建一个Javaweb项目都会有个web.xml,这个是入口,我们来看看它里面有啥:
web.xml中的东西我没办法讲述的很清楚,待会儿附上源码,公司人说每次新建项目的时候直接复制一下改改就好了,这大概就是通病一是比较懒,而是一个个敲麻烦还要全懂。
3.先说接口,顺序好像反了,这是以登陆为例:
BaseAction类继承ActionSupport类(xwork.jar),我们在BaseAction类写了一些基本的输出方法,就是手机端不是向web请求嘛,web响应后要给手机东西,就好比我登陆的时候给用户名和密码给web,web就去服务器查询是否有这号人,如果有或者没有,web就得告诉手机端,输出格式一般给的是json格式,这是web端的BaseAction类,这个类里面还有HttpServletRequest(手机端传给web的用户名和密码,web就是从这里取出),HttpServletResponse的到他们的实例,以及HttpSession对象,session就是浏览器缓存,比如你登陆别人的网站,别人就可以通过session吧你的账号记录下来。用gessession就可得到。
4,我们写一个LoginAction继承BaseAction,其中写一个登陆的方法如下:
* 手机端登陆的接口
@Resource Loginservice loginS
public void startLogin(){
Map&String,Object& map=new HashMap&String,Object&();
HttpServletRequest request=this.getRequest();
map.put("username",request.getParameter("username"));
if(StringUtils.isNotNull(request.getParameter("password"))) {
String password = Md5Utils.MD5_32(request.getParameter("password"));
map.put("password", password);
String json = loginService.Loginmobile(map);
JSONObject jsonobj=new JSONObject();
if(json==null){
jsonobj.put("state", "false");
jsonobj.put("msg", "登陆失败,用户名或密码错误");
jsonobj.put("userinfo", json);
jsonobj.put("state", "true");
jsonobj.put("msg", "登陆成功");
this.outJsonString(jsonobj.toString());
5.LoginService为接口,里面定义了一系列方法,loginService为其对象,而接口中就有刚调用的Loginmobile方法名,而其方法体在LoginserviceImpl中实现,LoginserviceImpl实现LoginService接口,方法体如下:
public class LoginserviceImpl implements Loginservice{
@Resource LoginDao loginD
public String Loginmobile(Map&String,Object& params){
return loginDao.Loginmobile(params);
6.LoginDao 也是接口类,他的实现类是LoginDaoImpl,LoginDao 类申明了一个Loginmobile方法名,其方法体在LoginDaoImpl中实现。具体实现为:
LoginDaoImpl类继承AbstactTemplateDao 类()
public class LoginDaoImpl extends AbstactTemplateDao implements LoginDao {
public String Loginmobile(Map&String,Object& params){
List&Map&String,String&& list = this.getSqlMapClientTemplate().queryForList("login.loginmobile",params);
return list.toString();
现在知道大致的流程了吧,总结一下:
一个登陆模块我们把它划在一个包下,不管是web还是手机登陆都放这里,一个登陆包下分四个分支,一个action层,一个service层(业务逻辑层),一个dao层(数据库操作层),一个Entry(实体类,对应数据库表) ,四个层次,如下图:
打箭头的代表要配置,所有的继承Baseaction的类以及各自的service实现类和dao的实现类都要在各自对应的文件中配置,比如loginaction就要在applicationContext-action中配置如下
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"&
name="loginAction" class="org.U9APP.login.action.LoginAction" scope="prototype"&&
dao的实现类也是一样,在applicationContext-dao中注册
&?xml version="1.0" encoding="UTF-8"?&
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"&
name="loginDao" class="org.U9APP.login.dao.LoginDaoImpl" /&
structs也有类似的配置,而之前说的web.xml中吧spring中下的四个文件配置了。sping中的applicationContext是用来配置ibatis的,上面有个图画错了哈,最后就是你写的接口的url是这样拼起来的。
http:192.168.0.100:8080/loginAction/startLogin.action?username=”123”&password=”123456”
192.168.0.100你电脑ip,8080tomcat端口号,loginAction为applicationContext-action中登陆所在类class=”org.U9APP.login.action.LoginAction”它的name值,startLogin为登陆类下的刚写的登陆方法名。action,?后为参数,usname为key,这个是web和手机对接key,123为用户名,123456为密码,这个key可以换成其他的字符串不过你要知其意思并且要和手机一直才能收到。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:原文地址:http://blog.csdn.net/u/article/details/
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!}

我要回帖

更多关于 java web服务器学习 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信