Vamos por partes
Servlet
package br.com.guj.exemplos;
public class MinhaServlet extends HttpServlet {
/*public void execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
}*/
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
// aqui é feito o tratamento de métodos GET do HTTP. GET é utilizado por padrão para ler recursos que se encontram no servidor.
// Exemplo : Clica em um link em uma página.
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
// aqui é feito o tratamento de métodos GET do HTTP. GET é utilizado por padrão para trazer recursos que se encontram no servidor.
}
// também existem outros métodos HTTP, como PUT, DELETE, OPTIONS, HEAD, e outros, cada um com doPut, doDelete, etc, para tratá-los.
// http://en.wikipedia.org/wiki/HTTP#Request_methods
web.xml:
<servlet>
<description></description>
<servlet-name>XPTOHelloWorld</servlet-name> <!-- servlet-name é um nome interno dado para a servlet, pode ser qqr coisa -->
<servlet-class>br.com.guj.exemplos.MinhaServlet</servlet-class> <!-- servlet-class é o nome completo da classe que vai tratar as requisições -->
</servlet>
<servlet-mapping>
<servlet-name>XPTOHelloWorld</servlet-name> <!-- servlet-name é deve ser o mesmo nome privado da servlet -->
<url-pattern>minhaurl</url-pattern> <!-- url-pattern é o endereço público na web entrar na servlet -->
</servlet-mapping>
OBS: url-pattern é usada em conjunto com o context-path configurado da aplicação no servidor, exemplos abaixo.
JSP /caminho/minhapagina.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<form action="/minhaurl" method="POST"> <!-- com method POST, vai cair no método doPost da servlet -->
Somar valores<br>
campo1 <input type="text" name="campo1"><br>
campo2 <input type="text" name="campo2"><br>
<input type="button" value="calcular" >
</form>
Resultado: $resultado
<a href="/minhaurl">Meu link</a> <!-- links usam GET, que caem no método doGet da servlet -->
<a href="/minhaurl?campo1=12345&campo2=67890">Meu link com argumentos</a> <!-- passando os parâmetros campo1 e campo2 via GET, nos links -->
<!-- Nos exemplos acima, context-path era vazio. Caso o context-path seja "guj", os links agora são: -->
<a href="/guj/minhaurl">Meu link no GUJ</a>
<!-- Obs: O url-pattern no web.xml continua sendo somente minhaurl -->
</body>
</html>
doPost implementado:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
String campo1 = request.getParameter("campo1"); // caso o parâmetro não tenha sido passado, retorna null.
String campo2 = request.getParameter("campo2");
int a = Integer.parseInt(campo1); // caso não esteja no formato certo, mesmo tendo um espaço a mais passado, vai dar exceção de formatação.
int b = Integer.parseInt(campo2);
int soma = a + b;
request.setAttribute("resultado", soma); // ou new Integer(soma), ou qqr objeto que tenha um método toString.
String pagina = "/caminho/minhapagina.jsp"; // caminho para a JSP dentro do servidor
request.getRequestDispatcher(pagina).forward(request, response);
}