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

时间:2015-03-25 05:35:29

标签: java jsp servlets href url-pattern

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

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

  1. 我可以将该参数作为隐藏类型发送
  2. 我可以输入请求和会话对象
  3. 这些方法工作正常没问题

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

    我试过的代码

    jsp page

    <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>相同或不同?

4 个答案:

答案 0 :(得分:1)

我只想给你一个例子

.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实际上会将回复发送回客户

答案 1 :(得分:1)

始终对URL进行编码。在JSP中尝试使用<c:url> JSTL Tag。

例如

<%@ 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。

答案 2 :(得分:0)

可能会在?...属性中的action="..."后看到您的浏览器清除参数。在这种情况下,尝试通过<input type="hidden" .../>传递它

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

这种方式表单应将其作为?filename=的{​​{1}}值添加到网址。

答案 3 :(得分:0)

是的,你可以发送像tsp一样。

我刚刚测试过,由于servlet代码中写入的其他语句,空白页面正常运行,因此确保servlet代码正确无误。