java - 如何以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 中获取它的方式,该文件夹总是相同的。
解决方案
推荐阅读
- c# - C# - 使用 Guid 参数引发事件的单元测试方法
- flutter - 即使条件为真,StreamBuilder 也无法重新路由
- macos - 通过macOS中的Finder打开vscode中的文件夹?
- unit-testing - xUnit + Unquote 测试:报告列表差异足够大的第一项
- c# - 统一的目标框架名称是什么?
- java - 如何将数据放入已解析的 JSONObject
- python - 我如何关闭 python 但继续运行
- salesforce - 静态资源图像未在 LWC 中显示
- protractor - 如何使用量角器创建 Azure SQL 数据库连接?
- c - 使用 C 将随机生成的大尺寸矩阵相乘时出错