<Chapter 2>2-2-2.开发Java应用(Developing a Java App)

App Engine的Java网络应用使用了Java Servlet标准接口来和应用服务器交互。一个应用由一个或多个servlet类组成,每个都扩展了(extend)servlet基类。使用一个叫做部署描述(deployment descriptor)的标准配置文件,也就是web.xml,Servlets被映射到URLs。当App Engine接受到一个Java应用请求时,它会根据URL和部署描述来决定使用哪个servlet类,实例化这个类,然后调用servlet对象中的恰当的方法。

Java应用所有的文件,包括编译的Java类,配置文件,静态文件,用一个叫做Web Application Archive或”WAR“的标准目录结构来管理。在WAR目录中的所有东西都被部署到App Engine上。通常在你的开发工作流程中使用一个自动化构建过程或可识别WAR的开发工具根据一组源代码文件来构建WAR的内容。

如果你使用带有Google插件的Eclipse IDE,你可以使用Web Application向导来创建一个新项目。单击Google下拉按钮,然后选择New Web Application Project。(可选择的是,从File菜单选择New,然后是Web Application Project)在这个打开的窗体中,输入一个项目名(比如Clock)和一个包名(比如clock)。

不勾选“Use Google Web Toolkit"复选框,并确保“Use Google App Engine”复选框被勾选。(如果你让GWT复选框被选中,这个新项目将会用GWT启动文件创建。这是很酷的,但是它超出了本章的范围)图2-8显示了创建Clock应用的完成后的对话框。单击Finish来创建这个项目。

如果你不使用Google Plugin for Eclipse,你需要另外创建这个目录和文件。如果你已经对Java网络开发很熟悉,你可以使用你已有的工具和处理(tools and processes)来生成最终的WAR。这个小节的剩余部分,我们假定你使用由Eclipse插件创建的目录结构。

图2-9显示了这个项目文件的结构,在Eclipse包浏览窗口中被描述了。

这个项目的根路径(Clock)包含两个主要的子目录:src和war。src/目录包含项目所有的类文件,并使用了Java包结构。在clock包路径中,Eclipse在文件clock/ClockServlet.java中创建了一个叫做ClockServlet的Servlet类的源代码。

war/目录包含应用的完整的最终内容(the complete final contents)。Eclipse从src/自动编译源代码并将编译了的类文件放到war/WEB-INF/classes/目录,在Eclipse的包浏览窗口中默认是隐藏的。Eclipse也自动拷贝src/META-INF/的内容到war/WEB-INF/classes/META-INF中。其他的所有内容,比如CSS或JavaScript文件,必须在war/目录的预定位置中被创建。

让我们用一个简单的显示当前时间的Servlet开始我们的时钟应用。打开并编辑src/clock/ClockServlet.java文件(有必要的话,创建它),给它类似于例2-9的内容。

例2-9.一个简单的Java servlet

package clock

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDataFormat;
import java.util.Date;
import java.util.SimpleTimeZone;
import javax.servlet.http.*;

@SuppressWarning("serial")
public class ClockServlet extends HttpServlet{
    public void doGet(HttpServletRequest req,HttpServletReponse resp)
                     throw IOException{
              SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSSSSS");
              fmt.setTimeZone(new SimpleTimeZone(0,"");

              resp.setContentType("text/html");
              PrintWriter out = resp.getWriter();
              out.println("<p>The time is: " + fmt.format(new Date()) + "</p>");
    }
}
时间: 2024-10-10 08:40:49

<Chapter 2>2-2-2.开发Java应用(Developing a Java App)的相关文章

《连载 | 物联网框架ServerSuperIO教程》1.4种通讯模式机制。附小文:招.NET开发,结果他转JAVA了,一切都是为了生活

参考文章: 1.SuperIO通讯框架介绍,含通信本质 一.感慨 上大学的时候,没有学过C#,花了5块钱在地坛书市买了一本教程,也就算是正式入行了.后来深造,学过JAVA,后来迫于生计,打算转JAVA了.后来考虑考虑,自己写的框架还是有很大发展余地,后来还是在C#的阵地上坚持了下来.从一开始的雏形,到SuperIO的产品化,再到服务器端的ServerSuperIO,也是慢慢演化而来.后期打算把ServerSuperIO移植到嵌入式设备上,以及完善开发文档.本来不想提这些,但是今天打算招一个C#开

微信开发处理超时5s(java),异步发送客服消息

在微信开发中我们会经常遇到在处理业务逻辑超过5s的情况,在超时时,微信会重新请求,总共请求三次,这样就会导致一系列的问题,怎样避免这些问题呢? 通过研究发现在微信官方文档清楚写着,如下: 假如服务器无法保证在五秒内处理并回复,必须做出下述回复,这样微信服务器才不会对此作任何处理,并且不会发起重试(这种情况下,可以使用客服消息接口进行异步回复),否则,将出现严重的错误提示.详见下面说明: 1.直接回复空串(指字节长度为0的空字符串,而不是XML结构体中content字段的内容为空) 2.直接回复s

【JAVA】使用Java SPI ServiceLoader进行Java应用插件模块化开发

背景:在进行业务定制时需要考虑不同接口的服务实现,每个局点所要求的接口大体都不一致,要求接口服务能够插件化方式提供: 方案分析: 1)采用OSGI框架进行开发,但是考虑到OSGI的框架太重,需要引入的东西比较多,放弃了该方案: 2)采用Java class loader动态加载外部jar机制,动态加载定制的接口服务类,这种方式实现比较复杂,需要完成指定接口服务类的文件加载,同时需要能查找到所有接口服务类,作为备选方案: 3)使用java service provider interface(SP

[JAVA]十四种Java开发工具点评

作者:兄弟连 在计算机开发语言的历史中,从来没有哪种语言象Java那样受到如此众多厂商的支持,有如此多的开发工具,Java菜鸟们如初入大观园的刘姥姥,看花了眼,不知该何种选择.的确,这些工具各有所长,都没有绝对完美的,就算是老鸟也很难做出选择.在本文中我简要介绍了常见的十四种Java开发工具的特点,管中窥"器",希望能对大家有所帮助. 1.JDK (Java Development Kit) 2.Java Workshop 3.NetBeans 与Sun Java Studio 5 4

Amoeba是一个类似MySQL Proxy的分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项目

http://www.cnblogs.com/xiaocen/p/3736095.html amoeba实现mysql读写分离 application  shang  2年前 (2013-03-28)  4095浏览  0评论 说明:要实现mysql的主从读写分离,目前主要有以下几种方案:1.通过程序实现,网上很多现成的代码,比较复杂,如果添加从服务器要更改多台服务器的代码.2.通过mysql-proxy来实现,由于mysql-proxy的主从读写分离是通过lua脚本来实现,目前lua的脚本的开

[java基础学习笔记]Java8SE开发环境搭建、第一个Java Hello World、Java程序的编译与执行

本文作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/25745945 主要内容: ---------------------------------------------------| 1.JDK的下载与安装                            | 2.编写第一个java程序HelloWorld     | 3.编译执行HelloWorld                      

集成框架 javaweb开发平台ssmy_m(生成代码) java struts2 mybatis spring maven jquery

网页地址 http://blog.csdn.net/lpy3654321/article/details/31841573 项目设想,在项目开发中,我们的开发者大多数时间都在反复开发 相同的keyword,相同的语法. 但就在这种情况下还会常常发生语法的错误,并且每一个开发者的代码风格不同. 其它人员阅读困难.新人的学习成本也会添加. 这些问题会浪费非常多时间,也会影响到开发者的心情,和程序质量. 由这些问题我想的解决方法是 <代码生成工具> . 代码生成能够解决上述问题,加强约定. 对于普通

【小白的java成长系列】——java ide 开发工具eclipse的操作

今天看了一下自己的博客文章,里面的内容还是比較杂的,有好多技术,有好多语言,都没有突出自己的强项,能够说,从博客里面,看不出我究竟是做哪块的..加上今天被授予了博客准专家勋章,自己想了一下,还是得梳理一下自己的知识点,事实上我是做java开发,眼下职位是java高级开发project师. 今天来说说java的IDE神器--eclipse. 1.下载地址:http://www.eclipse.org/downloads/ 前提是你要安装好jdk,參照http://blog.csdn.net/ens

从Android到iOS开发——(1)、objective-c与java语法对比

从Android到iOS开发--(1).objective-c与java语法 对比 从6月开始,因为有iOS项目要做,就开始了iOS开发之旅,截止今天,已经做了2个项目,给我的感受是iOS开发整体要比Android简单,但是开发细节上两者却又同样的烦恼.那么要想开发iOS,那么到底选择objective-c or swift,我的建议是前者,后者可以在swift2.0和xcode7 以后大家去学习会比较好些.好了,不废话了,下面咱们来看下objective-c和java语法上的比较,希望能让ja