Eclipse-Problema Java trovare il controller


Sto imparando JSP attraverso un libro JSP francese pieno di tutorial. Attualmente sto imparando" MVC & Jsp " fondamentalmente, con un catalogo di DVD e un carrello della spesa. Un controller aggiunge dvd al carrello quando l'utente fa clic sul pulsante Aggiungi. Tuttavia, sembra che il mio controller non sia chiamato. Metto un sistema.Quando viene chiamato per verificare se funziona, e non c'è testo popping sulla mia console... Ecco il mio project explorer.

E qui ci sono i miei codici per il mio catalogo e il mio controller.

<%@page import="exoLivres.ShoppingCart"%>

<%@ page errorPage="../PagesErreur/Erreurpage.jsp" %>
<jsp:useBean id="cart" scope="session" class="exoLivres.ShoppingCart" />
<html>
    <head>
        <title>Catalogue DVD</title>
    </head>
    <body>
    <a href="U:/workspace/myfirstProject/WebContent/MVC/ShoppingCartMVC.jsp">Quantité actuelle : </a> <%=cart.getNumOfItems() %>
    <hr>
        <center><h3>Catalogue DVD</h3></center>
        <table border="1">
                <tr><th>Description</th><th>Prix</th></tr>
        <tr>
            <form action="ShopController" method="post">
<!--no error, but nothing happening-->
                <td>Frozen</td>
                <td>$19.95</td>
                <td><input type="submit" name="Submit" value="Ajouter"></td>
                <input type="hidden" name="id" value="1">
                <input type="hidden" name="desc" value="Frozen">
                <input type="hidden" name="price" value="19.95">
                <input type="hidden" name="command" value="add">
            </form>
        </tr>
        <tr>
            <form action="ShopController" method="post">
<!--no error, but nothing happening-->
                <td>XMen Origins</td>
                <td>$19.95</td>
                <td><input type="submit" name="Submit" value="Ajouter"></td>
                <input type="hidden" name="id" value="1">
                <input type="hidden" name="desc" value="XMen">
                <input type="hidden" name="price" value="19.95">
                <input type="hidden" name="command" value="add">
        </form>
        </tr>
        <tr>
            <form action="ShopController" method="post">
                <td>Avengers</td>
                <td>$17.95</td>
                <td><input type="submit" name="Submit" value="Ajouter"></td>
                <input type="hidden" name="id" value="1">
                <input type="hidden" name="desc" value="Avengers">
                <input type="hidden" name="price" value="17.95">
                <input type="hidden" name="command" value="add">
            </form>
        </tr>
    </table>
</body>
</html>

E il mio controllore

package exoLivres;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.*;
import exoLivres.ShoppingCart;


public class ShopController extends HttpServlet {

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

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        System.out.println("Contrôleur démarré");
        String command= request.getParameter("command");
        HttpSession session = request.getSession();
        ShoppingCart cart = (ShoppingCart)session.getAttribute("cart");

        if(command.equals("add")){
            String id = request.getParameter("id");
            if (id!=null){
                System.out.println(id);
                String desc = request.getParameter("desc");
                Float price = new Float(request.getParameter("price"));
                cart.addItem(id, desc, price.floatValue(), 1);
                System.out.println(id + desc + price);
            }
        }
        response.sendRedirect("U:/workspace/myfirstProject/WebContent/MVC/Catalogue.jsp");
    }
    public String getServletInfo(){
        return "ShopController Information";
    }

}

Immagino che il problema provenga dai miei riferimenti al mio Controller ma non riesco a pensare al riferimento corretto. Qualsiasi aiuto benvenuto =)

MODIFICA Va bene così qui è il mio web.xmm [Ho anche fatto le modifiche suggerite sul mio codice sopra, e rimosso ogni " e " che ho scritto alla fine del metodo (e non methode)] http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" versione= " 3.0 " >

  <servlet>
    <servlet-name>MyfirstServlet</servlet-name>
    <servlet-class>myfirstProject.MyfirstServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>MyfirstServlet</servlet-name>
    <url-pattern>/first</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>Books</servlet-name>
    <servlet-class>myfirstProject.BookServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Books</servlet-name>
    <url-pattern>/books</url-pattern>
</servlet-mapping>

    <servlet>
    <servlet-name>ShopController</servlet-name>
    <servlet-class>exoLivres.ShopController</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>ShopController</servlet-name>
    <url-pattern>/ShopController</url-pattern>
</servlet-mapping>



</web-app>
Author: AoiTora, 2015-04-24

3 answers

Penso che il problema sia il modo in cui imposti l'azione sul modulo. azione="U:/workspace/myfirstProjet/src/ShopController" Penso che dovrebbe essere action = "Name_Of_CLass" non il percorso della classe.

 0
Author: Veselin Davidov, 2015-04-24 10:25:28

Si noti inoltre che sendRedirect riceve una posizione url non il percorso del jsp nel progetto. (https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpServletResponse.html#sendRedirect%28java.lang.String%29)

Quindi nel tuo servlet (controller) e nel tuo jsp, rinomina questo "U:/workspace/myfirstProjet/build/classes/exoLivres/ShopController" a qualcosa di simile: "/ myfirstProjet/".

E dove hai "U:/workspace/myfirstProject/WebContent/MVC/Catalogue.spg" rinomina in " / myfirstProjet/".

 0
Author: Luis Alves, 2015-04-24 10:37:43

È necessario disporre della mappatura del controller nel Web.xml

Non hai dato il percorso del tuo controller ShopController in questo

 <servlet>
    <servlet-name>MyfirstServlet</servlet-name>
    <servlet-class>myfirstProject.MyfirstServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>MyfirstServlet</servlet-name>
    <url-pattern>/first</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>Books</servlet-name>
    <servlet-class>myfirstProject.BookServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Books</servlet-name>
    <url-pattern>/books</url-pattern>
</servlet-mapping>

Dovrebbe essere così

<servlet>
    <servlet-name>ShopController</servlet-name>
    <servlet-class>packagename.ShopController</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>ShopController</servlet-name>
    <url-pattern>/ShopController</url-pattern>
</servlet-mapping>

E cambia l'azione del tuo modulo jsp come di seguito..

 <form action="ShopController" method="post">
<!--no error, but nothing happening-->
                <td>XMen Origins</td>
                <td>$19.95</td>
                <td><input type="submit" name="Submit" value="Ajouter"></td>
                <input type="hidden" name="id" value="1">
                <input type="hidden" name="desc" value="XMen">
                <input type="hidden" name="price" value="19.95">
                <input type="hidden" name="command" value="add">
        </form>

Per evitare che il metodo get non sia supportato change controller come questo

public class ShopController extends HttpServlet {

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


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

processRequest(request,response)
}

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

processRequest(request,response)
}


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

 System.out.println("Contrôleur démarré");
        String command= request.getParameter("command");
        HttpSession session = request.getSession();
        ShoppingCart cart = (ShoppingCart)session.getAttribute("cart");

        if(command.equals("add")){
            String id = request.getParameter("id");
            if (id!=null){
                System.out.println(id);
                String desc = request.getParameter("desc");
                Float price = new Float(request.getParameter("price"));
                cart.addItem(id, desc, price.floatValue(), 1);
                System.out.println(id + desc + price);
            }
        }
        response.sendRedirect("U:/workspace/myfirstProject/WebContent/MVC/Catalogue.jsp");

}

}
 0
Author: kirti, 2015-04-24 14:37:53