Skip to content

Instantly share code, notes, and snippets.

@rustamli
Created August 25, 2012 17:04
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save rustamli/63fd6655d21ef5e1d2ef to your computer and use it in GitHub Desktop.
Crash Course Snippets

Crash Course Summary

Eclipse

Create Sample Project

  • Create sample project with "OptimaxTest" as project name and ox.test as package name
  • Copy Servlet file content to OptimaxTestServlet.java
  • Copy index.html to war

Important Files

  • war/WEB-INF/appengine-web.xml - App Engine settings (specify project name here for deployment)
  • war/WEB-INF/web.xml - web application setting add Servlet mappings here (more details)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Hello App Engine</title>
<link href="/css/style.css" rel="stylesheet" type="text/css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script>
$(function() {
$('#messages').load('/optimaxtest');
setInterval("$('#messages').load('/optimaxtest')", 1500);
})
</script>
</head>
<body>
<div id="messages">loading ...</div>
<form id="post-form" action="/optimaxtest" method="post">
<label for="author">Author:</label>
<input id="author" name="author">
<br>
<label for="text">Text:</label>
<textarea name="text" id="text"></textarea>
<br>
<input type="submit">
</form>
<br>
<img src="https://dl.dropbox.com/u/6434207/Optimax/logo-small.png">
</body>
</html>
package ox.test;
import java.io.IOException;
import javax.servlet.http.*;
import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.PreparedQuery;
import com.google.appengine.api.datastore.Query;
@SuppressWarnings("serial")
public class OptimaxTestServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Query q = new Query("Post");
PreparedQuery pq = datastore.prepare(q);
resp.setContentType("text/html ");
resp.getWriter().println("<h1>Posts</h1>");
for (Entity post : pq.asIterable()) {
String author = (String) post.getProperty("author");
String text = (String) post.getProperty("text");
resp.getWriter().println("<p><b>" + author + ": </b> " + text + "</p>");
}
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Entity post = new Entity("Post");
post.setProperty("author", req.getParameter("author"));
post.setProperty("text", req.getParameter("text"));
datastore.put(post);
resp.sendRedirect("/");
}
}
body {
margin: 10px;
background-color: #EEE;
font: 13px Arial, Helvetica, sans-serif;
}
label {
display: block;
float: left;
width: 70px;
padding: 4px;
font-weight: bold;
}
input {
padding: 3px;
}
textarea {
color: #06d;
}
input[type="submit"] {
margin: 10px 0 10px 78px;
padding: 5px;
font-weight: bold;
}
#post-form {
padding: 10px;
margin-top: 5px;
border: 1px solid #DCDCDC;
background: #e9f6fd;
background: -moz-linear-gradient(top, #e9f6fd 0%, #d3eefb 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e9f6fd), color-stop(100%,#d3eefb)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #e9f6fd 0%,#d3eefb 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #e9f6fd 0%,#d3eefb 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #e9f6fd 0%,#d3eefb 100%); /* IE10+ */
background: linear-gradient(to bottom, #e9f6fd 0%,#d3eefb 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e9f6fd', endColorstr='#d3eefb',GradientType=0 ); /* IE6-9 */
}
#messages {
padding: 10px;
background-color: #FFF;
border: 1px solid #DCDCDC;
}
#messages p {
padding: 10px;
margin: 5px;
border: 1px solid #DCDCDC;
border-radius: 10px;
background: #ffffff;
background: -moz-linear-gradient(top, #ffffff 0%, #e5e5e5 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e5e5e5)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* IE10+ */
background: linear-gradient(to bottom, #ffffff 0%,#e5e5e5 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e5e5e5',GradientType=0 ); /* IE6-9 */
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment