Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将数据传递给servlet_Java_Jsf_Servlets - Fatal编程技术网

Java 将数据传递给servlet

Java 将数据传递给servlet,java,jsf,servlets,Java,Jsf,Servlets,基本上,我们有一个JSF应用程序,它可以动态生成指向servlet的链接,servlet提供PDF文件。我需要将PDF的路径传递到servlet。我不知道如何将数据传递给servlet 我们认为: <d:protocolSection value="#{detailBacker.studyData}" id="protocol" /> 在控制器中,我们有 public string getFile() { ....... // some variable here th

基本上,我们有一个JSF应用程序,它可以动态生成指向servlet的链接,servlet提供PDF文件。我需要将PDF的路径传递到servlet。我不知道如何将数据传递给servlet

我们认为:

<d:protocolSection value="#{detailBacker.studyData}" id="protocol" />

在控制器中,我们有

public string getFile() {
  .......
  // some variable here that holds the folder and file name
  result += "<a href=\"/catalog/catalog/WelcomeServlet\"  target=\"_blank\">" + name + "</a>
  .......
}
公共字符串getFile(){
.......
//此处的某个变量包含文件夹和文件名
结果+=”
.......
}

我基本上需要以某种方式将保存文件夹和文件名的变量发送到WelcomeServlet,以便WelcomeServlet可以使用它。

以通常的Servlet方式将其作为请求参数或路径信息传递

下面是一个示例,假设pathinfo是首选的,并且
{bean.pdfpath}
返回类似
filename.pdf

下载pdf
在映射到URL模式
/pdf/*
的servlet中,您可以在
doGet()
方法中获得它,如下所示:

String pdfpath=request.getPathInfo();
// ...

另一种完全不同的选择是,您也可以让JSF使用commandlink/commandbutton操作方法将PDF写入响应。

将生成/创建的PDF文件的位置保持固定,只需传递文件名,如

/pdfServlet?fileName=#{someBean.someFileName}
在servlet的
doGet()
中检索文件名并提供文件

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

请注意,这种方式会导致MSIE将文件另存为
pdfServlet
,而不是指定的文件名。即忽略内容处置头中的文件名,并获取路径的最后一部分。现在我是否可以将该jsf代码放入动态生成的锚标记中?例如,我有一个正在生成标记thi的控制器s way
result+=“
@BalusC如果我们在servlet中添加标题呢?或者简单地将用户重定向到文件呢?@CatFish,可以,因为它将转换为纯HTMLI。我不明白为什么要在控制器中生成视图。只需在视图中完成工作。如果您确实坚持,可以使用
显示它。但是它很臭。好吧,就在那里定一条路好吗?字符串连接等等<代码>“”并在servlet中通过
request.getPathInfo()
获取它。请参见上面我的答案。对不起,我是Java新手。我需要使用查询字符串吗?您需要使链接看起来像
,并且需要确保将servlet映射到
/servleturl/*
上,并且需要通过servlet中的
/filename.pdf
部分
请求.getPathInfo()
。就这样,工作得很有魅力!谢谢