Provavelmente seu Servlet está delegando a chamada para um metodo só! Dê uma olhada aí!
G
gsas_uspPJ
Bem, o servlet está abaixo (performTask é um método que apenas conecta com o BD):
Coloquei um sysout em cada método e na saída aparece doGet e doPost
publicclassConfig_ServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;protectedvoiddoGet(HttpServletRequestarg0,HttpServletResponsearg1)throwsServletException,IOException{System.out.println("doGet");performTask(arg0,arg1);}protectedvoiddoPost(HttpServletRequestarg0,HttpServletResponsearg1)throwsServletException,IOException{System.out.println("doPost");performTask(arg0,arg1);}protectedvoidperformTask(HttpServletRequestreq,HttpServletResponseres){try{Stringfilename=req.getParameter("filename");if(filename!=null){// TODO: Carregar o arquivo especificado em filename}// TODO: Carregar o histórico do BDtry{// Load the DB2 JDBC Type 2 Driver with DriverManagerClass.forName("COM.ibm.db2.jdbc.app.DB2Driver");Stringurl="jdbc:db2:TCC2";Stringuser="tcc";Stringpassword="tcc";Connectioncon=DriverManager.getConnection(url,user,password);}catch(ClassNotFoundExceptione){System.out.println("Not found");e.printStackTrace();}catch(Exceptione){System.out.println("Outra Exception");e.printStackTrace();}req.setAttribute("historico",newHistoricoBean());getServletContext().getRequestDispatcher("/config.jsp").forward(req,res);}catch(Exceptione){e.printStackTrace();}}
Agora ele ri de mim duas vezes: quando chama o doPost e depois quando chama o doGet.
Eu percebi que se eu usar o response.sendRedirect(“page”), o servlet é executado apenas uma vez. Mas aí eu tenho que setar os atributos no contexto ou na sessão, pq perco o request. O problema é que eu tenho que me preocupar em tirar esses atributos de lá depois.
Outra “vantagem” que o forward tem é que o endereço mostrado é o do servlet, já o redirect mostra o endereço atual.
Se alguém tiver uma luz serei muito grato.
Abraços.