2013-05-09 115 views
0

我是JSP和Servlets的新手。路径中的Servlet映射错误

我有两个JSP页面Index.jsp和Edit.jsp以及一个Controller.java。

  1. 的index.jsp

    <html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        <title>Index</title> 
    </head> 
    <body> 
        <Form action="/ch2/servletController/Controller"> 
        <h1>Hello World!</h1> 
        <a href="Edit.jsp"> Click here </a> 
        <input type="submit" value="Edit" name="gotoEdit" /> 
    
        </Form> 
    </body> 
    </html> 
    
  2. edit.jsp文件

    <html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        <title>Edit</title> 
    </head> 
    <body> 
        <form action="Controller"> 
        <h3>This is a simple HTML page that has a form in it.</h3> 
        <h3>If there is a value for the hobby in the query string, then it is used to initialize the hobby element. 
    
        </h3> 
        <p> 
        Hobby:  
        <input type="text" name="hobby" value="${param.hobby}" /> 
        <input type="submit" value="Confirm" name="processButton" /> 
        </p> 
        </form> 
    </body> 
    </html> 
    
  3. 控制器

    package ch2.servletController; 
    import java.io.IOException; 
    import javax.servlet.RequestDispatcher; 
    import javax.servlet.ServletException; 
    import javax.servlet.http.HttpServlet; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 
    
    public class Controller extends HttpServlet 
    { 
    protected void doGet (HttpServletRequest request, 
        HttpServletResponse response) 
    throws ServletException, IOException 
    { 
        String address; 
        if (request.getParameter("processButton") !=null) 
        { 
    address = "Process.jsp"; 
    } 
    else if (request.getParameter("confirmButton") !=null) 
    { 
        address = "Confirm.jsp"; 
    } 
    else 
    { 
        address = "Edit.jsp"; 
        } 
        RequestDispatcher dispatcher = 
        request.getRequestDispatcher(address); 
        dispatcher.forward(request, response); 
        }} 
    

网络的Xml

<servlet> 
     <servlet-name>Controller</servlet-name> 
     <servlet-class>ch2.servletController.Controller</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Controller</servlet-name> 
     <url-pattern>/ch2/servletController/Controller</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

所以,问题是,当我运行index.jsp页面,点击“编辑”按钮,它进入一个错误。

![我收到的错误] [4]

请客气推荐!!

回答

0

这里有一些建议:

1)既然你是在HREF指edit.jsp文件,确保两个JSP的相同文件夹下。 最好的办法是使HREF = “<%= request.getContextPath()%>/edit.jsp文件”

2)申请表单动作相同即

行动=” <%= request.getContextPath ()%>/ch2/servletController/Controller“

希望这可以帮助你的事业。

+0

谢谢Suyash,但它不工作。 – user1947627 2013-05-09 10:20:35

+0

谢谢Suyash,但它不起作用。 基本上,我的控制器位于Classes.ch2.servletController文件夹中 ,而索引和编辑位于WEB-INF文件夹中。 我也改变了web.xml中的路径 as/ch2/servletController/Controller 请建议... – user1947627 2013-05-09 10:28:00

+0

在web.xml中,将URL模式更改为“/ controller”,更新内容与Jsp的表单action属性相同action =“<%= request.getContextPath()%>/controller” 这将起作用。 – suyash 2013-05-09 11:00:17

0

在Edit.jsp中,表单动作是Controller,它应该是web.xml文件中servlet的相应url-pattern。在你的情况下,如果你改变Edit.jsp表单动作来形成action =“/ ch2/servletController/Controller”,那么jsp代码片段就会找到Servlet。