51,411
社区成员
发帖
与我相关
我的任务
分享本人非软件开发的,只是工作需写这样的小程序。能力有限,也只是实现下基本功能。
软件效果图:删除,下载这些就不切图,意义不大。代码都是网上到处找来调试的。有不明白可加微信(TED_Sweet)


1. LoginServlet 验证实现
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String _userName = req.getParameter("username");
String _passWord = req.getParameter("password");
HttpSession session = req.getSession();
String url = req.getRequestURI();
if(session.getAttribute("username") != null){//非第一次登陆 之后的action
RequestDispatcher rd = req.getRequestDispatcher("upload.jsp");
session.setAttribute("username", _userName);
rd.forward(req,resp);
} else {
if(_userName != null && _passWord != null && _userName.length() > 0 && _passWord.length() > 0 && new User().checkUser(_userName, _passWord)) {//第一次action
RequestDispatcher rd = req.getRequestDispatcher("upload.jsp");
session.setAttribute("username", _userName);
rd.forward(req,resp);
} else { //密码不对
resp.setContentType("text/html;charset=GBK");
resp.getWriter().print(
"<script language='javascript'> alert('用户或密码不对'); window.location.href='index.html'; </script>");
}
};
}
}
2.验证用户和密码的。没用数据库 user
public class User {
public String allUser;
public boolean checkUser(String name,String pass){
if(allUser.indexOf(name) >= 0 && allUser.indexOf(pass) >= 0 && allUser.indexOf(name + "," + pass) >= 0 ) {
return true; //找到用户和密码,有权限
} else {
System.out.println("用户名和密码不对。" );
return false;
}
}
User(){
allUser = "username1,password1;username2,password2;hejinxu,hello;grand,baidu.com;";//登陆用户和密码
}
}
3.删除文件 用的
package am.demo;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URLDecoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@SuppressWarnings("serial")
public class Delete extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws FileNotFoundException, IOException {
HttpSession session = request.getSession();
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=GBK");
String username = (String)session.getAttribute("username");
String aFileName= new String(request.getParameter("name").getBytes("iso8859-1"),"utf-8");
File file = new File("C:/javacode/good/WebRoot/file/" + username, aFileName);
if (!file.isDirectory()) {
System.out.println(file.getAbsolutePath());
file.delete();
response.getWriter().print(
"<script language='javascript'> alert('删除成功'); window.location.href='upload.jsp'; </script>");
} else {
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
doGet(request, response);
}
}
下载文件 用的
package am.demo;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@SuppressWarnings("serial")
public class Download extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// String aFileName = new String(request.getParameter("name").getBytes(
// "iso8859-1"), "gbk");
HttpSession session = request.getSession();
String username = (String)session.getAttribute("username");
String aFileName= new String(request.getParameter("name").getBytes("iso8859-1"),"utf-8");
File fileLoad = new File("C:/javacode/good/WebRoot/file/" + username, aFileName);
FileInputStream in = null; // 输入流
OutputStream out = response.getOutputStream();
byte b[] = new byte[1024];
try {
response.setContentType("application/x-msdownload;");
response.setHeader("Content-disposition", "attachment; filename="
+ new String(aFileName.getBytes("GBK"), "ISO-8859-1"));
// download the file.
in = new FileInputStream(fileLoad);
int n = 0;
while ((n = in.read(b)) != -1) {
out.write(b, 0, n);
}
} catch (Throwable e) {
e.printStackTrace();
} finally {
try {
in.close();
out.close();
} catch (Throwable e) {
e.printStackTrace();
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
doGet(request, response);
}
}
文件对象
package am.demo;
import java.util.Date;
public class FileI {
String name; //名
String size;//大小
String date;//时间
String action;//操作
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
}
要用jquery easy ui ,就得做数据处理的。
package am.demo;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@SuppressWarnings("serial")
public class getFileJson extends HttpServlet {
private String uploadPath = ""; // 上传文件的目录
@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
try {
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
HttpSession session = request.getSession();
String page = (String)request.getParameter("page");
String rows = (String)request.getParameter("rows");
String pathfile = request.getSession().getServletContext().getRealPath((String)session.getAttribute("username"));
//uploadPath= "D:\\javacode//good//WebRoot//file//" + (String)session.getAttribute("username");
uploadPath= "C:/javacode/good/WebRoot/file/" + (String)session.getAttribute("username");
List list = getFile(uploadPath,(String)session.getAttribute("username"),page, rows);
//使用阿里巴巴的fastJson创建JSONObject
JSONObject result = new JSONObject();
//通过fastJson序列化list为jsonArray
String jsonArray = JSON.toJSONString(list);
JSONArray array = JSONArray.parseArray(jsonArray);
result.put("total", getTotal(uploadPath)+ "");
//将序列化结果放入json对象中
result.put("rows", array);
//使用自定义工具类向response中写入数据
ResponseUtil.write(response, result);
} catch (Exception e) {
// 可以跳转出错页面
e.printStackTrace();
}
}
//取得总数量
public int getTotal(String path) {
File file = new File(path);
File[] array = file.listFiles();
return array.length -1;
}
/**
*
* @param path 要读取的目录文件
*/
public List getFile(String path,String username,String page,String rows) {
List<FileI> list = new ArrayList();
// get file list where the path has
File file = new File(path);
// get the folder list
File[] array = file.listFiles();
//System.out.println("tt=" + array.length);
//按时间排序
Arrays.sort(array, new Comparator<File>() {
public int compare(File f1, File f2) {
long diff = f2.lastModified() - f1.lastModified();
if (diff > 0)
return 1;
else if (diff == 0)
return 0;
else
return -1;//如果 if 中修改为 返回-1 同时此处修改为返回 1 排序就会是递减
}
public boolean equals(Object obj) {
return true;
}
});
int pageInt = Integer.parseInt(page);
int rowsInt = Integer.parseInt(rows);
//处理字段数据
for (int i = 0; i < array.length ; i++) {
//System.out.println("i=" + i);
FileI f = new FileI();
if (array[i].isFile()) {
// only take file name
String strLen="";
String strDT="";
long lFile=0;
f.setName(array[i].getName());
lFile=array[i].length(); //文件大小
if(lFile>1000000){
lFile=lFile/1000000;
strLen="" + lFile + " MB";
}else if(lFile>1000){
lFile=lFile/1000;
strLen="" + lFile + " KB";
} else{
strLen="" + lFile + " Byte";
}
f.setSize(strLen);
Date dt=new Date(array[i].lastModified());//文件时间
String strDateFormat = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
strDT = sdf.format(dt);
f.setDate(strDT);
String tt = "<a href='Download?name=" + array[i].getName() + "'>下载</a>   " +
//"<a href=\"file/" + username + "/" + array[i].getName() + "\">查看</a>    " +
"<a href='fileDelete?name=" + array[i].getName() + "'>删除</a> "
;
f.setAction(tt);
} else if (array[i].isDirectory()) {
getFile(array[i].getPath(),username,page,rows);
}
list.add(f);
}
//按page和rows取数据列
List<FileI> lst = new ArrayList();
if(rowsInt*pageInt > list.size()) {
for (int i = (pageInt-1)*rowsInt; i < list.size(); i++) {
lst.add(list.get(i));
}
} else {
for (int i = (pageInt-1)*rowsInt; i < (pageInt-1)*rowsInt + rowsInt && pageInt >0 ; i++) {
lst.add(list.get(i));
}
}
//按日期排序
return lst;
}
}
写数据 的。
package am.demo;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
/**
* Created by xp on 2017/4/14.
*/
public class ResponseUtil {
/**
* 向response对象写入数据
* @param response
* @param obj
* @throws Exception
*/
public static void write(HttpServletResponse response, Object obj)throws Exception{
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
System.out.println("------------------" + obj.toString());
out.println(obj.toString());
out.flush();
out.close();
}
}
上传文件实现类
package am.demo;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import net.sf.json.JSONArray;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
@SuppressWarnings("serial")
public class Upload extends HttpServlet {
private String uploadPath = "d://temp"; // 上传文件的目录
@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
try {
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
HttpSession session = request.getSession();
//uploadPath= "C:\\javacode\\.metadata\\.me_tcat\\webapps\\good\\file\\" + (String)session.getAttribute("username");
uploadPath= "C:\\javacode\\good\\WebRoot\\file\\" + (String)session.getAttribute("username");
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
request.setCharacterEncoding("utf-8");
List<FileItem> items = upload.parseRequest(request);// 得到所有的文件
Iterator<FileItem> i = items.iterator();
while (i.hasNext()) {
FileItem fi = (FileItem) i.next();
String fileName = fi.getName();
if (fileName != null && fileName.length() > 0) {
File fullFile = new File(fi.getName());
File savedFile = new File(uploadPath, fullFile.getName());
fi.write(savedFile);
System.out.println("fi.getSize()=" + fi.getSize());
}
}
//getFile("D:\\temp");
response.setContentType("text/html;charset=GBK");
//JSONArray object=JSONArray.fromObject(getFile("D:\\temp"));
// request.setAttribute("list", object);
// request.setAttribute("list", getFile("D:\\temp"));
response.getWriter().print(
"<script language='javascript'>alert('上传成功');window.location.href='upload.jsp?spage=0&epage=14'; </script>");
} catch (Exception e) {
// 可以跳转出错页面
e.printStackTrace();
}
}
/**
*
* @param path 要读取的目录文件
*/
public List getFile(String path) {
List<FileI> list = new ArrayList();
// get file list where the path has
File file = new File(path);
// get the folder list
File[] array = file.listFiles();
for (int i = 0; i < array.length; i++) {
FileI f = new FileI();
if (array[i].isFile()) {
// only take file name
f.setName(array[i].getName());
//System.out.println("^^^^^" + array[i].getName() + "pp");
// take file path and name
//System.out.println("#####" + array[i] + "ii");
// take file path and name
//System.out.println("*****" + array[i].getPath() + "66");
} else if (array[i].isDirectory()) {
getFile(array[i].getPath());
}
list.add(f);
}
return list;
}
public void init() throws ServletException {
File uploadFile = new File(uploadPath);
if (!uploadFile.exists()) {
uploadFile.mkdirs();
}
}
}
web配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<!-- servlet名称,与servlet-mapping中的servlet-name必须一致 -->
<servlet-name>LoginServlet</servlet-name>
<!--Servlet类的位置-->
<servlet-class>LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<!-- servlet名称,与上面中的servlet-name必须一致 -->
<servlet-name>LoginServlet</servlet-name>
<!-- servlet名称,与上面中的servlet-name必须一致 -->
<url-pattern>/LoginServlet.action</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Upload</servlet-name>
<servlet-class>am.demo.Upload</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Upload</servlet-name>
<url-pattern>/fileupload</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Download</servlet-name>
<servlet-class>am.demo.Download</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Download</servlet-name>
<url-pattern>/Download</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Delete</servlet-name>
<servlet-class>am.demo.Delete</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Delete</servlet-name>
<url-pattern>/fileDelete</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>getFileJson</servlet-name>
<servlet-class>am.demo.getFileJson</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getFileJson</servlet-name>
<url-pattern>/getFileJson</url-pattern>
</servlet-mapping>
<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error404.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.RuntimeException</exception-type>
<location>/error404.jsp</location>
</error-page>
</web-app>
登陆界面index.html
<!DOCTYPE html>
<html><head><title>系统登录</title>
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="renderer" content="webkit"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge;chrome=1">
<meta http-equiv="Cache-Control" content="no-cache,no-store,must-revalidate">
<meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Expires" content="0">
<meta http-equiv="X-DNS-Prefetch-Control" content="on">
<link rel="shortcut icon" href="img/favicon.ico" type="image/x-icon">
<link href="index_files/font_561788_mfi695r6fcr.css" rel="stylesheet">
<link rel="icon" href="img/favicon.ico">
<link href="index_files/login.css" rel="stylesheet"></head>
<body>
<noscript>你需要开启JavaScript支持才能正常浏览该网页。</noscript>
<script type="text/javascript">
function checkip() {
var start_time_wate = $('#exampleInputName1').val()
if (start_time_water=="" ){
alert('用户名不能为空!')
return false;
}
else{
var start_time_wate1 = $('#pb').val()
if (start_time_water1=="" ){
alert('密码不能为空!')
return false;
}
else{
return true;
}
}
}
</script>
<script type="text/javascript">
function beforeSubmit(form){
if(form.username.value==''){
alert('用户名不能为空!');
form.username.focus();
return false;
}
if(form.password.value==''){
alert('密码不能为空!');
form.password.focus();
return false;
}
return true;
}
</script>
<div class="view-login">
<div class="wrap" style="padding-top: 230px;padding-left: 160px;">
<div class="half form-card" style="align:center;">
<div class="form-head">
<h4>登录</h4>
</div>
<div class="form-body">
<form id="j_login_form" action="LoginServlet.action" method="post" onSubmit="return beforeSubmit(this);">
<div class="form-item">
<i class="affix-i icon icon-user1"></i>
<input class="affix" data-type="username" autocomplete="on" placeholder="用户名" type="text" name="username" id="exampleInputName1">
</div>
<div class="form-item">
<i class="affix-i icon icon-lock"></i>
<input type="password" class="affix" data-type="password" autocomplete="off" placeholder="密码" type="password" name="password" id="pb">
</div>
<button id="j_submit" class="submit" type="submit">
<i class="icon icon-loading"></i> 登录
</button>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
这个文件 关键一些,是展示文件 。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="java.io.*,java.net.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>文 件 上 传</title>
<link rel="stylesheet" href="js/jquery-easyui-1.5/themes/default/easyui.css"/>
<link rel="stylesheet" href="js/jquery-easyui-1.5/themes/icon.css"/>
<script src="js/jquery-easyui-1.5/jquery.min.js"></script>
<script src="js/jquery-easyui-1.5/jquery.easyui.min.js"></script>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="">
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body class="easyui-layout">
<script type="text/javascript">
function checkip() {
var start_time_water = $('#exampleInputName2').val()
if (start_time_water=="" ){
alert('请选择文件!')
return false;
}else{
return true;
}
}
function loadImage(img) {
var filePath = img.value;
var fileExt = filePath.substring(filePath.lastIndexOf("."))
.toLowerCase();
if (!checkFileExt(fileExt)) {
alert("您上传的文件格式不对,请重新上传!");
img.value = "";
return;
}
if (img.files && img.files[0]) {
// alert(img);
// alert(img.files[0])
if( (img.files[0].size / 1024).toFixed(0) > 10000) {
img.value = "";
alert("请选择小于10M的文件 !");
return;
}
// alert('你选择的文件大小' + (img.files[0].size / 1024).toFixed(0) + "kb");
}
}
function checkFileExt(ext) {
if (!ext.match(/.xlsx|.xls|.csv|.txt/)) {
return false;
}
return true;
}
</script>
<%
if(session.getAttribute("username") == null) {
response.sendRedirect("index.html");
}
%>
<div data-options="region:'north',title:'文件上传 ,文件需小于10Mb,仅支持的文件格式:(xlsx xls csv txt)',split:true" style="height:130px;" >
<form name="myform" action="fileupload" method="post"
enctype="multipart/form-data" onsubmit="return checkip()">
     选择要上传文件:<br>
    <input type="file" name="myfile" id="exampleInputName2" onchange="loadImage(this)"><br>
<br>
    <input type="submit" name="submit" value="提交">
</form>
</div>
<div data-options="region:'south',title:'',split:true" style="height:100px;">
</div>
<div data-options="region:'west',title:'信息 ',split:true" style="width:150px;">
<BR>
  欢迎<%=session.getAttribute("username") %>登陆<br><br>
</div>
<div data-options="region:'center',title:'文件目录'" style="padding:5px;background:#eee;">
<table id="dg"
style="width:50%;height:70%">
</table>
</div>
<script type="text/javascript">
//初始化表格
var grid = $('#dg').datagrid({
url:'getFileJson',
rownumbers : true, //显示行号
//fit : true,// 自动大小
method:'post',
singleSelect:true,
pagination: true,
//设置每页显示的记录数,默认是10个
//每页显示记录数项目
pageNumber: 1, //当前页数
pagination:true,
fitColumns : true,
columns : [ [ {
field : 'name',
title : '文件名称',
width : 180
}, {
field : 'size',
title : '大件大小',
width : 60
},{
field : 'date',
title : '上传时间',
width : 80
},{
field : 'action',
title : '操作',
width : 50
}, ] ]
});
</script>
</body>
</html>