java的应用程序开发_开发一个Java应用程序(1)
开发一个Java应用程序(1)
App Engine上的Java Web应用程序通过Java Servlet标准接口与应用程序服务器交互。一个应用程序由一个或多个类组成,这些类都扩展自一个servlet基类。servlet是通过一个标准配置文件(叫做“部署描述符”)与URL映射起来的。当App Engine接收到一个请求时,首先会判断该使用哪个servlet类(根据URL和部署描述符),然后初始化该类,并调用这个servlet对象上的某个方法。
Java应用程序的所有文件(包括已编译的Java类、配置文件以及静态文件)都是以一种叫做Web应用程序档案(Web Application Archive,WAR)的标准目录结构组织起来的。WAR目录中的所有东西都会被部署到App Engine上去。WAR中的内容通常是在开发过程中由一组源文件生成的,你可以使用自动构建过程,也可以使用支持WAR的开发工具。
如果使用的是Eclipse IDE和GPlugin,则可以通过Web Application向导来创建新项目。在“File”菜单中,单击“New”,然后单击“Web Application Project”。在打开的窗口中,输入项目名(如Clock)和包名(如clock)。
取消“Use GWeb Toolkit”复选框的选中状态,并确保“Use GAE”复选框是选中的。( 如果选中了“GWT” 复选框, 则新项目在创建时会有一些初始文件。) 单击“Finish”即可创建该项目。
如果没有使用GPlugin for Eclipse,就要使用另一种办法来创建这些目录和文件了。如果对Java的Web开发已经很熟悉了,可以用你现有的工具和工序来生成最终的WAR。在本节余下的内容中,我们将假设该目录结构已经由GPlugin for Eclipse创建好了。
图2-8展示了该项目的文件结构,跟在Eclipse Package Explorer中显示的一样。
图2-8:一个新Java项目的结构,
跟Eclipse Package Explorer中所显示的一样
该项目的根目录(Clock)含有两个主要的子目录:src和war。src/目录所包含的是该项目全部的类文件,这是常见的Java包结构形式。根据clock的包路径,Eclipse将会在文件clock/ClockServlet.java中创建一个名为ClockServlet的servlet类。
war/目录所包含的是该应用程序完整的最终内容。Eclipse会自动编译src/中的源代码,并将编译后的类文件保存到war/WEB-INF/classes/中(默认情况下,该目录在Eclipse的Package Explorer中是不可见的)。Eclipse还会自动地将src/META-INF/中的内容复制到war/WEB-INF/classes/META-INF/。其他所有的东西都会被创建在war/目录中的指定位置。
下面,我们从一个简单的servlet开始构建咱们这个时钟应用程序,其功能就是显示当前时间。打开文件src/clock/ClockServlet.java(如果需要,应先创建),然后如示例2-10所示编辑其中的内容。
示例2-10:一个简单的Java servletpackage clock;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.SimpleTimeZone;
import javax.servlet.http.*;
@SuppressWarnings("serial")
public class ClockServlet extends HttpServlet {
public void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws IOException {
SimpleDateFormatfmt=newSimpleDateFormat
("yyyy-MM-dd hh:mm:ss.SSSSSS");
fmt.setTimeZone(new SimpleTimeZone(0, ""));
resp.setContentType("text/html");
PrintWriterout=resp.getWriter();
out.println("
The time is: " + fmt.format
(new Date()) + "
");
}
}
该servlet类继承自javax.servlet.http.HttpServlet,并为它所希望支持的所有HTTP方法重写了基类中的相应方法。为了能够处理HTTP GET请求,我们的这个servlet重写了doGet()方法。服务器在调用该方法时,将会以一个HttpServletRequest对象和一个HttpServletResponse对象作为参数。HttpServletRequest含有该请求相关的信息,比如URL、表单参数以及cookie等。而该方法则通过HttpServletResponse上的一系列方法来准备响应,如setContentType()和getWriter()等。当这个servlet方法退出时,AppEngine就会将响应发送出去。
为了告诉App Engine使用这个servlet来处理请求,我们还需要一个部署描述符。打开或创建文件war/WEB-INF/web.xml,如示例2-11所示修改其内容。
示例2-11:该web.xml文件(也就是部署描述符)将所有URL都映射到了ClockServlet上<?xmlversion ="1.0"encoding="utf-8"?>
web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
clock
clock.ClockServlet
clock
/*
【责任编辑:云霞 TEL:(010)68476606】
点赞 0
java的应用程序开发_开发一个Java应用程序(1)相关推荐
- 控制台编写JAVA程序教程_写一个java程序的步骤是什么?写java程序技巧
写Java程序是要按照步骤来的,这样才能写好一个java程序,那么接下来,我们就来给大家讲解一下写一个java程序的步骤是什么? (1)创建Java项目:"FileàNewàProjectà ...
- java 输出定位代码行_指定一个.java文件,输出其代码行数
CountList2.java//用来统计java代码行数 import java.io.BufferedReader; import java.io.File; import java.io.Fil ...
- java配合什么做前端_作为一个java程序员 ,前端的技术需要达到什么水平?
一个后端程序员,需要掌握前端技术吗? JSP时代 8年前,刚刚进入编程这个行业,当时的Web开发使用古老的SSH框架+JSP.那个时候,几乎所有的Java程序员都要懂得如何写JavaScript.如何 ...
- java做的桌面应用_把一个java web应用包装成桌面应用的简单做法
昨天玩h2的时候想起来的, 这年头把在线应用报装成桌面应用是越来越流行了,几年前做过类似的事情,简单介绍一下. 1. 选择一个嵌入的web 服务器和 数据库. web服务器我选择的是jetty,虽然t ...
- 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目
王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...
- java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器
java程序保护如何知识产权,特别提供一个java 开发的java 源代码级的混淆器 下载地址:http://yunpan.cn/QXhEcGNYLgwTD 运行方式:java -jar Encryp ...
- 用java实现一个计算器程序_1.2第一个java程序——hello world
第一个java程序--hello world 实现一个java程序,主要有三个步骤:1.编写源代码,2.编译源代码,3.运行.java的源代码必须先编译,然后才能由JVM解析执行.所以我们程序员第一步 ...
- 思考并实现以下程序功能:实现一个抢红包的程序 java
抢红包的程序 java 思考并实现以下程序功能:实现一个抢红包的程序. 可参考模拟微信抢红包的过程:假如当前红包是x元,参与抢红包的有y人,按时间先后顺序保证y人正好抢完x元红包,其中每人抢的红包数值 ...
- java虚拟机的生命周期_深入理解Java虚拟机——JVM的生命周期
package test; public class JVMTestLife { public static void main(String[] args) { new Thread(new Run ...
- SQL Server 2005 - 如何在预存程序中调用另外一个预存程序
要在一个预存程序中调用另外一个预存程序,可以使用下列两种方式之一进行调用: <?xml:namespace prefix = o /> EXECUTE <欲执行之预存程序的名称&g ...
最新文章
- 人工智能助力全国大学生智能车竞赛
- C++ lambda表达式
- 跨域解决方案之CORS
- 戴尔看好Ubuntu超越Windows的十个优势
- 家乡的楼房正在往高层发展
- pb retrieve时停止工作_大佬们挂在嘴边的PE、PB是什么?
- Java系列之雪花算法和原理
- jenkinsapi操作Jenkins,提示:No valid crumb was included in the request
- Python2 圆满落幕,Python 继续辉煌! | 原力计划
- UNIX 环境高级编程(七)—— 进程标识
- C语言读取图像像素坐标,OpenCL中读取image时的坐标
- 如何判断机器学习数据集是否是线性的?
- 第一章 语料库语言学基本知识
- 阿文PPT教程视频课程2019送PPT模板 我懂个P
- 新手入门|计算机科普
- 【新手福音】分享一个自己制作的机器学习工具集合
- kerberos开启kdc的debug日志
- FOP生成PDF中文乱码问题解决
- vscode插件快餐教程(3) - Diagnostic
- 第一性原理:戳中问题本质的人是怎么思考的?
热门文章
- 如何用Python发送通知到微信?
- SAP BTP 应用 mta.yaml 里的 sap-btp-project1-dest-content module
- 如何让SAP Spartacus ng build生成的JavaScript资源附带上store ID
- SAP Spartacus应用启用时导入的一些模块
- Angular 应用的Support package
- 执行SAP Hybris install.bat遇到JavaVersionChecker版本检测失败的问题
- Windows环境下,如何在Docker里运行SAP UI5应用
- SAP Hybris和Netweaver的租户隔离(Tenant isolation)机制设计
- SAP ABAP和Hybris Commerce的Sample数据
- SAP Cloud Platform上的WebIDE fullstack在哪里打开