2017-06-06 124 views
0

我有主页,当我点击引用Servlet时不起作用,我得到404错误。我想问题在web.xml映射,但一个不明白的地方。请帮我解决这个问题。谢谢。请勿使用servlet。在web.xml中使用servlet映射的问题

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网页:

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

而且随着doGet方法为它的servlet:

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/我得到我的主页。

但是,当我在参考单击从index.jsp,返回:HTTP Status [404] – [Not Found]

addition.jsp同样横亘在/WEB-INF/views/addition.jsp

我的servlet工作与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和调试模式。

,并尝试使用这样您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和addition.jsp之间的数据传输没有问题。我的问题:我的参考文献'

  • addition
  • '得到错误404。我无法访问页面addition.jsp。 – Pavel

    +0

    你试过这样吗? ' addition.jsp /addition.jsp 加成。jsp /addition ' –

    +1

    我想问你一些问题,请问:) web.xml中的Servlet映射是否需要?因为我构建的项目和web.xml是空的,但我创建每个servlet,右键单击并添加servlet,在部署描述符包括服务器映射,我看到那里我的小服务程序,但我没有手动添加。我正在使用Eclipse IDE。 –