【问题标题】:Resource not found error while trying to deliver a jsp page尝试传递 jsp 页面时找不到资源错误
【发布时间】:2014-03-10 10:36:25
【问题描述】:

我正在使用在 jboss (6.0.2 EAP) 上部署 war 文件的 resteasy

我有以下工作流程:

  1. URL 命中调用servlet(doGet() method)
  2. 这个 servlet 应该向客户端传递一个 jsp 页面

    JSP 页面驻留在WebContent/customFolder

    我使用requestDispatcher().forward()方法来调用JSP

    forward("/customFolder/name_of_jsp")中给出的路径

  3. jsp有一个表单,其action属性指向另一个servlet

问题是,一旦调用forward()方法,浏览器会返回404 resource not found错误。

我已关注此论坛上已发布的一些问题,但无法解决此问题。

谁能指导我。

编辑: JSP 页面:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" import="javax.servlet.*,java.lang.String"%>
<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Password Reset Page</title>

</head>
<body>
<form method="GET" action="Resteasy">
<%!String userId;%>
<%userId = (String)getServletContext().getAttribute("userid"); %>
<p>User Id:<%= userId %></p>
Password: <input type="password" name="pwd" id="pass">
<br>
Confirm Password: <input type="password" name="rePwd" id ="c_pass" onblur="confirmPass()"><br>
<script type="text/javascript">
    function confirmPass() {
        var pass = document.getElementById("pass").value
        var confPass = document.getElementById("c_pass").value
        if(pass != confPass) {
            alert('Wrong confirm password !');
            document.getElementById("c_pass").focus();
        }
    }
</script>
<input type="submit" value="Submit">
</form> 
</body>
</html>

必须交付jsp的servlet:

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

        log.info("Received request for popup jsp page");

        String userId = request.getParameter("userid");
        String utc = request.getParameter("utc");

        log.info("Recieved userid = "+ userId);
        log.info("Received utc is = "+ utc);


        ServletContext requestContext = request.getServletContext();
        requestContext.setAttribute("userid", userId);
        requestContext.setAttribute("UTC", utc);


        String htmlfileName = null; 


        try {

            htmlfileName =   new DeltaPropertyHandler(
                    DeltaConstants.LINK_HTML_FILE).getPropertyValue(DeltaConstants
                            .USER_PASSWORD_RESET_HTML);
            File file = new File(requestContext.getRealPath(htmlfileName));
            if(file.exists()){log.debug("file exists!!");}
            else{log.warn("file does mot exist");}

        } catch (Exception e) {

            log.error("failed to present the jsp page " + e.getMessage());
        }
       log.info("File name is "+htmlfileName);

       RequestDispatcher rd = requestContext.getRequestDispatcher(htmlfileName);

       rd.forward(request, response);

    }

【问题讨论】:

  • 发布你的代码而不是描述它。
  • 贴出servlet的代码。这可能就是问题所在。
  • @Meghana,请看我的回答...

标签: java jsp servlets


【解决方案1】:

你的代码:

RequestDispatcher rd = requestContext.getRequestDispatcher(htmlfileName);

你应该改变:

RequestDispatcher rd = requestContext.getRequestDispatcher(programname.jsp); 

如果你使用 get 方法如下:

RequestDispatcher view=request.getRequestDispatcher(forward);
            view.forward(request, response);

如果您使用 post 方法,例如:

private static String LIST_USER="/listUser.jsp";

        RequestDispatcher view=request.getRequestDispatcher(LIST_USER);
        request.setAttribute("users", dao.getAllUsers());
        view.forward(request, response);

用户将从此格式引用。看看简单的格式如下:

  A.jsp> conntroller.java > dao.java>dbUtil.java 

您希望该列表的参考如下 link to click

【讨论】:

  • 您能解释一下原因吗?传给dispatcher的参数是jsp的相对路径吧?
猜你喜欢
  • 2011-10-10
  • 2018-10-29
  • 2022-01-25
  • 1970-01-01
  • 2013-12-29
  • 2019-07-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-11
相关资源
最近更新 更多