2017-06-06 2 views
0

私はホームページを持っており、参照サーブレットをクリックしても機能しません。エラー404が表示されます。web.xmlマッピングで問題が発生すると思われますが、ここではわかりません。この問題を解決するのを手伝ってください。ありがとうございました。サーブレットを操作しないでください。

マイweb.xml

<!--Homepage.--> 
<servlet> 
    <servlet-name>HomePageServlet</servlet-name> 
    <servlet-class>ru.pravvich.servlets.HomePageServlet</servlet-class> 
</servlet> 

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

<!--Add user in database.--> 
<servlet> 
    <servlet-name>AddUserServlet</servlet-name> 
    <servlet-class>ru.pravvich.servlets.AddUserServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>AddUserServlet</servlet-name> 
    <url-pattern>/addition</url-pattern> 
</servlet-mapping> 

私のJSPホームページ:

public class HomePageServlet extends HttpServlet { 
    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     req.setCharacterEncoding("UTF8"); 
     req.getRequestDispatcher("/WEB-INF/views/index.jsp").forward(req,resp); 
    } 
} 

そしてhttp://localhost:8080/items/によって、私は私のホームページを取得:それについてdoGet方法で

<body> 
    <ul> 
     <li><a href="addition.jsp">addition</a></li> 
    </ul> 
</body> 

とサーブレット。

しかし、私はindex.jspから参照をクリックして、リターン:addition.jspとの仕事のため/WEB-INF/views/addition.jsp

私のサーブレットでHTTP Status [404] – [Not Found]

マイaddition.jsp同じ嘘:

public class AddUserServlet extends HttpServlet { 

    private DBJoint db; 

    @Override 
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 

     db = (DBJoint) getServletContext().getAttribute("db"); 

     db.getDBExecutor().addUser(
      new User(req.getParameter("name"), 
        req.getParameter("login"), 
        req.getParameter("email"))); 

     req.setAttribute("serverAnswer", "Add ok!"); 
     req.getRequestDispatcher("/WEB-INF/views/answer.jsp").forward(req, resp); 

    } 
} 

そしてaddition.jsp

<body> 
    <form method="post" action="addition"> 
     <input type="text" required placeholder="name" name="name"><br> 
     <input type="text" required placeholder="login" name="login"><br> 
     <input type="text" required placeholder="email" name="email"><br> 
     <input type="submit" value="add"> 
    </form> 
</body> 

答えて

0

try/catchとデバッガモードを使用することをお勧めします。

そして、私はあなたが1の各パラメータを取得する必要があると思うし、セットよりも、このようなあなたのgetRequestDispatcher

request.getRequestDispatcher("answer.jsp").forward(request, response); 

または

req.getRequestDispatcher("~/WEB-INF/views/answer.jsp").forward(req, resp); 

を使用するようにしてください。これを試して;

public class AddUserServlet extends HttpServlet { 

private DBJoint db; 

@Override 
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 

    db = (DBJoint) getServletContext().getAttribute("db"); 

    String Name = request.getParameter("name"); 
    String Login= request.getParameter("login"); 
    String Email= request.getParameter("email"); 

    db.getDBExecutor().addUser(
     new User(Name, Login, Email); 

    //And you need to 'serverAnswer' item in your 'answer.jsp' you know. 
    request.setAttribute("serverAnswer", "Add ok!"); 
    request.getRequestDispatcher("answer.jsp").forward(req, resp); 
    }  
} 

そして、あなたのanswer.jspにこのようgetAttributeを使用することができ、

<%String Answer= (String)request.getAttribute("serverAnswer"); %><%= Answer%>

私はそれはあなたへの助けとなることを願って、私はあなたに助けをしたい、私を責めないでくださいは、あなたが欲しいのであれば、私の試作プロジェクトを見ることができます。 https://github.com/anymaa/GNOHesap

いいコーディングがあります。

+0

ありがとうございます。しかし、AddUserServletとadd.jspの間のデータ転送に問題はありません。私の問題:私のリファレンス '

  • addition
  • '私はページaddition.jspにアクセスすることはできませんエラー404を取得します。 – Pavel

    +0

    あなたはこれを試しましたか? '<サーブレット名> addition.jsp /addition.jsp <サーブレットマッピング> のの付加。JSP /追加 ' –

    +1

    と私はしたいかを尋ねsomethig、ちょうどweb.xmlに:)サーブレットマッピングを聞いて、このneccessaryはありますか?私はプロジェクトをビルドし、web.xmlは空ですが、各サーブレットを作成し、右クリックしてサーブレットを追加し、デプロイメント記述子にサーバーマッピングを含めてサーブレットが表示されますが、手動で追加しませんでした。私はEclipse IDEを使用しています。 –

    関連する問題