Saiba como criar um formulário HTML que usa o método HTTP POST
para enviar dados fornecidos pelos utilizadores para um servlet Java em execução no App Engine.
Antes de começar
Configure o ambiente de programação e crie o projeto do App Engine.
Criar um formulário
Crie um formulário HTML com JavaServer Pages (JSP).
O código JSP seguinte gera um formulário para criar uma publicação no blogue. Tem três campos de introdução de texto: title
, author
e content
, e um botão Save
que envia os dados para o servlet:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<div class="container">
<h2>
Create a new blog post
</h2>
<form method="POST" action="/create">
<div>
<label for="title">Title</label>
<input type="text" name="title" id="title" size="40" value="${fn:escapeXml(blog.title)}" class="form-control" />
</div>
<div>
<label for="author">Author</label>
<input type="text" name="author" id="author" size="40" value="${fn:escapeXml(blog.author)}" class="form-control" />
</div>
<div>
<label for="description">Post content</label>
<textarea name="description" id="description" rows="10" cols="50" class="form-control">${fn:escapeXml(blog.content)}</textarea>
</div>
<button type="submit">Save</button>
</form>
</div>
Este formulário envia os dados do formulário para o controlador no URL /create
. Deve usar a funcionalidade escapeXml
do JSP para contrariar ataques de scripting entre sites (XSS), conforme mostrado no fragmento de código. As instruções
para criar o controlador de formulários são apresentadas a seguir.
Tratamento de dados de formulários
Assim que o utilizador envia os dados do formulário, estes são processados por um processador de formulários. No fragmento abaixo, o controlador de formulários é um servlet denominado createBlogPost
:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.annotation.WebServlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
@WebServlet(name = "createBlogPost", value="/create")
public class createBlogPost extends HttpServlet {
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
PrintWriter out = resp.getWriter();
out.println(
"Article with the title: " + req.getParameter("title") + " by "
+ req.getParameter("author") + " and the content: "
+ req.getParameter("description") + " added.");
}
}
Tenha em atenção a anotação @WebServlet(name = "createBlogPost", value="/create")
,
que mapeia o servlet para o URI onde processa pedidos: /create
. Para os
programadores familiarizados com o tempo de execução do Java 7 do App Engine, esta anotação substitui
os mapeamentos que foram feitos anteriormente no ficheiro web.xml
.
Implementação no App Engine
Pode implementar a sua app no App Engine através do Maven.
Aceda ao diretório raiz do seu projeto e escreva:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Substitua PROJECT_ID pelo ID do seu Google Cloud projeto. Se o seu ficheiro pom.xml
já
especificar o seu
ID do projeto, não precisa de incluir a propriedade -Dapp.deploy.projectId
no
comando que executar.
Depois de o Maven implementar a sua app, é aberto automaticamente um separador do navegador de Internet na nova app. Para tal, escreva:
gcloud app browse
O que se segue?
Como extensão do processamento de dados do utilizador, pode querer usar o Cloud SQL, o Cloud Datastore ou o Cloud Storage para armazenar os dados: