首页 > 解决方案 > 如何将文件夹的详细信息发送到 servlet?

问题描述

我是 Java 初学者,我被要求构建一个文件共享动态 Web 应用程序。应用程序的流程是这样的:login > display folders > select a folder > display files in the folder along with an upload button

现在,我已经创建了我需要的 jsp 页面,并且我也可以登录,选择一个重定向到另一个 jsp 页面的文件夹,我可以在其中上传文件。

我面临的问题是我不知道如何将文件夹的详细信息(例如单击时的文件夹名称)放入我的servlet。

这是我主页的代码

<body>
    <jsp:include page="header.jsp"></jsp:include>
    <%
        FileSharingDAO fsObj = new FileSharingDAO();
        ArrayList<FolderPOJO> folders = fsObj.getFolder();

        final int COLUMNS = 3;
        int rows = folders.size() / COLUMNS;
        int foldercounter = 0;
    %>
        <table class="grid">
        <%
            for(int i = 0; i < rows; i++) {
        %>
            <tr>
                <%
                    for(int j = 0; j < COLUMNS; j++) {
                %>
                <td><a href="folder.jsp"><img src="img/small-folder.png"><br><%= folders.get(foldercounter).getFoldername()%><br></a></td>
                <%
                        foldercounter++;
                    }
                %>
            </tr>
        <% } %>     
        </table>
    <jsp:include page="footer.jsp"></jsp:include>
</body>

如何将文件夹名称获取到 servlet,以便我可以根据文件夹 ID 从文件夹中获取文件?

标签: javamysqljspservlets

解决方案


我想到了。我没有重定向到folder.jspusing <a href="folder.jsp">,而是调用了一个 servlet,该 servlet 又重定向到 jsp 页面。

这是更新的jsp代码:

<body>
    <jsp:include page="header.jsp"></jsp:include>
    <%
        FileSharingDAO fsObj = new FileSharingDAO();
        ArrayList<FolderPOJO> folders = fsObj.getFolder();

        final int COLUMNS = 3;
        int rows = folders.size() / COLUMNS;
        int foldercounter = 0;
    %>
        <table class="grid">
        <%
            for(int i = 0; i < rows; i++) {
        %>
            <tr>
                <%
                    for(int j = 0; j < COLUMNS; j++) {
                %>
                <td><a href="${pageContext.request.contextPath}/HomeServlet?folderid=<%= folders.get(foldercounter).getFolderid()%>"><img src="img/small-folder.png"><br><%= folders.get(foldercounter).getFoldername()%><br></a></td>
                <%
                        foldercounter++;
                    }
                %>
            </tr>
        <% } %>     
        </table>
    <jsp:include page="footer.jsp"></jsp:include>
</body>

这是doGet()servlet中的方法:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.sendRedirect(request.getContextPath() + "/folder.jsp");

        String folderid = request.getParameter("folderid");
        System.out.println("\n\nFolder id: " + folderid); // checking if folderid is fetchable or not
}

我知道不鼓励使用 scriptlet,但目前我将使用它们完成我的 web 应用程序,因为我必须在几天内提交它。稍后将使用 JSTL 对其进行更新,并在此答案中发布更新。


推荐阅读