一、文件的下载
开发环境搭建:
创建一个web项目,加入Apache的commons-fileupload文件上传组件的相关Jar包,如下图所示:
使用:
文件的下载中主要使用commons-io.jar包中的IOUtils工具类中的copy()方法进行下载的操作(不同的浏览器下载的确认框可能不同)。
火狐浏览器下载确认框
ie浏览器下载确认框
控制层代码示例:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//创建service层对象
StudentService stuService = new StudentServiceImpl();
//获取请求参数中的id值
int id = Integer.parseInt(request.getParameter(“id”));
//调用service
Student stu = stuService.findById(id);
/*
*获取文件存放的位置
*获取文件的输入流
*/
String realPath = this.getServletContext().getRealPath(“/updownload”);
String filePath=realPath+”/”+stu.getPhotname();
File file = new File(filePath);
InputStream in = new FileInputStream(file);
//设置请求头中文件的长度
response.setContentLength((int)file.length());
//设置请求头中文件的类型
response.setContentType(stu.getContentType());
//获取文件的真实名字
String realname = stu.getRealname();
//获取请求中的信息
String userAgent = request.getHeader(“User-Agent”);
//判断浏览器的类型,解决文件下载中中文乱码的问题 true解决ie浏览器 false时解决其他浏览器
if(userAgent.indexOf(“msie”)>=0 || userAgent.indexOf(“like”)>=0){
realname=URLEncoder.encode(realname,”utf-8″);
}else{
realname=new String(realname.getBytes(“utf-8″),”iso8859-1”);
}
//设置请求头,声明处理的类型为文件
response.setHeader(“Content-disposition”, “attachment;filename=”+realname);
//获取输出流对象
ServletOutputStream out = response.getOutputStream();
//拷贝服务器文件到客户端
IOUtils.copy(in, out);
/*
* 关闭资源
*/
out.close();
in.close();
}
注意:
1.下载时中文乱码的解决
//获取请求中的信息
String userAgent = request.getHeader(“User-Agent”);
//判断浏览器的类型,解决文件下载中中文乱码的问题 true解决ie浏览器 false时解决其他浏览器
if(userAgent.indexOf(“msie”)>=0 || userAgent.indexOf(“like”)>=0){
realname=URLEncoder.encode(realname,”utf-8″);
}else{
realname=new String(realname.getBytes(“utf-8″),”iso8859-1”);
}
2.在编写下载代码时需要指定请求头信息
//动态获取tomcat中项目中资源文件的物理存放路径
String realPath = this.getServletContext().getRealPath(“/updownload”);
String filePath=realPath+”/”+stu.getPhotname();
File file = new File(filePath);InputStream in = new FileInputStream(file);
//设置请求头中文件的长度
response.setContentLength((int)file.length());
//设置请求头中文件的类型
response.setContentType(stu.getContentType());
//设置请求头,声明处理的类型为文件
response.setHeader(“Content-disposition”, “attachment;filename=”+realname);
二、Svn的介绍
1.什么是版本控制
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况以及回溯的系统。 任何类型的文件都可以进行版本控制。
2. 常用版本管理软件
①VSS:Microsoft 提供,Window 平台,小型开发团队所适合的工具。
②CVS:开源工具,跨平台。绝大多数 CVS 服务已改用 SVN。CVS 已停止维护
③ SVN(Subversion):开源,跨平台,在 CVS 的基础上开发。使用企业众多, 稳定安全,操作简单。集中式版本控制系统。
④ GIT:开源的分布式版本控制系统,用以有效高速的处理从很小到非常大的项 目版本管理。(GITHUB 是一个用 GIT 做版本控制的项目托管平台,B/S 架构。 放到 GITHUB 上的代码需要开源,并且是互联网开发)
3.什么是集中式
将项目等部署到同一台机器上,对机器性能要求比较高,一般会用多台机器备份,否则,如果机器出现死机等状况,整个项目将不能运行。
4.什么是分布式
将一个项目分成几块,分别在不同的机器上运行,相比较与集中式,对机器要求有所下降。
客户端 subclipse使用:
1.选中项目右键——–team—-share project—-选择 SVN
2. 提交版本位置、用户名、密码都会由相关服务器管理人员提供。
①branches:用来使用新技术开发时进行测试时使用
②tags:标签
③trunk:主干,实际开发中代码没有问题时,把代码存储在trunk中
4.可以选择记住密码,避免多次的重复输入。
5. 提交后会跳到 team synchronizing view,还需要真正同步代码到服务器,同 步之前可以选择哪些代码不需要使用 svn 进行管理
6. 提交成功后可以观察版本库容量的变化
7. 提交成功后客户端项目会显示专门的标记,并且增加了相应的.svn 项目,来 存储操作记录
7. 断开和服务器连接
8.客户端从 SVN 检出项目 a) new— Project…——–SVN—-从 SVN 检出项目
9. 更新和提交操作
a) 更新将服务器最新代码更新到本地;提交是将本地最新代码提交到服务器
b) 提交之前要先更新,因为可能其他程序员期间以及提交了最新代码到服务器
c) 提交一定要给出注释,对提交内容进行说明,作为以后辨别版本的主要依据。
10 解决冲突
① 模拟两个用户对一个类进行修改,分别修改相同的方法和增加一个新方法
② 更新后出现冲突,和冲突方沟通后,对冲突文件给出最终解决方案
③ 还需要 team—-标记为解决,相应冲突文件为自动删除,当前文件由冲突状态 转换为已修改状态,待提交
11. 还原没有提交的代码
team—-还原
12. 还原已经提交的代码
①如果最新的代码出现问题,可以直接修改,也可以回滚到之前的某个历史版 本,直接使用或者进行修改
②查看资源历史记录
③ 根据注释确定要还原的版本,无法确定可以查看或者比较代码
④ 确定版本后,右键选择”从修订班 x 回复更改”
⑤ 可能出现冲突,解决后提交代码到服务器
免责声明:文章内容来自互联网,本站仅提供信息存储空间服务,真实性请自行鉴别,本站不承担任何责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:文件的下载和Svn的介绍使用-svn下载到本地 https://www.bxbdf.com/a/144664.shtml