通过 servlet 的 url 模式将参数从 jsp 传递到 servlet

passing parameter from jsp to servlet through url pattern of servlet

我需要通过 servlet 的 url 模式发送一个参数(就像我们通过 <a href="example.jsp?id=1">send</a> 发送一样),就像我通过 url 模式发送一个参数一样。

我用其他可能性来做这个,比如

  1. 我可以将该参数作为隐藏类型发送
  2. 我可以放入请求和会话对象

这些方法工作正常没问题

但是通过 url 它没有服用?我想知道可不可以?

我试过的代码

jsp 页

<a href="download?filename=<%=filename%>" target="_blank"> <font color="black"><%=filename%> </font></a>

servlet 代码

 String  filename=request.getParameter("filename");

我需要一个答案,如果可以,我们可以通过 url 模式传递参数吗?即与 <a href="example?id=1">send</a> 相同或不同?

这是可能的,但看起来您的浏览器 清除了 action="..." 属性中 ?... 之后的 参数。在那种情况下,尝试通过 <input type="hidden" .../> 传递它,例如

<form action="sendFileToServlet" method="get">
    <input type="hidden" name="filename" value="<%=filename%>"/>
    <input type="submit" value="Send" />
</form> 

这种方式应该将它们添加到 URL 作为 <%=filename%>?filename= 值。

我只是想给你举个例子

.jsp 文件

<% String filename ="nameofFile.txt"; %>
<a href="download?filename=<%= filename %>" ></a>

SERVLET 代码

String filename = (String)request.getParameter("filename");
BufferedReader fir= new BufferedReader(new FileReader(new FileInputStream(filename))); 
PrintWriter out = response.getWriter();
while(fir.ready())
out.println(fir.readLine())

我认为您得到的是空白页面,因为您没有向客户端发送任何响应,这里 out.println 实际上会将响应发送回客户端

始终编码 URL。在 JSP 中尝试使用 <c:url> JSTL 标签。

例如

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
<a href='<c:url value="/jsp/index.htm"/>'>TEST</a>

Read more..

注意: 使用 JSTL and EL 而不是 Scriplets。

是的,您可以通过 jsp.

发送

我刚刚测试过,现在它工作正常,由于在您的 servlet 代码中编写了其他语句,所以出现空白页面,因此请确保 servlet 代码正确。