`

j2ee16:jsp5:文件上传,jsp标准动作

    博客分类:
  • j2ee
 
阅读更多
1.给表在添加一列:alert table student add 列名 属性名
2.上传照片的时候要在jsp的表单上添加一句话:enctype="multipart/form-data":这是文件上传的协议,表示使用二进制的形式上传图片,enctype的作用是封装了表单。
3.文件上传的思想是:把本地(自己电脑中的)文件上传到tomcat等服务器上,然后增删改查都是用的服务器上的文件。不能使用电脑上的,因为电脑上的东西是本地的。
 文件上传就是将文件从本地拷贝到服务器上。记住要加一个jar包。
4.加入jar包的目的是使用jar包里面的公共类,因此下一步要创建这个类的一个对象。在jar包里面可以找到
5.文件上传过程:
  ---1.创建文件上传的对象SmartUoload su=new SmartUoload ();
  ---2.对对象进行初始化:su.initialize(this.getServletConfig,request,response);//三个参数:配置,请求,响应。其中this表示当前类的对象,因为在tomcat的work目录下的jsp是个.java文件
      这个文件里面肯定包含这三个属性,并且this代表当前这个类的对象,三个参数都是属性。init方法对这个类进行了封装,能够获取保存数据
  ---3.su.upload():文件上传,上传到内存
  ---4.su.save():写入,写入到指定目录
  ---5.su.getFiles().getFile(0).getFilename():获得一组上传文件中的第一个文件的名字,把这个当做保存路径
  ---6.我们加了enctype="multipart/form-data"属性之后,在提交表单的时候就出错了,不能提交了,此时引入了jar包中的request对象。即使不能提交但是图片也拷贝到了服务器上了,因为拷贝过程跟保存过程是两码事
      这个对象封装了request对象,由于su封装过request,因此可以用su获取jar包中的request。记住这里用的request是jar包的,不是系统的。但是仍然乱码。
     enctype把表单封装了,因此此时表单的数据不在是文本类型的了而是二进制的比特流,因此不能用request.getAttribute()来接收参数,因此此时使用SmartUoload 对象提供的方法,提供的getrequest方法得到jar包中的request方法。
  ---7.把页面中的request.setEconding设置成GBK,因为jar包中的request对象是使用GBK编码的。
  ------一些其他的方法:su.setMaxFileSize(1024*5);最大允许上传的尺寸,su.AllowedFilesList("jsp,gif,jpeg"):允许上传文件的格式。
  -----8 对上传后的文件进行重命名:(目的是解决图片名字相同的时候后面上传的的图片会覆盖前面的图片)
          ---1第一步:获取系统日期,在comm里面写个公共的方法。这个当成图片名的前半部分
          ---2.第二步:su.getFiles().getFile(0).getFileExt():获得文件的类型(后缀)
          ---3.第三步:对上面的两步进行合并
           --4.file.saceAs():另存为,文件另存为
注意:在这里获取当前时间的方法是通过在comm包中写一个获取时间的方法来实现的。yyyyMMddHHmmssSSS:为什么毫秒要用三个SSS,因为毫秒用S表示,而且毫秒占了三位

  ----面试9.jsp的几个标准动作标签(只要是jsp:的都是标准动作)。至少记住六七个。
        ---<jsp:userBean id="dao" class="com.dao"/>:是根据类创建一个对象 ,这里的bean就是一个类的意思
        ---<jsp:setProperty proprtty="属性名" name="对象名" value="值"/> :给对象的属性设置值
        ---<jsp:getProperty  proprtty="属性名" name="对象名" />
        ---<jsp:forword page="路径">:跳转,就是转发
        ---<jsp:params value="" name=""/>:获取表单元素的值
        ----<jsp:include  page="地址"/>:这是包含,运行时包含,两个页面运行之后再把结果放在一起。
             跟昨天讲的<%@ include file=""%>不一样,<%@ include file=""%>是编译时候包含。
             其中<%@ include file=""%>是静态导入,在编译的时候进行页面的合并
             <jsp:include  page="地址"/>是动态导入,先执行两个jsp,然后将结果进行合并。
  ----10.注意两种注释:jsp注释:<%--%>
                       html注释:<!----->
 
注意:------------------------------------------
<%@include file=%>
他不能像page那样传递参数,那就在地址栏上问号传参
是包含的意思:编译时包含,将两个页面整合。合成一个servlet
在jsp页面上的有效注释方式有两种:
---1.<!-->注释:是html的注释。被注释的部分会被执行,但是不显示
---2.<%-->注释:是jsp的注释,被注释的内容会被执行,然后把执行结果注释掉
 

两个包含:
重点1:
<!--【注意:】include这是指令包含:1.他是编译时包含(两个jsp是两个servlet。是先将两个jsp的代码合并成一个jsp代码,然后去执行这一个jsp代码),2.他是静态包含(里面不能写参数,参数在地址栏上以问号的形式传递)
 -->       <%@include file="MyJsp01-7.jsp" %>
重点2:
<!-- jsp:include这个是标签包含:是  执行时包含(只包含页面的输出结果。是先去执行两个jsp页面,然后把两个jsp页面的执行结果包含在一起),动态包含(因为可以使用参数jsp:param) -->
    <jsp:include page="MyJsp01-7.jsp">
     <jsp:param value="zhangsan" name="zs"/>
     <jsp:param value="1234" name="pw"/>
    </jsp:include>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics