java_day25_UUID,封装上传,jsp

Posted 北冥丶中郎将

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java_day25_UUID,封装上传,jsp相关的知识,希望对你有一定的参考价值。

jsp和上传的封装

一.jsp的简介

  1.jsp是java server pages允许在页面中使用java作为脚本语言动态生成html代码

  2.jsp首先和html的区别,html可以直接放在浏览器中执行但是jsp必须把tomcat启动起来才能看到效果

  3.组成部分:1.静态内容;2.指令;3.表达式;4.脚本;5.声明;6.注释

    3.1注释:jsp有html使用的注释,java使用的注释,和自己的注释

       第一种:跟html注释一样,此注释是第一种,在客户端可以看见

       第二种jsp注释,在客户端看不见,在编译时,会被擦除<%--注释-->

       第三种是标准java注释,这种注释只能写在jsp脚本中 //注释 ; /*注释*/

    3.2指令:jsp页面可以在最上方加入当前页面的配置等信息叫做jsp指令

       page指令:当前页面的配置信息,最为常用

       include:在一个页面中,将另一个文件嵌入其中

       taglib:引入标签库

    3.3脚本:<%--jsp脚本--%>可以写任何java代码,但是不能够定义方法,全局变量.所有的jsp脚本,都会和html代码混合复制进_jspService方法中.

    3.4静态内容:所有被写在jsp文件中的没有被任何jsp标签包裹的,就是静态内容,即,所有的html代码,都是静态内容

    3.5声明:用来写自定义方法,成员变量的

    3.6表达式:是在html代码中,是为了使用声明中定义的全局变量,或脚本中定义的局部变量而存在的即表达式是没有复杂逻辑,只能取值使用

二.上传的封装

  public class SmartUpload {

    private HttpServlet servlet;//

    private ServletFileUpload sfu;//用于上传的全局变量

    private File uploadDir;//用来创建上传文件的文件夹

    private HashMap<String,String> parameters;//用来存储普通表单数据

    private HashMap<String,File> files;//用来存储上传文件的文件名和文件

    

    public SmartUpload(HttpServlet httpServlet){

      this.servlet = httpServlet ; //构造方法,用来操作使用此轮子的servlet对象

      inintDir();//初始化上传文件夹

      sfu = new ServletFileUpload();// 

      sfu.setFileItemFactory(new DiskFileItemFactory());//初始化servletFileUpload

      parameters = new HashMap<>();//初始化对象

      files = new HashMap<>(); //初始化对象}

    private void initDir(){

      String uploadPath = servlet.getServletContext().getRealPath("")+File.separator+"upload";//拼接上传文件路径

      uploadDir = new File(uploadPath); //通过拼接路径创建File对象

      if(!uploadDir.exists()){  //判断文件夹是都存在

        uploadDir.mkdirs();} //不存在则创建文件夹    

    public void parse(HttpServletRequest request){  //解析request

      List<FileItem> fileItems = sfu.parseRequest(request);//解析request放入List中

      if(fileItems != null){  //判断不为空

       for(FileItem fileItem : fileItems){//遍历List

        if(fileItem.isFormField()){ //判断是否为表单数据

          String key = fileItem.getFieldName();//获取key

          String value = fileItem.getString("utf-8");//获取value

          parameter.put(key,value);//存入hashMap中

        }else { //不是表单数据

          String fileName = fileItem.getName();//获取文件名

          if(StringUtils.isEmpty(fileName)){ //引用是apache下的包

            continue;}

          String realName = TestUUID.handFileName(fileName);//利用UUID生成新的文件名

          File file = new File(uploadDir,realName);//通过文件夹和文件名创建文件

          fileItem.write(file);//写文件

          files.put(fileName,file);//将文件名和file对象存入hashMap

      public String getParameter(String key){

        return parameter.get(key);}

      public Map<String,String> getParameterMap(){

        return parameters;}

      public Map<String,File> getUploadFiles(){

        return files;}

三.request域

   向request域中放值,值以key-value的形式存放,key只能是String,value可以是任何对象

   存值:request.setAttribute("msg",msg);//键值对形式存放

   取值:request.getAttribute("msg");//通过key取value

 

 

 





以上是关于java_day25_UUID,封装上传,jsp的主要内容,如果未能解决你的问题,请参考以下文章

java_day30_javaWeb三大组件之过滤器Filter

java_day23_表单

java_day22_servlet重定向,字节流传输

java_day21_反射和注解

java_day29_Servlet三大组件之监听器listener

五.封装