这是我的Servlet:
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
String collectionName = request.getParameter("myCollectionName");
response.sendRedirect("index3.html");
String pattern = request.getParameter("Pattern");
String notPattern = request.getParameter("NotPattern");
}
}
这是我的第一个html页面的样子:http://i.stack.imgur.com/oFlQD.png
用户点击“创建”后,我的网络应用会将用户重定向到下一页,如下所示:http://i.stack.imgur.com/UkfGd.png
我想从我的第一个html网页使用Collection Name的值。在我的第二个html页面中,我想要"编辑集合"文本框与第一个html页面中的Collection Name具有相同的值。我怎样才能做到这一点?
这是我的第一个html文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Create New Collection</title>
<h><b>Create New Collection</b></h>
</head>
<body>
<form method="post" action='CollectionPath' >
<br>
Collection Name:<textarea name="myCollectionName" cols="10" rows="1"></textarea>
<br>
<br>
<input type="submit"
value="Create" style="color:white;background: blue" />
</form>
</body>
</html>
这是我的第二个html文件(index3.html)
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="post" action='CollectionPath' >
Edit Collection:
<textarea name="CollectionNameValue" cols="10" rows="1"></textarea>
<br>
<br>
<b>Include Content Matching the Following Patterns:</b>
<br>
<textarea name="pattern" cols="50" rows="10"></textarea>
<br>
example:http://www.mycompany.com/engineering/
<br>
<br>
<b>Do Not Include Content Matching the Following Patterns</b>:
<br>
<textarea name="notPattern" cols="50" rows="10"></textarea>
<br>
example:http://www.mycompany.com/engineering/
<br>
<input type="submit"
value="Save" style="color:white;background: blue"/>
</form>
</body>
</html>
答案 0 :(得分:2)
最简单的答案是将第二个HTML页面设为JSP。基本上它看起来与现有的index3.html相似,但会被重命名为&#34; index3.jsp&#34;。然后,使用简单的JSP标记,您可以获取数据。首先,您必须更新您的servlet:
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
String CollectionName = request.getParameter("myCollectionName");
// store this value in the session
request.getSession().setAttribute("myCollectionName", CollectionName);
String Pattern = request.getParameter("Pattern");
String NotPattern = request.getParameter("NotPattern");
response.sendRedirect("index3.jsp");
}
现在,在您的JSP中,您需要查看this posting以获取有关如何从会话中获取数据的指导。
关于你的代码的注释 - 传统鼓励你使用小写字母(单个单词)或camelCase用于多字变量名称。 Java没有强制执行此操作,但鼓励它。
修改强>
您在评论中提到您只想使用servlet。但是,如何将HTML文件提供给浏览器?猜测你是在使用Tomcat还是Jetty。这些服务器也能够处理JSP文件。该文件与您现在的目录位于同一目录中,但命名方式不同。如果您不能使用JSP,那么您还有其他选择,这比JSP更难:
老实说,所有这些(也可能有其他方式)比JSP方式更难。
答案 1 :(得分:2)
您在表单操作标记中指定的路径是正确的。
以下是有关如何执行此操作的简要指南:
将两个页面的扩展名更改为jsp。例如index.html - &gt; index.jsp的。您将能够在jsp中使用EL(表达式语言)。
在你的Servlet中:
for file in glob.iglob('C:/Users/Independent Auditors Report/**/*.html', recursive=True):
在你的第二页: 将yout textarea代码更改为以下内容:
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
// Java's naming convention suggests that variable should be camel case
// e.g. String collectionName, please fix yourself.
String CollectionName = request.getParameter("myCollectionName");
request.setAttribute("collectionName", CollectionName);
//-- response.sendRedirect("index3.html");
// sendredirect will create a fresh request. As a result, the CollectionName you stored in the previous
// request does not exist anymore. You don't want that because your
// second page will get it from the request scope, see step 3.
// use forward instead
request.getRequestDispatcher("yourpage.jsp").forward(request,response);
// Not sure what these two lines are doing here because
// the previous html page do not have any input with name **Pattern**
// or "NotPattern", so you are not getting anything.
// please fix accordingly
String Pattern = request.getParameter("Pattern");
String NotPattern = request.getParameter("NotPattern");
}
希望有所帮助。