Avatar billede pablopablo Nybegynder
07. november 2003 - 15:19 Der er 1 kommentar og
1 løsning

Hjælp til overførsel af parametre til servlet-klasse

Hejsa...som i måske kan se prøver jeg her at lave et lille servlet projekt...men det driller ;(

Jeg tror jeg har gennemskuet hvad problemet er, men jeg kan ikke finde nogen løsning på det!

Problem : Jeg ønsker at sende 7 ekstra parametre fra valider.java over til SAMME instans af servlet1-klassen, som RequestDispatcher rd forward'er response og request objektet til...men netop pga. rd sender respone/request til servlet1, kan jeg ikke modtage de 7 ekstra parametre via samme metode? De 7 parametre kommer fra databasen og de skal sendes til servlet1-klassen for at blive sat ind i hver sit html-tekstfelt...

lige nu har prøvet at gøre det på en meget alternativ måde, fordi jeg ikke kender den "rigtige" vej...men jeg tror stadig at jeg arb. på 2 forskellige instanser af servlet1-klassen og det er derfor det ikke virker...!?

//---------------------INDEX.HTM---------------------------

package mypackage1;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.PrintWriter;
import java.io.IOException;
import javax.naming.*;
import java.sql.*;
import javax.sql.*;
import oracle.jdbc.driver.*;

public class Valider extends HttpServlet
{
  private static final String CONTENT_TYPE = "text/html; charset=windows-1252";

  public void init(ServletConfig config) throws ServletException
  {
    super.init(config);
  }

  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
    response.setContentType(CONTENT_TYPE);
   

    Connection conn=null;;
     
      try
    {
        Class.forName("oracle.jdbc.driver.OracleDriver");
    }
    catch(ClassNotFoundException e){//out.println(e);
    }

    try
    {
            conn = DriverManager.getConnection("jdbc:oracle:thin:@delfi2.lyngbyes.dk:1521:LUC","marbak3","marbak3");      
    }
    catch(SQLException sqle)
    {
      //out.println(sqle);
    }   
     
    String bruger=request.getParameter("bruger");//fra tekstfelterne!
    String kode=request.getParameter("kode");//fra tekstfelterne!
    PreparedStatement pstmt=null;
    ResultSet res=null;

    try
    {
        pstmt=conn.prepareStatement("select * from kunde where brugernavn ='"+bruger+"'");
                           
      res = pstmt.executeQuery();
      //out.println("  1  ");

      while(res.next())//for hvér rækker som matcher select-statementet...
      {   
        //out.println(" 2  ");
        String rækkekode= res.getString("adgangskode");
        String rækkenavn= res.getString("brugernavn");
       
        if(rækkekode.equals(kode))//Hvis koden i db matcher koden som brugerne har indtastet...
        {
        Servlet1 s1;
        s1.test(rækkenavn);
          //du er logget ind!!
          RequestDispatcher rd;//et interface, dvs. man får nogle metoder til rådighed - et objekt som kan finde andre objekter fx. JSP-sider eller andre servletter
          rd = this.getServletContext().getRequestDispatcher("/servlet1");//initialire R.D.O'et, samt fortæller HVOR objekterne skal forwardes til...
          rd.forward(request,response);//R.D.O. sender nu request og response objektet videre til servlet1-klassen
         
      }
        res.close();
        pstmt.close();
      }
    }
   
    catch(SQLException sqle)
    {
            System.out.println("Brugernavn og/eller adgangskode er ugyldigt!"+sqle);
      }
        RequestDispatcher rd;//et interface, dvs. man får nogle metoder til rådighed - et objekt som kan finde andre objekter fx. JSP-sider eller andre servletter
        rd = this.getServletContext().getRequestDispatcher("/fejllogin.htm");//initialire R.D.O'et, samt fortæller HVOR objekterne skal forwardes til...
        rd.forward(request,response);
  }
}

//---------------------VALIDER.JAVA------------------------

package mypackage1;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.PrintWriter;
import java.io.IOException;
import javax.naming.*;
import java.sql.*;
import javax.sql.*;
import oracle.jdbc.driver.*;

public class Valider extends HttpServlet
{
  private static final String CONTENT_TYPE = "text/html; charset=windows-1252";

  public void init(ServletConfig config) throws ServletException
  {
    super.init(config);
  }

  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
    response.setContentType(CONTENT_TYPE);
   

    Connection conn=null;;
     
      try
    {
        Class.forName("oracle.jdbc.driver.OracleDriver");
    }
    catch(ClassNotFoundException e){//out.println(e);
    }

    try
    {
            conn = DriverManager.getConnection("jdbc:oracle:thin:@delfi2.lyngbyes.dk:1521:LUC","marbak3","marbak3");      
    }
    catch(SQLException sqle)
    {
      //out.println(sqle);
    }   
     
    String bruger=request.getParameter("bruger");//fra tekstfelterne!
    String kode=request.getParameter("kode");//fra tekstfelterne!
    PreparedStatement pstmt=null;
    ResultSet res=null;

    try
    {
        pstmt=conn.prepareStatement("select * from kunde where brugernavn ='"+bruger+"'");
                           
      res = pstmt.executeQuery();
      //out.println("  1  ");

      while(res.next())//for hvér rækker som matcher select-statementet...
      {   
        //out.println(" 2  ");
        String rækkekode= res.getString("adgangskode");
        String rækkenavn= res.getString("brugernavn");
       
        if(rækkekode.equals(kode))//Hvis koden i db matcher koden som brugerne har indtastet...
        {
        Servlet1 s1 = new Servlet1();
        s1.test(rækkenavn);
          //du er logget ind!!
          RequestDispatcher rd;//et interface, dvs. man får nogle metoder til rådighed - et objekt som kan finde andre objekter fx. JSP-sider eller andre servletter
          rd = this.getServletContext().getRequestDispatcher("/servlet1");//initialire R.D.O'et, samt fortæller HVOR objekterne skal forwardes til...
          rd.forward(request,response);//R.D.O. sender nu request og response objektet videre til servlet1-klassen
         
      }
        res.close();
        pstmt.close();
      }
    }
   
    catch(SQLException sqle)
    {
            System.out.println("Brugernavn og/eller adgangskode er ugyldigt!"+sqle);
      }
        RequestDispatcher rd;//et interface, dvs. man får nogle metoder til rådighed - et objekt som kan finde andre objekter fx. JSP-sider eller andre servletter
        rd = this.getServletContext().getRequestDispatcher("/fejllogin.htm");//initialire R.D.O'et, samt fortæller HVOR objekterne skal forwardes til...
        rd.forward(request,response);
  }
}

//---------------------SERVLET1.JAVA-----------------------

package mypackage1;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.PrintWriter;
import java.io.IOException;

public class Servlet1 extends HttpServlet
{
  private static final String CONTENT_TYPE = "text/html; charset=windows-1252";
  public String navn="";

  public void init(ServletConfig config) throws ServletException
  {
    super.init(config);
  }

  public void test(String rækkenavn)
  {
    navn=rækkenavn;
    System.out.println(navn+"2");
  }
 
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head><title>Servlet1</title></head>");
    out.println("<body>");
    out.println("<table width=\"100%\" border=\"0\">");
    out.println("<tr>");
    out.println("<td width=\"10%\"><strong>Brugerinfo :</strong></td>");
    out.println("<td width=\"44%\">&nbsp;</td>");
    out.println("<td width=\"46%\">&nbsp;</td>");
    out.println("</tr>");
    out.println("<tr>");
    out.println("<td>&nbsp;</td>");
    out.println("<td>&nbsp;</td>");
    out.println("<td>&nbsp;</td>");
    out.println("</tr>");
    out.println("<tr>");
    out.println("<td>Fornavn</td>");
    out.println("<td><input type=\"text\" name=\"textfield\"></td>");
    out.println("<td>&nbsp;</td>");
    out.println("<tr>");
    out.println("<td>Efternavn</td>");
    out.println("<td><input type=\"text\" name=\"textfield2\"></td>");
    out.println("<td>&nbsp;</td>");
    out.println("</tr>");
    out.println("<tr>");
    out.println("<td>Adresse</td>");
    out.println("<td><input type=\"text\" name=\"textfield3\"></td>");
    out.println("<td>&nbsp;</td>");
    out.println("</tr>");
    out.println("<tr>");
    out.println("<td>Post nr.</td>");
    out.println("<td><input type=\"text\" name=\"textfield4\"></td>");
    out.println("<td>&nbsp;</td>");
    out.println("</tr>");
    out.println("<tr>");
    out.println("<td>Tlf.</td>");
    out.println("<td><input type=\"text\" name=\"textfield5\"></td>");
    out.println("<td>&nbsp;</td>");
    out.println("</tr>");
    out.println("<tr>");
    out.println("<td>Email</td>");
    out.println(navn+"1");
    out.println("<td><input type=\"text\" name=\"textfield6\"value="+navn+"></td>");
    out.println("<td>&nbsp;</td>");
    out.println("</tr>");
    out.println("</table>");
    out.println("<form name=\"form1\" method=\"post\" action=\"servlet2\">");
    out.println("<table width=\"100%\" border=\"0\">");
    out.println("<tr>");
    out.println("<td width=\"10%\">Varer</td>");
    out.println("<td width=\"62%\">&nbsp;</td>");
    out.println("<td width=\"28%\">&nbsp;</td>");
    out.println("</tr>");
    out.println("<tr>");
    out.println("<td>&nbsp;</td>");
    out.println("<td>&nbsp;</td>");
    out.println("<td>&nbsp;</td>");
    out.println("</tr>");
    out.println("<tr>");
    out.println("<td>&nbsp;</td>");
    out.println("<td>&nbsp;</td>");
    out.println("<td><input type=\"submit\" name=\"Submit\" value=\"G&aring; til kassen --&gt;\"></td>");
    out.println("</tr>");
    out.println("</table>");
    out.println("<p>The servlet has received a POST. This is the reply.</p>");
    out.println("</body></html>");
    out.close();
  }
}
Avatar billede arne_v Ekspert
07. november 2003 - 20:20 #1
Valider:

request.setAttribute("myinfo", "et eller andet");

Servlet1:

String s = (String)request.getAttribute("myinfo");

Eller har jeg misforstået noget ?
Avatar billede pablopablo Nybegynder
10. november 2003 - 13:36 #2
Nej du har INTET misforstået...jeg er blot newbie i dette...

TIL LYKKE ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester