在JSP中下载文本文档
通常,我们需要提供一个文件下载的时候,仅需要一个超链接就可以解决。
比如exe文件,鼠标左键点击链接就会提示你直接执行还是保存,右键则可以直接另存为。。。
但是有一部分文件,比如txt等可以在浏览器中直接打开的文件,你只能用鼠标右键点击链接然后另存为的方式去保存该文件,如果直接点击左键,该文件就在浏览器中被打开了。
在一些需求中,我们需要让txt拥有exe文件类似的动作,即左键点击时也让它提示保存还是打开。
网上很多文章都提到用jspsmartupload去做这件事情,smartupload当然是个好东西,可以用的时候尽管用,但是它并不是必须的,我们在jsp中可以直接设置response的Header (Content-Disposition) 来达到目的。下面是整个过程:
1)首先你要提供一个下载的链接,或者button,如:
<a href="download.jsp">文件下载</a>
<button type="submit" onClick="window.open('download.jsp')">文件下载</button>
总之,需要有一个方法跳转到实现文件下载的jsp或者servlet中。
2)在download.jsp(或者实现同样功能的servlet)中,代码如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%
/* 前半部分是获得server上webcontent的真实路径,
* 因为获得一个FileInputStream必须使用"E:/webcontent/filename.txt"这种类型的真实路径,
* 而不是"http://www.xxx.com/xxx/filename.txt"这种URL的形式。
* dataname 是具体的文件相对于webcontent的路径 */
String fullname = request.getSession().getServletContext().getRealPath("/") + dataname;
// filename是保存时的默认文件名,经实验,在Firefox2和IE7中,这个文件名是有用的,在IE6中似乎没什么用,有兴趣的人再去研究研究吧
String filename = fullname.substring(fullname.lastIndexOf('/'));
int i = 0;
response.setContentType("text/plain");
// 关键是设置这个Hea
相关文档:
用了commons-fileupload-1.2.jar和commons-io-1.3.2.jar这两个包。
save.jsp
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.regex.*"%>
<%@ page import="org.apache.co ......
<%@ page language="java" import="kg.TestBean2;" %>
<%@ page contentType="text/html;charset=gb2312" %>
<html>
<head>
<title>HelloBean</title>
</head>
<body>
<%--
<%
kg.TestBean2 testbean=(kg.TestBean2)session.setAttribute("testbean");
if ......
JSP共有以下6种基本动作:
1.jsp:include:在页面被请求的时候引入一个文件。
2.jsp:useBean:寻找或者实例化一个JavaBean。
3.jsp:setProperty:设置JavaBean的属性。
4.jsp:getProperty:输出某个JavaBean的属性。
5.jsp:forward:把请求转到 ......
struts-config:
<action path="/articleManage" name="articleManageForm" scope="request" type="auction.action.ArticleManageAction" validate="false">
<forward name="atriclesList" path="/WEB-INF/publish/articleManage/atriclesList.jsp"/>
<forward ......