建立jfinal工程使用jetty运行
工程结构如下(注意要导入cosjar包)
DemoConfig.java类
package com.cjq.config;
import com.cjq.controller.FileController;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.core.JFinal;
import com.jfinal.plugin.redis.RedisPlugin;
import com.jfinal.render.ViewType;
public class DemoConfig extends JFinalConfig{
@Override
public void configConstant(Constants arg0) {
arg0.setViewType(ViewType.JSP);
}
@Override
public void configHandler(Handlers arg0) {
}
@Override
public void configInterceptor(Interceptors arg0) {
}
@Override
public void configPlugin(Plugins arg0) {
}
@Override
public void configRoute(Routes arg0) {
arg0.add("file",FileController.class,"file");
}
public static void main(String[] args) {
JFinal.start("WebContent", 80, "/", 5);
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>jfinal_demo</display-name>
<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>com.cjq.config.DemoConfig</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
FileService.java
package com.cjq.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
public class FileService {
//文件拷贝
public void fileChannelCopy(File s, File t) {
FileInputStream fi = null;//文件输入流
FileOutputStream fo = null;//文件输出流
FileChannel in = null;
FileChannel out = null;
try {
fi = new FileInputStream(s);
fo = new FileOutputStream(t);
in = fi.getChannel();//获取读入的文件通道
out = fo.getChannel();//获取写出的文件通道
in.transferTo(0, in.size(), out);// 连接两个通道,从文件输入流读取数据到文件输出流
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fi.close();
in.close();
fo.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
FileController.java
package com.cjq.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import com.jfinal.core.Controller;
import com.jfinal.kit.PathKit;
import com.jfinal.upload.UploadFile;
public class FileController extends Controller {
public void index() {
render("index.html");
}
public void downfile() {//文件下载
File file = new File("G:\\Jfinal\\file\\test.png");
//本地的一张图片
if (file.exists()) { //如果文件存在
renderFile(file);
} else {
renderJson();
}
}
public void uploadFile() {//文件上传
UploadFile uploadFile = this.getFile();//获取前台上传文件对象
String fileName = uploadFile.getOriginalFileName();//获取文件名
File file = uploadFile.getFile();//获取文件对象
FileService fs = new FileService();
File t = new File("G:\\Jfinal\\file\\" + UUID.randomUUID().toString()
+ file.getName().substring(file.getName().lastIndexOf(".")));//设置本地上传文件对象(并重命名)
try {
t.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
fs.fileChannelCopy(file, t);//将上传的文件的数据拷贝到本地新建的文件
file.delete();
this.renderHtml("success,<a href=\"./\">back</a>");
}
}
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/file/uploadFile" enctype="multipart/form-data" method="post">
<input type="file" name="file"/>
<input type="submit"/>
</form>
<a href="/file/downfile">下载</a>
</body>
</html>
运行JfinalDemo类,打开浏览器访问http://localhost/file
点击选择文件上传,选择一个文件上传,我这里上传的是一张图片
点击打开
然后点提交
去本地目录下查看
点击上面页面back超链接,回到上一个地址,点击下载
(我下载的是G:\Jfinal\file\test.jpg的图片)
源码百度网盘链接:http://pan.baidu.com/s/1dFOWnp3 密码:n6au