如何用jsp点击链接实现文本下载 txt文件总是打开下载不了。。。

 public class Filetran extends HttpServlet {


    @Id
    @GeneratedValue
    private static final long serialVersionUID = 1L;


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request,response);
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/plain;charset=UTF-8");


        implAllAction i = new implAllAction();
        List<Resource> list = i.selectfileapp();

        if (list.size()!=0)
        {   
            request.setAttribute("file", list);
            request.getRequestDispatcher("/Download.jsp").forward(request, response);

        }


    }

}


h3>以下是所有文档</h3>
<h3>可随意点击下载:</h3>
  <c:forEach items="${file}" var="fi">
  <a href="<%=basePath %>/upload/${fi.url}"  target="_blank">${fi.url}</a><br><br> 

下载的文件命名记得加 .txt后缀名

看浏览器了,你这样直接访问文件路径,有的浏览器会下载,有的却不会;
要想随意下载,改成后台二进制下载,不要直接访问文件路径

后台二进制下载意思是io流去实现是吗 那样是只能指定某个文件下载吗
public class DownloadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public DownloadServlet() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    response.setContentType("text/plain;charset=UTF-8");
    File file=new File("E:\\PLSQL.txt");
    FileInputStream fis=new FileInputStream(file);
    int size=fis.available();//文件大小(字节)
    response.setHeader("Content-Disposition","attachment;filename=".concat(String.valueOf(file.getName())));
    response.setHeader("CONTENT-LENGTH",new Integer(size).toString());
    response.setDateHeader("Last-Modified",file.lastModified());
    byte by[]=new byte[1024];
    int a=0;
    ServletOutputStream os=response.getOutputStream();
    while((a=fis.read(by))!=-1)
    {
        System.out.println(a);
        os.write(by,0,a);
    }
    os.flush();
    os.close();
    fis.close();

}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
}

}