Distopic
Distopic

Reputation: 737

Get and post in the same Servlet

I have a doubt, in my code I need to work with a get and a post method because in the get I pass some info of one page using Window.open, and in the post I return the value of some field that I obtain with my ETXjs code.

First of all I receive the field that I obtain with my get method, and later the fields where I work in the EXTjs, then when I work with that field to do a consult I need to use the param obtained by get.

Is it possible to do something? This is my code:

@WebServlet("/ServletTipoPapel")
public class ServletTipoPapel extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletTipoPapel() {
        super();
        // TODO Auto-generated constructor stub
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //Here i work with my get param Usuario.
        String usuario = request.getParameter("usuario");
        JOptionPane.showMessageDialog( null, "El usuario que usa esto es " + usuario );
        tratarPeticionesEntrantes(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        tratarPeticionesEntrantes(request,response);
    }

    private void tratarPeticionesEntrantes(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        if(request.getParameter("Funcionalidad")==null || request.getParameter("Funcionaldiad")==""){
            RequestDispatcher rd=request.getRequestDispatcher("/jsp/PantallasGestion/tipoPapel.jsp");
            rd.forward(request,response);
        }else{
            JSONObject json=tratarPeticion(request);
            System.out.println(json.toJSONString());
            PrintWriter escritorRespuesta=response.getWriter();
            escritorRespuesta.println(json.toJSONString());
            //escritorRespuesta.println();
            escritorRespuesta.flush();
            escritorRespuesta.close();
        }
    }

    //JSON

    private JSONObject tratarPeticion(HttpServletRequest request){
        JSONObject respuesta=null;
        String parametroFuncionalidad=request.getParameter("Funcionalidad");
        System.out.println(request.getParameter("Funcionalidad"));

        if(parametroFuncionalidad!=null && parametroFuncionalidad!=""){
            if(parametroFuncionalidad.equalsIgnoreCase("CONSULTA")){
                respuesta=tratarPeticionConsulta(request);
            }else if(parametroFuncionalidad.equalsIgnoreCase("MODIFICAR")){
                respuesta=tratarPeticionModificacion(request);
            }else if(parametroFuncionalidad.equalsIgnoreCase("INSERTAR")){
                respuesta=tratarPeticionAlta(request);
                System.out.println("aqui entra");
            }else if(parametroFuncionalidad.equalsIgnoreCase("ELIMINAR")){
                respuesta=tratarPeticionBaja(request);  
            }else{
            }
        }
        return respuesta;
    }

    private JSONArray tipoPapelesToArray(ArrayList<TipoPapel> papeles){
        JSONArray list = new JSONArray();
        for(int i=0;i<papeles.size();i++){
            JSONObject elemento1=new JSONObject();
            elemento1.put("TIPPAP",papeles.get(i).getTipoPapel());
            elemento1.put("TAMPAP",papeles.get(i).getTamanioPapel());
            elemento1.put("INDPAR",papeles.get(i).getIndicadorCanal());
            elemento1.put("NUMOPTDO",papeles.get(i).getNumOptimoPaginas());
            elemento1.put("INDCAR",papeles.get(i).getIndicadorCaratula());
            elemento1.put("FORCAR",papeles.get(i).getFormularioCaratula());
            elemento1.put("VERCAR",papeles.get(i).getVersionCaratula());
            elemento1.put("FORSEPIN",papeles.get(i).getFormularioSeparadorInicial());
            elemento1.put("VERSEPIN",papeles.get(i).getVersionSeparadorInicial());
            elemento1.put("FORSEPFI",papeles.get(i).getFormularioSeparadorFinal());
            elemento1.put("VERSEPFI",papeles.get(i).getVersionSeparadorFinal());
            elemento1.put("NUMFICSP",papeles.get(i).getFicheroSpool());
            elemento1.put("DESTIPPA",papeles.get(i).getDescripcionTipoPapel());
            elemento1.put("TIP_TRABAJO",papeles.get(i).getTipoTrabajo());
            elemento1.put("FECALT",papeles.get(i).getFechaAlta());
            elemento1.put("FECMOD",papeles.get(i).getFechaModificacion());
            elemento1.put("TERMOD",papeles.get(i).getUsuarioModificacion());
            elemento1.put("HORMOD",papeles.get(i).getHoraModificacion());
            list.add(elemento1);
        }
        return list;
    }

    //PARTE DE ALTA

    private JSONObject tratarPeticionAlta(HttpServletRequest request){
        System.out.println("aqui tambien");
        TipoPapelDAO papelDAO=new TipoPapelDAO();
        String [] camposAObtener={"TODOS"};
        String entorno="DESARROLLO";
        ArrayList<TipoPapel> papeles=papelDAO.obtenerParaAlta(obtenerCamposParaAlta(request),entorno);
        //System.out.println("aqui tambien despues 2");
        JSONObject respuesta = new JSONObject();
        JSONArray list = tipoPapelesToArray(papeles);
        respuesta.put("TiposPapel",list);
        //System.out.println("aqui tambien despues 3" + respuesta);
        return respuesta;
    }

    private String[] obtenerCamposParaAlta(HttpServletRequest request){
        ArrayList<String> elementosAux=new ArrayList<String>();
        int contador1 = 0;
        int contador2 = 0;
        int contador3 = 0;
        int contador4 = 0;
        int contador5 = 0;
        int contador6 = 0;
        int contador7 = 0;
        int contador8 = 0;
        int contador9 = 0;
        int contador10 = 0;
        int contador11 = 0;
        int contador12 = 0;
        int contador13 = 0;
        int contador14 = 0;

        if(request.getParameter("DPTipoPapel")!=null && request.getParameter("DPTipoPapel").trim()!="")
        {
            elementosAux.add("TIPPAP~"+request.getParameter("DPTipoPapel"));
            contador1 = 1;
        }
        if (contador1==0)
        {
            elementosAux.add("TIPPAP~NULL");
        }

        if(request.getParameter("DPTamPapel")!=null && request.getParameter("DPTamPapel").trim()!="")
        {
            elementosAux.add("TAMPAP~"+request.getParameter("DPTamPapel"));
            contador6 = 1;
        }
        if (contador6==0)
        {
            elementosAux.add("TAMPAP~NULL");
        }

        if(request.getParameter("DPIndicadorSoD")!=null && request.getParameter("DPIndicadorSoD").trim()!="")
        {
            elementosAux.add("INDPAR~"+request.getParameter("DPIndicadorSoD"));
            contador2 = 1;
        }
        if (contador2==0)
        {
            elementosAux.add("INDPAR~NULL");
        }

        if(request.getParameter("DPNumOptimo")!=null && request.getParameter("DPNumOptimo").trim()!="")
        {
            elementosAux.add("NUMOPTDO~"+request.getParameter("DPNumOptimo"));
            contador7 = 1;
        }
        if (contador7==0)
        {
            elementosAux.add("NUMOPTDO~NULL");
        }

        if(request.getParameter("DPCaratula")!=null && request.getParameter("DPCaratula").trim()!="")
        {
            elementosAux.add("INDCAR~"+request.getParameter("DPCaratula"));
            contador3 = 1;
        }
        if (contador3==0)
        {
            elementosAux.add("INDCAR~NULL");
        }

        if(request.getParameter("DPFormularioCaratula")!=null && request.getParameter("DPFormularioCaratula").trim()!="")
        {
            elementosAux.add("FORCAR~"+request.getParameter("DPFormularioCaratula"));
            contador8 = 1;
        }
        if (contador8==0)
        {
            elementosAux.add("FORCAR~NULL");
        }

        if(request.getParameter("DPVersCaratula")!=null && request.getParameter("DPVersCaratula").trim()!="")
        {
            elementosAux.add("VERCAR~"+request.getParameter("DPVersCaratula"));
            contador4 = 1;
        }
        if (contador4==0)
        {
            elementosAux.add("VERCAR~NULL");
        }

        if(request.getParameter("DPFinicial")!=null && request.getParameter("DPFinicial").trim()!="")
        {
                elementosAux.add("FORSEPIN~"+request.getParameter("DPFinicial"));
                contador10=1;
        }
        if (contador10==0)
        {
            elementosAux.add("FORSEPIN~NULL");
        }

        if(request.getParameter("DPVinicial")!=null && request.getParameter("DPVinicial").trim()!="")
        {
            elementosAux.add("VERSEPIN~"+request.getParameter("DPVinicial"));
            contador11=1;
        }
        if (contador11==0)
        {
            elementosAux.add("VERSEPIN~NULL");
        }

        if(request.getParameter("DPFfinal")!=null && request.getParameter("DPFfinal").trim()!="")
        {
            elementosAux.add("FORSEPFI~"+request.getParameter("DPFfinal"));
            contador12=1;
        }
        if (contador12==0)
        {
            elementosAux.add("FORSEPFI~NULL");
        }

        if(request.getParameter("DPVfinal")!=null && request.getParameter("DPVfinal").trim()!="")
        {
            elementosAux.add("VERSEPFI~"+request.getParameter("DPVfinal"));
            contador13=1;
        }
        if (contador13==0)
        {
            elementosAux.add("VERSEPFI~NULL");
        }

        if(request.getParameter("DPSpool")!=null && request.getParameter("DPSpool").trim()!="")
        {
            elementosAux.add("NUMFICSP~"+request.getParameter("DPSpool"));
            contador5 = 1;
        }
        if (contador5==0)
        {
            elementosAux.add("NUMFICSP~NULL");
        }

        if(request.getParameter("DPDescripcion")!=null && request.getParameter("DPDescripcion").trim()!="")
        {
            elementosAux.add("DESTIPPA~"+request.getParameter("DPDescripcion"));
            contador9 = 1;
        }
        if (contador9==0)
        {
            elementosAux.add("DESTIPPA~NULL");
        }

        if(request.getParameter("DPTipoTrabajo")!=null && request.getParameter("DPTipoTrabajo").trim()!="")
        {
            elementosAux.add("TIP_TRABAJO~"+request.getParameter("DPTipoTrabajo"));
            contador14 = 1;
        }
        if (contador14==0)
        {
            elementosAux.add("TIP_TRABAJO~NULL");
        }

        //Here i must work with USUARIO because when i update a register i need to put the value of the user that do that action
        String [] elementos=new String[elementosAux.size()];
        return elementosAux.toArray(elementos);
    }
}

Upvotes: 0

Views: 4496

Answers (3)

Distopic
Distopic

Reputation: 737

I have decided to pass the var to my jsp :

              protected void doGet(HttpServletRequest request, HttpServletResponse response)         throws ServletException, IOException 
{
    String usuario = request.getParameter("usuario");
    JOptionPane.showMessageDialog( null, "El usuario que usa esto es " + usuario );

    request.setAttribute("usuario",usuario);
    RequestDispatcher rd=request.getRequestDispatcher("/jsp/PantallasGestion/tipoPapel.jsp");
    rd.forward(request,response);
}

Then in my jsp i call my EXTjs where the return values will call to my POST method in my servlet, i have now only the problem that i dont know how to pass one value from a jsp to a js(EXTJS)... is possible that i call directly my EXTjs and dont use jsp?

Upvotes: 0

can I define both doGet ans doPost ?

Yes

Can I Call both at once from one single request from browser

No

one thing if I get your problem correct is : make an ajax call from your page which will make post call to your sevlet

but before we can suggest something very precise , be clear on your question , what and when do you want to do with your request

Upvotes: 0

jwenting
jwenting

Reputation: 5663

Sure you can have a servlet do different things depending on the http method used to call it (get, post, etc.) but it quickly leads to confusion and you're usually better off using separate servlets for each, and maybe having them all respond in kind to both methods if so desired.

What you can NOT do is go back from the server to the client and back again to the servlet within the context of a single request.

If that doesn't clarify your confusion you will have to read up some more on servlets and http communication in general.

Upvotes: 3

Related Questions