Olá pessoal!
Criei uma aplicação com JSP e servlet, mas ao clicar nos botões de incluir produto, alterar produto e excluir produto, nada acontece, segue o código:
Classe incProduto.java
<div>
<form name="form1" method="post" action="/ControlePdt">
<p class="esquerda">Descrição <input
type="text"
name="descricao"
size="40"
maxlength="40"
value="${ param.descricao}"></p>
Quantidade <input
type="text"
name="quantidade"
size="5"
maxlength="5"
value="${param.quantidade }">
<p class="esquerda">Estoque <input
type="text"
name="estoque"
size="5"
maxlength="5"
value="${param.estoque }"></p>
<input type="hidden" name="cmd" value="inc" />
</form>
<div>
<button
onclick="document.getElementById('form1').submit();">Incluir Produto</button>
<button
onclick="document.location.href='cadastro.jsp';">Retornar</button>
O servlet ControlePdt.java
public class ControlePdt extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/* Instancia objeto de ProdutoDao */
ProdutoDAO produtoDAO = new ProdutoDAO();
/* Instancia objeto de modelo de Produto */
Produto produto = new Produto();
/* Cria objeto despachante de requisição */
RequestDispatcher rd = null;
/*================================================================
* Primeira parte: executa o método validar, através de uma estru-
* tura "try-catch-finally", para verfificar se os dados enviados
* estão corretos. Se estiver tudo OK (validar retornou "true",
* executa o if do try. Caso contrário, executa o catch, cria
* ojeto com mensagem de erro e executa de novo a view que chamou
* esta classe controladora.
=================================================================*/
try {
if ( validar( request )){
//produto.setCodigo(Integer.parseInt(request.getParameter("codigo")));
produto.setDescricao(request.getParameter("descricao"));
produto.setQuantidade(Integer.parseInt(
request.getParameter("quantidade")));
produto.setEstoque(Integer.parseInt(request.getParameter("estoque")));
/* Só coloca valor em codigo se for alteraçào ou
exclusão */
if ( request.getParameter("codigo") != null )
produto.setCodigo(Integer.parseInt(
request.getParameter("codigo")));
}
}
catch ( ExcecaoOblivion ex){
/* Se entrou no catch, algum erro aconteceu (ver método
validar ao final desta classe). A seguir, é criado o
objeto "erro", contendo a exceção lançada no método validar. */
request.setAttribute( "erro", ex);
/* Verifica qual formulário acionou esta classe, e o executa de
novo, desta vez enviando a mensagem de erro */
if ( request.getParameter("cmd").equals("inc"))
rd = request.getRequestDispatcher("/incProduto.jsp");
else if ( request.getParameter("cmd").equals("alt"))
rd = request.getRequestDispatcher("/altProduto.jsp");
else if ( request.getParameter("cmd").equals("exc"))
rd = request.getRequestDispatcher("/excProduto.jsp");
/* Executa o formulário definido nos ifs acima */
rd.forward( request , response);
}
/*===============================================================
* Segunda parte: se chegar aqui, significa que nenhum erro
* foi encontrado pelo método validar. Então, o programa verifica
* qual a ação que deve ser executada (inclusão, alteração ou
* exclusão), testando o campo invisível de formulário enviado
* (cmd).
================================================================*/
if ( request.getParameter("cmd").equals("inc")) {
/*
* try-catch-finally de INCLUSÃO (usando método incluir
* do objeto produtoDAO).
*/
rd = request.getRequestDispatcher("/incProduto.jsp");
try {
produtoDAO.incluir(produto);
Mensagem mens = new Mensagem();
mens.setMensagem("Inclusão realizada com sucesso!");
request.setAttribute( "msg" , mens );
}
catch (ExcecaoOblivion ex) {
request.setAttribute("erro" , ex );
}
finally {
rd.forward( request , response);
}
}
if ( request.getParameter("cmd").equals("alt")) {
/*
* try-catch-finally de ALTERAÇÃO (usando método alterar
* do objeto produtoDAO).
*/
rd = request.getRequestDispatcher("/altProduto.jsp");
try {
produtoDAO.alterar(produto);
Mensagem mens = new Mensagem();
mens.setMensagem("Alteração realizada com sucesso!");
request.setAttribute( "msg" , mens );
}
catch (ExcecaoOblivion ex) {
request.setAttribute("erro" , ex );
}
finally {
rd.forward( request , response);
}
}
if ( request.getParameter("cmd").equals("exc")) {
/*
* try-catch-finally de EXCLUSÃO (usando método excluir
* do objeto produtoDAO).
*/
rd = request.getRequestDispatcher("/excProduto.jsp");
try {
produtoDAO.excluir(produto);
Mensagem mens = new Mensagem();
mens.setMensagem("Exclusão realizada com sucesso!");
request.setAttribute( "msg" , mens );
}
catch (ExcecaoOblivion ex) {
request.setAttribute("erro" , ex );
}
finally {
rd.forward( request , response);
}
}
/* Fim do método processRequest */
}
private boolean validar( HttpServletRequest request )
throws ExcecaoOblivion {
/*===================================================================
* Este método verifica se houve algum erro nos dados enviados para
* a classe controladora. Toda classe controladora terá este método.
* Cada campo deve ser testado na ordem em que aparece na view. Alguns
* campos podem ter mais de um teste.
* Se nenhum erro acontecer, o método retorna "true". Em caso de erro,
* uma exceção do tipo "excecaoOblivion" é lançada.
* ATENÇÃO: este método é chamado pelo "try-catch-finally" do método
* processRequest desta classe (ver acima).
====================================================================*/
if ( request.getParameter("descricao").length() == 0 )
throw new ExcecaoOblivion("Descrição do produto não pode ficar em branco",0);
try {
Integer.parseInt(request.getParameter("quantidade"));
}
catch (NumberFormatException ex){
throw new
ExcecaoOblivion("Quantidade só pode receber valores númericos",0);
}
if ( request.getParameter("quantidade").length() <= 0 )
throw new ExcecaoOblivion("Quantidade deve ser maior que zero",1);
try {
Integer.parseInt(request.getParameter("quantidade"));
}
catch (NumberFormatException ex){
throw new
ExcecaoOblivion("Quantidade só pode receber valores númericos e acima de zero",1);
}
if ( Integer.parseInt( request.getParameter("estoque")) < 1)
throw new
ExcecaoOblivion("Estoque deve ser maior que zero",2);
try {
Integer.parseInt(request.getParameter("estoque"));
}
catch (NumberFormatException ex){
throw new
ExcecaoOblivion("Estoque deve ser acima de zero",2);
}
return true;
}
O web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>controle.Login</servlet-class>
</servlet>
<servlet>
<servlet-name>ControlePdt</servlet-name>
<servlet-class>controle.ControlePdt</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ControlePdt</servlet-name>
<url-pattern>/ControlePdt</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
</web-app>
Me disseram que poderia ser algum conflito devido ao meu navegador que é o Firefox 3.0.15, o que eu acho estranho já que é um browser que respeita as normas w3c.
Alguém poderia dar uma força?
Obrigado desde já pela ajuda.