首页 > 解决方案 > 如何以java servlet形式传递从mysql表中获得的多个参数

问题描述

这是我第一次使用 Java servlet,我想做一个小型图片库站点。目前我对如何传递参数有疑问。基本上,输入隐藏字段正在传递所有参数,并且在第二个也是最后一个 servlet 中,它总是提供相同的文件夹名称,因此它永远无法在不同的文件夹中找到不同的图片。

我无法弄清楚如何从 mysql 表中获取每个单选按钮应该唯一的内容,然后将此信息传递给下一个 servlet。因为它目前正在传递文件夹类别,而我实际可以使用的唯一文件夹是类别表中的第一个文件夹。

这是我的第二个 servlet 的 url 中的内容

http://localhost:8080/techfore/SelectingPage?ShortName=AntShowcase&CategoryNo=3&ShortName=UMLDiagrams&ShortName=WildArt&ShortName=Traditional&ShortName=DreamweaverImages&ShortName=WindowsWallpaper

这是我在最后一个 servlet 中的 url 中的内容

http://localhost:8080/techfore/PicturePage?PictureName=Redmoondesert.jpg&ShortName=AntShowcase

数据库平板电脑

Categories DB
CategoryNo, ShortName, Description, Folder

Pictures DB
PictureNo, CategoryNo, Shortname, Description, FileName

我需要向用户展示下面的 servlet 尝试执行的类别选择页面。

   Statement stmt = con.createStatement();
   String query;
   ResultSet rs;

   // List the categories
   query = "SELECT ShortName, Folder, CategoryNo FROM Categories ORDER BY CategoryNo";
   rs = stmt.executeQuery(query);


   out.println("Please select a category of pictures to explore:");

   String URL = "http://localhost:8080/techfore/SelectingPage";



   out.println("<form method=\"GET\" action=\"" + URL + "\">");
   while (rs.next()) {

      String shortName = rs.getString("ShortName");
      String folderName = rs.getString("Folder");
      int CategoryNo = rs.getInt("CategoryNo");


      out.println("<input type = \"radio\" name =\"CategoryNo\" value="+CategoryNo+">"+shortName+"");
      out.println("<br>");
      out.println("<input type = \"hidden\" name =\"ShortName\" value="+folderName+">");



   }
   Utilities.oneButtonForm(out, URL, "Let me select a category");
   out.println("</form>");

下一个 servlet 应该显示来自该特定类别的图片列表

   try {

        Statement stmt = con.createStatement();
        String query;
        ResultSet rs;

        query="SELECT Folder FROM Categories WHERE CategoryNo = "+categoryNo+"";

        rs = stmt.executeQuery(query);

        while(rs.next()) {
            shortName = rs.getString("Folder");
        }

        stmt.close() ;




    }
    catch(SQLException ex) {
        out.println("<P>SQLException: " + ex.getMessage()) ;
     }
    out.println("Folder is:" +shortName);






    try {
       Statement stmt = con.createStatement();
       String query;
       ResultSet rs;




       // List the categories
       query = "SELECT PictureNo, ShortName, Description, FileName FROM Pictures WHERE CategoryNo ="+categoryNo+" ORDER BY PictureNo";

       rs = stmt.executeQuery(query);


       String URL = "http://localhost:8080/techfore/PicturePage/"+shortName+"";





       out.println("<form method=\"GET\" action=\"" + URL+">");

       while (rs.next()) {


          String pictureName = rs.getString("ShortName");
          String fileName = rs.getString("FileName");



          out.println("<input type = \"radio\" name =\"PictureName\" value="+fileName+">"+pictureName+"");
          out.println("<br>");




       }
       out.println("<input type = \"hidden\" name=\"ShortName\" value="+shortName+"");


       Utilities.oneButtonForm(out, URL, "Let me see th");


       out.println("</form>");

      out.println("<form action=\"/http://localhost:8080/techfore/WelcomePage\">" + 
            "    <input type=\"submit\" value=\"Let me choose another category\" />\r\n" + 
            "</form>");



       stmt.close() ;
    }

最后一个 servlet 应该显示存在于另一个站点上的图片(我只需要提供文件夹和文件名。

out.println("<img src=http://www.uni.site.sc.dk/courses/Pictures/Gallery/"+categoryName+"/"+pictureName+"");

      out.println("<form action=/"+referer+">" + 
            "    <input type=\"submit\" value=\"Let me choose another picture\" />\r\n" + 
            "</form>");


      out.println("<form action=\"/http://localhost:8080/techfore/WelcomePage\">" + 
                "    <input type=\"submit\" value=\"Let me choose another category\" />\r\n" + 
                "</form>");

主要问题是由于我在第一个 servlet 中获取它的方式,该文件夹总是相同的。

标签: javaservlets

解决方案


推荐阅读