准备工作:
commons-fileupload-1.2.1.jar
commons-io-1.4
java页
package com.baidu.com; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import com.sun.xml.internal.bind.v2.runtime.Name; public class Test4 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { //先建立磁盘文件项工厂 DiskFileItemFactory diskFileItemFactory =new DiskFileItemFactory(); //创建一个核心解析类 ServletFileUpload fileupload = new ServletFileUpload(diskFileItemFactory); //利用核心解析类解析Request List<FileItem> list = fileupload.parseRequest(request); //遍历这个List集合,得到代表每个部分的文件项对象,根据判断是否是文件 for (FileItem fileItem : list) { //判断这个问津是普通箱还是文件上传项 if (fileItem.isFormField()) { //普通箱 //接受普通项目的值 //如果是普通箱那就取普通项的名称和值(接受值不能再使用request.getparameter()) String name = fileItem.getFieldName(); //拿普通类型的值 String value = fileItem.getString("UTF-8"); System.out.println("输出打印 :"+ name +" "+value); // }else { //文件上传项 //获得文件上传的文件名称 String filename = fileItem.getName(); //获得文件上传的文件数据 InputStream is = fileItem.getInputStream(); //获得文件上传的文件的路径 ,池畔的绝对路径 String realpath = getServletContext().getRealPath("./a"); //创建一个输出流写入到刚才(上面)的设置的路径中 OutputStream os = new FileOutputStream(realpath+"/"+filename); //以下两个输出流,利用之前所学的数组传输字节流对象 //定义一个int类型的变量 int len = 0; //定义一个byte类型的数组 byte[] b = new byte[1024]; while ((len = is.read(b))!= -1) { os.write(b, 0, len); } os.close(); is.close(); } } } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } |
a.jsp页
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTf-8"> <title>Insert title here</title> </head> <body> <h1>文件上传</h1> <form action="/shangchuanxiazai/Test1" method="post" enctype="multipart/form-data"> 文件描述:<input type ="text" name="info"><br> 文件上传:<input type="file" name = "up"><br> <input type = "submit" value="上传"> </form> </body> </html> |
-
很多人说自己很辛苦,没日没夜地熬夜,用这个来证明自己很值得被投资,这就很难沟通。其实拉投资、赚大钱的逻辑,事实上是比抓风口的能力。在一个充分竞争的领域里,你只能和别人比辛苦。人家干五个小时,你就干十个小时。人家干十个小时,你就干二十个小时。但人一天只有二十四个小时,干死了也赚不了多少钱。
而你一旦抓住了风口,在一个竞争相对较少的领域,看到了一个市场走开口化的趋势,完全不用很辛苦,只需要做得比你的竞争对手好那么一点点就行了。这样的案例很多,并不是某些人很牛逼,而是因为他有心也好,无心也好挤到了风口进去,在大趋势里,成功概率更高。
现在的年轻人,不努力工作,整天就会抱怨社会不公,Peace在南宁也算是个白领,月薪1900,也不是富二代,看看他是怎么用一年时间在南宁买别墅吧:
一年前,他上班坐公车,学着自己做饭,不去酒吧,不抽烟,不赌博,省吃俭用,一年后,功夫不负有心人,他终于用辛苦攒下来的3万, 再加上他前妻留给的2497万在北京买了套别墅。
哈勃查毒:https://habo.qq.com/file/showdetail?pk=ADEGY11pB28IOFs7
本工具首发于吾爱破解论坛:http://www.52pojie.cn/thread-608237-1-1.html
由于电脑快没电了,那我就直接照搬软件简介了
推荐需要使用的,和不知道这是什么玩意的先看看视频是不是你需要的?
然后,我也不介绍了,就是局域网聊天工具[飞秋]的捣乱+个性化装逼工具!
[使用不好的会断腿!真的!别问我怎么知道的..]
今天在局域网玩卡机功能,走火了,IP打偏了,人家2G内存直接黑屏了,写的代码没了...我也不敢再用了...你们..小心断腿....!
不知道有没有需要的.. 帖子放在这了,就留给后人需要的时候上来搜了...
既然是在自己的亲儿子私人博客发布的,那么再上张源代码图吧
既然没有,那咱就手动做一个吧..~以下为演示视频!
再来个视频:实战演示!帅的惊动我们老师!打不开下面视频的请: http://oebv7c9qp.bkt.clouddn.com/day27%E4%B8%8A%E5%8D%88_clip.avi
package com.itheima.controller; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.xml.internal.bind.util.Which; /** * Servlet implementation class yanzhengmaa */ public class yanzhengmaa extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 得到画板 int width = 200;// 设置画板宽 int height = 50;// 设置画板高 BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);// 创建画板对象,给定参数 // 长,宽,图片数据的来源(INR_RGB) // 得到画笔 Graphics g = bi.getGraphics(); //开始吟诗作画~ //画背景 g.setColor(Color.RED);//设置笔颜色为红色,画背景颜色 g.fillRect(0, 0, width, height);//用笔填充矩形(颜色) //画边框 g.setColor(Color.black);//设置笔的颜色为黑色 g.drawRect(0, 1, width - 1, height - 1 );//参数(开始x,开始y,结束x,结束y)从左上角开始画矩形到右下角. (-1是补齐,因为和数组一样从0开始至x-1实体结束) g.drawRect(9, 9, width -20, height - 20 );//自发添加二层横框 //画干扰线 Random r = new Random();//创建随机数对象 int count = r.nextInt(10); for (int i = 0; i < count; i++) { g.setColor(Color.BLACK);//设置笔的颜色1 g.drawLine(r.nextInt(width-2)+1,r.nextInt(height-2)+1,r.nextInt(width-2)+1, r.nextInt(height-2)+1);//笔,画直线,(x,y,x,y) g.setColor(Color.BLUE);//设置笔的颜色2 g.drawLine(r.nextInt(width-2)+1,r.nextInt(height-2)+1,r.nextInt(width-2)+1, r.nextInt(height-2)+1); } //开始给验证码加字 String[] akc = {"桑","海","嗨","四","行","且","瑞","限","期","骑","啥","赖","傻","奇","哥","验","整","1","级","空","等","穷","怕","了","哦","啊","从","是","去"};//设置验证码字库 g.setColor(Color.CYAN);//设置笔的颜色 g.setFont(new Font("微软雅黑", Font.BOLD, r.nextInt(8)+21));//设置字体(字体,加粗,字号) int x = 30;//第一个验证码文字开始位置 StringBuilder str = new StringBuilder(); for (int i = 0; i < 4; i++) { //循环四次 String yzm = akc[r.nextInt(akc.length-1)];//每次从akc数组里随机出一个元素值赋值给yzm str.append(yzm); //将yzm加入到字符缓冲区 g.drawString(String.valueOf(yzm), x, r.nextInt(34)+13);//画出yzm x+=r.nextInt(41)+10; } // 显示出来,使用流输出 ImageIO.write(bi, "jpg", response.getOutputStream()); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } |
达到效果:
该写的都写了,注释也很详细,完全自己敲的.喜欢的可以拿去研究咯!
一:用户在地址栏输入了地址,一回车,它会向服务器发送请求.
二:发送的请求到达了服务器,首先会找到这段配置文件.
三:图片上用户在地址栏输入的hello,首先会到servlet-mapping里面找,找到了url-pattern.
四:然后url-pattern会去找和它在同一个servlet-mapping标签里面的servlet-name标签的属性的值,
五:servlet-name会根据自身值的名称去servlet标签里去找和自己值一样的名称,结果就找到servlet标签里的servlet-name
六:然后servlet标签里的servlet-name会找到同一个标签 下的servlet-class(类的全路径)
七:那么根据类的全路径就找到了HelloServlet,找到以后,会执行Servlet,那么就会像浏览器输出一句"Hello Servlet"
八:然后浏览器端会响应一个Hello Servlet