0

我实际上是在使用此代码从服务器上的“不可用”文件夹中打印 JSP 中的 HTML 文件(我的意思是,如果我正在编写文件的正确 URL,则无法在浏览器上查看它们):

InputStreamReader isr = new InputStreamReader(new FileInputStream(request.getParameter("path")));
BufferedReader br = new BufferedReader(isr);    
String line = br.readLine();
while(line!=null){
    out.println(line);
    line = br.readLine();
}

在“路径”中有我的文件的 URL。这确实有效,但它在我启动这段代码的同一页面中显示了我的 HTML 文件。我实际上需要在新页面上执行此操作,例如当您以这种方式设置此 HTML A 标记时:

<a href="www.mywebsite.com" TARGET="_new">LINK</a>
4

1 回答 1

-1

我是这样解决的:

<a href="www.mywebsite.com/print?id=1&file=myfile.html" TARGET="_new">View</a>

在 servlet 打印中,我将此代码放入 doGet/doPost 调用的 processRequest(HttpServletRequest request, HttpServletResponse response) 中:

String path1 = "mydir1/";
String path2 = "mydir2/";
String file = request.getParameter("file");    
InputStreamReader isr;
BufferedReader br;
String line = "";
char id = request.getParameter("id").charAt(0);
if(id == '1') {
    isr = new InputStreamReader(new FileInputStream(mydir1 + file));
    br = new BufferedReader(isr);
    line = br.readLine();
    while(line!=null){
        out.println(line);
        line = br.readLine();
    }
}
else if(id == '2') {
    isr = new InputStreamReader(new FileInputStream(mydir2 + file));
    br = new BufferedReader(isr);
    line = br.readLine();
    while(line!=null){
        out.println(line);
        line = br.readLine();
    }
}
else {
    out.println("Error");
}

这样就没有更多的安全问题,因为最终用户/黑客无法查看整个路径,或者通过 get 方法传递它。

于 2012-12-27T11:03:56.537 回答