Avatar billede jokl98ac Nybegynder
03. april 2004 - 14:24 Der er 5 kommentarer og
1 løsning

JSP - Servlet kommunikation

Hej,

Jeg har en jsp side der skal kommunikere med en servlet controller (fra Goodwill "developing java servlets 2.d ed") - men det går bare ikke rigtigt.

I min navigations-jsp henviser jeg til Controlleren som:

<tr>
<td>
a href="/catalog/Controller?service=ListMovies&catid=1&target=/ListMovies.jsp">
Action/Adventure
</a>
</td>
</tr>

Controllerens doPost er angivet nedenfor. Den snupper parameteren "service" og finder ud af, hvilken service skal køres.

public void doPost(HttpServletRequest request,
        HttpServletResponse response)
        throws ServletException, IOException {

        // Get the name of the Transaction to perform
        String serviceName = request.getParameter("service");

        if (serviceName == null) {

            throw new ServletException("No service named!");
        }

        // Get the target of the request
        String target = request.getParameter("target");

        if (target == null) {

            throw new ServletException("No target named!");
        }

        ServletContext context = getServletContext();

        // Create and execute an instance of the named service
        try {

            // Create an instance of the fully qualified Service Class
            Class cls = Class.forName(serviceName);
            Service service = (Service)cls.newInstance();
            // Execute the Transaction
            service.execute(request, response, context);
        }
        catch (ClassNotFoundException ce) {

            throw new ServletException(ce.getMessage());
        }
        catch (IllegalAccessException iae) {

            throw new ServletException(iae.getMessage());
        }
        catch (Exception e) {

            throw new ServletException(e.getMessage());
        }

        // Forward the results
        forward(request, response, target);
    }

Den smider altså requesten videre til en service, i dette tilfælde ListMovies.java der implementerer Service interfacet. I ListMovies bruges catid parameteren fra jsp-siden i execute().

public void execute(HttpServletRequest request,
        HttpServletResponse response,
        ServletContext context) throws Exception {

        // Get categorie_id from the request
        String catid = request.getParameter("catid");     

        try
        {
            InitialContext ctx = new InitialContext();           
            DataSource ds = (DataSource)ctx.lookup("jdbc/Moviecatalog");       
            Connection con = ds.getConnection("root", "jokl98ac");   

            if ( con != null ) {

                Statement statement = con.createStatement();

                // Get titles with matching category id
                StringBuffer query = new StringBuffer("SELECT * FROM TITLES");
                query.append(" WHERE CATEGORY_ID = " + catid);
                ResultSet rs =
                    statement.executeQuery(query.toString());

                Object[] movies = parseResultSet(rs);

                // Add the resulting movies to the request
                request.setAttribute("movies", movies);
            }
        }catch(Exception e){}

Når jeg pakker det og kører det får jeg flg exception report

javax.servlet.ServletException: ListMovies
    servlets.Controller.doPost(Controller.java:105)
    servlets.Controller.doGet(Controller.java:59)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:748)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:861)
    sun.reflect.GeneratedMethodAccessor159.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:324)
    org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:289)
    java.security.AccessController.doPrivileged(Native Method)

Der bliver kstet en undtagelse i linie 105 i controlleren, hvilket er en ClassNotFoundException. Kan ikke helt forstå hvilke klasse det er den ikke kan finde?

Please hjælp! Det er til et eksamensprojekt og jeg er ude på ret (meget!) dybt vand!

mvh Jonas
Avatar billede arne_v Ekspert
03. april 2004 - 14:38 #1
Ligger ListMovies.class i webapps\xxxx\WEB-INF\classes ?
Avatar billede jokl98ac Nybegynder
03. april 2004 - 14:41 #2
Jep, ListMovies.class & Controller.class ligger deri.
Avatar billede arne_v Ekspert
03. april 2004 - 22:49 #3
Mystisk, fordi det er den som den ikke kan finde og det er der hvor den skal ligge.
Avatar billede arne_v Ekspert
24. april 2004 - 18:06 #4
Kommet videre ?
Avatar billede jokl98ac Nybegynder
15. juli 2004 - 16:03 #5
jeps, kan du ikke lige gi et svar, så accepterer jeg det. undskyld ventetiden.
Avatar billede arne_v Ekspert
15. juli 2004 - 16:19 #6
svar

(men har jeg hjulpet ??)
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