【问题标题】:passing parameter from jsp to servlet through url pattern of servlet通过servlet的url模式将参数从jsp传递给servlet
【发布时间】:2015-05-28 16:22:57
【问题描述】:

我需要通过 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 模式传递参数吗?即与&lt;a href="example?id=1"&gt;send&lt;/a&gt; 相同还是不同?

【问题讨论】:

  • 那么实际传递的文件名是什么?如果在浏览器的地址栏中调用,结果是一样的吗?
  • 在jsp中filename的值是什么??你也可以使用JavaScript!!
  • 这里的文件名是动态变化的字符串
  • 您应该检查生成的 url 或使用检查元素查看 filename 是否为空
  • 只是我需要一个答案,如果可以,我们可以通过 url 模式传递参数吗?即与通过 send 相同还是不同?

标签: java jsp servlets href url-pattern


【解决方案1】:

是的,您可以像通过 jsp 一样发送。

我刚刚测试了它现在可以正常工作了,因为您的 servlet 代码中编写了其他语句,所以要确保 servlet 代码是正确的。

【讨论】:

  • 感谢@Mahender Reddy Yasa 我解决了另一个给出空指针异常的语句我删除了它。
【解决方案2】:

始终对 URL 进行编码。在 JSP 中尝试使用 &lt;c:url&gt; JSTL 标记。

例如

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

Read more..

注意:使用 JSTLEL 代替 Scriplets。

【讨论】:

    【解决方案3】:

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

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

    这种方式应该将它们作为?filename=&lt;%=filename%&gt; 值添加到URL。

    【讨论】:

    • 我知道这件事,我提到它是第一种发送参数的方式
    【解决方案4】:

    我只是想给你一个例子

    .jsp 文件

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

    服务代码

    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 实际上会将响应发送回客户端

    【讨论】:

    • 我没有测试过它我相信它应该可以工作。我会在测试代码时回复你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2014-09-14
    • 2010-12-16
    • 2015-01-18
    • 1970-01-01
    相关资源
    最近更新 更多