主要的引入包:
implementation 'org.eclipse.jetty:jetty-webapp:7.6.0.RC4' implementation 'org.eclipse.jetty:jetty-deploy:7.6.0.RC4' implementation 'org.eclipse.jetty:jetty-server:7.6.0.RC4' implementation 'org.eclipse.jetty:jetty-jsp-2.1:7.2.2.v20101205' implementation 'org.mortbay.jetty:jsp-2.1-glassfish:2.1.v20100127' implementation 'javax.servlet:servlet-api:2.5' implementation 'org.eclipse.jetty:jetty-client:7.6.0.RC4'
我这里的做法是启动一个服务,在服务里面用一个线程控制jetty的动作,不用引入外部的war包,直接用代码写网页。感觉也没啥好讲的,我这里就挑重点了。
开始:
Server server = new Server();
configureConnectors();
configureHandlers();
server.start();
停止:
server.stop();
server = null;
配置端口:
private void configureConnectors() {
if (server != null) {
SelectChannelConnector selectChannelConnector = new SelectChannelConnector();
selectChannelConnector.setUseDirectBuffers(false);
selectChannelConnector.setPort(_port);
selectChannelConnector.setHost(AppContext.HOST);
server.addConnector(selectChannelConnector);
LogUtils.e("Configured " + SelectChannelConnector.class.getName() + " on port " + _port);
}
}
配置自定义处理:
private void configureHandlers() {
if (server != null) {
HandlerCollection handlers = new HandlerCollection();
contexts = new ContextHandlerCollection();
handlers.setHandlers(new org.eclipse.jetty.server.Handler[]{contexts, new ShareFileHandler()});
server.setHandler(handlers);
}
}
ShareFileHandler这个是自己自定义的
/**
* 自定义处理方式
*/
public class ShareFileHandler extends org.eclipse.jetty.server.handler.DefaultHandler {
public ShareFileHandler() {
super();
}
@Override
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
if (response.isCommitted() || baseRequest.isHandled()) {
return;
}
baseRequest.setHandled(true);
String method = request.getParameter("method");
response.setContentType("text/html; charset=UTF-8");
//主页
if (TextUtils.equals("main", method) || TextUtils.isEmpty(method)) {
MainPagerModel.showMain(request, response);
}
//分享主页
else if (TextUtils.equals("ShareMain", method)) {
ShareFileModel.showShareFile(request, response);
}
//下载文件
else if (TextUtils.equals("download", method)) {
DownLoadFileModel.downLoadFile(request, response);
}
//上传文件
else if (TextUtils.equals("upLoadFile", method)) {
UpLoadFileModel.upLoadFile(request, response);
}
//显示文本
else if (TextUtils.equals("showText", method)) {
ShowTextModel.dealTextData(request, response);
} else {
BaseModel.defaultMsg(response, "sorry,this page not found or an unknown error!");
}
}
}
上面的各种方法,其实最后出去都是从下面这个方法出去的,反正基本学过servlet的基本会知道的,如果没有学过的,建议先去看看servlet
/**
* 设置输出
*
* @param response
*/
public static void defaultMsg(HttpServletResponse response, String msg) {
try {
String html = "<html>" +
"<head>" +
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">" +
"<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\" />" +
"</head>" +
"<body>" + msg +
"</body>" +
"</html>";
PrintWriter writer = response.getWriter();
writer.println(html);
writer.flush();
response.flushBuffer();
} catch (Exception e) {
LogUtils.e(e.toString());
}
}
下面根据上面的基础,编写了一个实用的小工具 下载地址
这个工具可以直接让手机和电脑互传文件,可以摆脱忘记拿U盘的束缚,方便简洁,也可以分享文件给局域网的小伙伴噢,手机毕竟是手机,跟电脑搭建的服务器还是有差别的,目前是1.0版本,可能还有很多的不稳定,喜欢的可以去下载用用