Java 缓冲读取器按原样复制,不接受值

Java 缓冲读取器按原样复制,不接受值,java,servlets,bufferedreader,Java,Servlets,Bufferedreader,有两个问题: 文件读取器中的路径是实际路径,但我需要相对路径 从文件中读取内容后,我将该内容存储到一个字符串中,当我打印字符串时,它不会打印实际内容 cn和ci的值以下是代码 String content = ""; String cn, ci; cn = request.getParameter("carrier_name"); ci = request.getParameter("carrier_id"); BufferedReader in = new BufferedReader(new

有两个问题:

  • 文件读取器中的路径是实际路径,但我需要
    相对路径
  • 从文件中读取内容后,我将该内容存储到一个字符串中,当我打印字符串时,它不会打印实际内容
    cn和ci的值以下是代码

    String content = "";
    String cn, ci;
    cn = request.getParameter("carrier_name");
    ci = request.getParameter("carrier_id");
    BufferedReader in = new BufferedReader(new FileReader("C:\\Users\\abcd\\Documents\\NetBeansProjects\\sendmail\\web\\mailformat.html"));
    String str;
    while ((str = in.readLine()) != null) {
        content += str;
    }
    
    in.close();
    out.println(""+content+"");
    
  • mailformat.html

    hello
    carrier name :<label >"+cn+"</label>
    carrier id <label>"+ci+"</label>
    
    你好 承运人名称:“+cn+” 承运人id“+ci+”
    您不能只阅读文本,期望JVM理解文本并将其视为自定义字符串格式。您必须遍历从文件中读取的字符串,并找到应该用参数替换的标记

    此方法可能会派上用场:


    对于相对路径部分:只需使用相对路径。它没有什么神奇之处。

    要获得web应用程序的相对路径,您可以使用

    但由于这似乎是邮件消息的模板,所以您可以将其放入类路径中并使用

    至于在内容中加入价值观,你可以更换配速器

    <label >"+cn+"</label>
    
    “+cn+”
    

    “+ci+”
    

    使用从请求中获得的值。

    从路径实例化文件实例。请注意,相对路径必须是相对于某个对象的,例如当前目录。顺便说一句,在路径中使用“/”而不是“\”,因为Windows不在乎,它的*nix友好,并且可以避免所有转义

    使用StringBuilder而不是连接字符串。它更高效、更灵活

    将非最终局部变量初始化为null;这是一个很好的做法


    在使用cn和ci显示的代码中,您不执行任何操作。您是否打算用变量的值替换内容中的“cn”和“ci”?您必须进行某种查找和替换。

    在我看来,最好使用JSP或其他模板系统来解决此问题,而不是编写自己的模板系统。
    <label >"+cn+"</label>
    
    <label >"+ci+"</label>