Eclipse-Problème Java trouver le contrôleur


J'apprends JSP à travers un livre JSP français plein de tutoriels. J'apprends actuellement "MVC & Jsp" essentiellement, avec un catalogue de DVD et un panier. Un contrôleur ajoute des dvd au panier lorsque l'utilisateur clique sur le bouton ajouter. Cependant, il semble que mon contrôleur ne soit pas appelé. Je place un système.Quand il est appelé pour vérifier si cela fonctionne, et il n'y a pas de texte sur ma console... Voici mon explorateur de projet.

Et voici mes codes pour mon catalogue et mon Contrôleur.

<%@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>

Et mon contrôleur

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";
    }

}

Je suppose que le problème vient de mes références à mon contrôleur mais je ne peux pas penser à la référence correcte. Toute aide bienvenue =)

MODIFIER Bon alors voici mon web.xmm [J'ai également fait les modifications suggérées sur mon code ci-dessus, et supprimé chaque " e " que j'ai écrit à la fin de la méthode (et non de la méthode)] http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version= " 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

Je pense que le problème est la façon dont vous définissez l'action à l'écran. action="U:/workspace/myfirstProjet/src/ShopController" Je pense que ce devrait être action="Name_Of_CLass" pas le chemin vers la classe.

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

Notez également que sendRedirect reçoit un emplacement d'URL et non le chemin d'accès au jsp dans votre projet. (https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpServletResponse.html#sendRedirect%28java.lang.String%29)

Donc dans votre servlet (controller) et votre jsp, renommez ceci "U:/workspace/myfirstProjet/build/classes/exoLivres/ShopController" à quelque chose comme ça: "/ myfirstProjet/".

Et où vous avez "U:/workspace/myfirstProject/WebContent/MVC/Catalogue.JSP" renommer en " / myfirstProjet/".

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

Vous devez avoir votre mappage de contrôleur dans le Web.xml

Vous n'avez pas donné le chemin de votre contrôleur ShopController dans ce

 <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>

Ça devrait être comme ça

<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>

Et modifiez l'action de votre formulaire jsp comme ci-dessous..

 <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>

Pour éviter que la méthode get ne soit pas prise en charge, changez le contrôleur comme ceci

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