四个不同范围的内置对象 setAtt和getAtt
pageContext 只在本页中有效果
request 上下文
session 整个对话(不关闭浏览器都可以的数据)
application 整个服务器(不关闭服务器都可以得数据)
上传下载:
上传:smartupload
特点:
1 免费
2 代码简单
3 已经停止更新
步骤:
1 导入相关jar包
2 通过表单提交(method必须为post)
并且for标签多写一个属性:
enctype="multipart/form-data"
(可以提交多种类型的文件)
3 上传的表单元素标签<input type=”file”
4 上传页面:
//得到smartupload对象
SmartUpload su=new SmartUpload();
//初始化
su.initialize(pageContext);
//设置编码格式
su.setCharset("utf-8");
//限制上传的类型
//su.setAllowedFilesList("jpg,png,gif");//允许上传的文件类型
//su.setDeniedFilesList("exe,mp3"); //不允许上传的文件类型
//限制上传的大小
//su.setMaxFileSize(1024*1024*2);//限制单个文件的大小 字节
//su.setTotalMaxFileSize(500000);//限制总文件的大小
//上传到临时文件夹
su.upload();
//得到上传的文件
Files files= su.getFiles();
//循环遍历所有文件
for(int i=0;i<files.getCount();i++){
//得到第i个文件
File file= files.getFile(i);
//getFieldName --name值
//file.getFileName -- 文件名
//System.out.println(file.getFieldName()+"--"+file.getFileName());
if(!file.isMissing()){//如果选择了文件
int index=file.getFileName().lastIndexOf(".");// aa.png
long l= System.currentTimeMillis();
String str1=file.getFileName().substring(0, index);
String str2=file.getFileName().substring(index);
String filename=str1+l+str2;
String path=request.getRealPath("fileup/"+filename);
//上传
file.saveAs(path);
}
客户端只能访问tomcat服务器中的文件,不能访问服务器端的其他路径(是为了安全性)
下载:
//接受?传参 并且处理中文乱码
String filename=request.getParameter("filename");
filename=new String(filename.getBytes("ISO-8859-1"),"utf-8");
String path=request.getRealPath("fileup/"+filename);
File file=new File(path);
if(file.exists()){//如果存在
//设置响应头 (通过浏览器可以有下载的功能)
response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode(filename,"utf-8"));
//读
FileInputStream fis=new FileInputStream(file);
byte[] bytes=new byte[(int)file.length()];
fis.read(bytes);
fis.close();
//写 通过response的输出流
OutputStream os=response.getOutputStream();
os.write(bytes);
os.close();
//解决冲突 os和 response.getWriter();
out.clear();
out=pageContext.pushBody();
}
补充:在页面中去引用其他页面
<%@ include file="xxx.jsp" %>
我们能够在JSP中写哪些东东?
1 <%%>
2 <%=%>
3<%@ %>
4 HTML+CSS+JS
5 <%! %> --在JSP中定义方法