import java.awt.*
import java.awt.event.*
import java.awt.geom.*
import javax.swing.*
//不规则图形的绘制
public class IrregularShapeDemo extends JFrame {
GeneralPath gPath= new GeneralPath()//GeneralPath对象实例
Point aPoint
//构造函数
public IrregularShapeDemo() {
super("不规则图形的绘戚拦纤衡余制")//调用父类构造函数
enableEvents(AWTEvent.MOUSE_EVENT_MASK|AWTEvent.MOUSE_MOTION_EVENT_MASK)//允许事件
setSize(300, 200)//设置窗口尺寸
setVisible(true)//设置窗口可视
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)//关闭窗口时退出程序
}
public void paint(Graphics g) { //重载窗口组件的paint()方法
Graphics2D g2D = (Graphics2D)g//获取图形环境
g2D.draw(gPath)//绘制路径
}
public static void main(String[] args) {
new IrregularShapeDemo()
}
protected void processMouseEvent(MouseEvent e) { //鼠标事件处理
if(e.getID() == MouseEvent.MOUSE_PRESSED) {
aPoint = e.getPoint()//得到当前鼠标点
gPath = new GeneralPath()//重新实例化GeneralPath对象
gPath.moveTo(aPoint.x,aPoint.y)//设置路径点
}
}
protected void processMouseMotionEvent(MouseEvent e) { //鼠标运动事件处理
if(e.getID() == MouseEvent.MOUSE_DRAGGED) {
aPoint = e.getPoint()//得到当前鼠标点
gPath.lineTo(aPoint.x, aPoint.y)//设高仿置路径
gPath.moveTo(aPoint.x, aPoint.y)
repaint()//重绘组件
}
}
}
首先,我们创建一个新的web工程,在工程的WebRoot目录下新建一个upload文件夹,这样当我们将该工程部署到服务器上时,服务器便也生成个upload文件夹,用来存放上传的资源。
然后,在WebRoot目录下新建一个jsp文件,主要实现的作用就是选择上传的文件,提交至servlet来进行处理
详细代码如下:一个form将文件信息通过post方式传送到指定的servlet
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%
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 <%=basePath%>">
<title>My 液昌碰JSP 'upload.jsp' starting page</title> <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="This is my page"> <!--
<link rel="stylesheet" type="text/css" > -->
</head>
<body>
<form action="/upload/UpLoad" method="post" enctype="multipart/form-data">
请选择上传的图片或文件:<input type="file" name="fileName"/><input type="submit" value="上传"/>
</form>
</body>
</html>
可以看到,我们将数据提交到工程下的upload/UpLoad。 之后,我们就来编写这个servlet——UpLoad.java
package load import java.io.Fileimport java.io.IOException import java.io.PrintWriter import java.util.List
import javax.servlet.ServletContext import javax.servlet.ServletException import javax.servlet.http.HttpServlet
import javax.servlet.http.HttpServletRequest import javax.servlet.http.HttpServletResponse import mons.fileupload.FileItem
import mons.fileupload.FileUploadException import mons.fileupload.disk.DiskFileItemFactory import mons.fileupload.servlet.ServletFileUpload public class UpLoad extends HttpServlet { @SuppressWarnings("unchecked") @Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("闹谈utf-8")
resp.setContentType("text/htmlcharset=utf-8")
//为解析类提供配置信息
DiskFileItemFactory factory = new DiskFileItemFactory()
//创建解析类的迅源实例
ServletFileUpload sfu = new ServletFileUpload(factory)
//开始解析
sfu.setFileSizeMax(1024*400)
//每个表单域中数据会封装到一个对应的FileItem对象上 try {
List<FileItem> items = sfu.parseRequest(req)
//区分表单域
for (int i = 0 i < items.size() i++) { FileItem item = items.get(i)
var cpro_psid ="u2572954" var cpro_pswidth =966 var cpro_psheight =120
//isFormField为true,表示这不是文件上传表单域 if(!item.isFormField()){
ServletContext sctx = getServletContext()
//获得存放文件的物理路径
//upload下的某个文件夹 得到当前在线的用户 找到对应的文件夹
String path = sctx.getRealPath("/upload") System.out.println(path)
//获得文件名
String fileName = item.getName() System.out.println(fileName)
//该方法在某些平台( *** 作系统),会返回路径+文件名
fileName = fileName.substring(fileName.lastIndexOf("/")+1) File file = new File(path+"\\"+fileName) if(!file.exists()){ item.write(file)
//将上传图片的名字记录到数据库中
resp.sendRedirect("/upload/l") } } }
} catch (Exception e) { e.printStackTrace() }
}
}
因为已对 代码做了详细的注释,所以相信大家也能基本上传的这个过程。要注意的一点是解析实例空间大小的设置。我们希望上传的文件不会是无限大,因此,设置
.setFileSizeMax(1024*400)楼扮判上的写的没厅喊改错,不过感觉太麻烦了渗扮,用hutool工具包来写个方法
HttpUtil.downloadFile("https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png", new File("F://demo4/baidu_logo.png"))
第一个参数为百度logo图片,第二个为我本地下载位置,下载结果如图
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)