zoukankan      html  css  js  c++  java
  • idea中用Maven搭建struts2项目(文件上传和下载,支持分片)并用docker在虚拟机创建tomcat镜像,实现远程推送

    记录在idea中用maven搭建struts2项目,一个简单的文件上传下载。

    idea中maven环境配置

    idea安装好,这个没得说。

    下载maven,解压缩之后,配置环境变量(好像可以不用)

    MAVEN_HOME  E:softwareapache-maven-3.6.3
    #在path中添加
    %MAVEN_HOME%in;
    

    setting,这个有说是otherSetting的,我好像觉得都一样,可以配置完,新建项目的时候去看看是不是配过的。配置Maven home directory到maven解压的目录,user setting file在解压文件的conf目录下,或者在当前用户.m2目录下建一份,默认仓库是.m2的repository。

    在maven--Runner的VM Options加上-DarchetypeCatalog=internal参数(注意是-D, 因为没有这个搞半天。。),参见这篇博文:https://blog.csdn.net/mzy755423868/article/details/80573211

    配置maven国内镜像

    <mirror> 
      <id>alimaven</id> 
      <name>aliyun maven</name> 
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
      <mirrorOf>central</mirrorOf> 
    </mirror>
    

    创建Maven项目

    新建maven项目,create from archtype--maven-archtype webapp(注意并不是cocoon-22-archtype-webapp),后边没啥说的,点完就行。中间可以看到配置的maven信息,检查下对不。

    正常的话就出来项目结构了,也没报错。

    错误:
    event log 导入出错,详细log():

    #org.jetbrains.idea.maven - com.google.inject.CreationException: Unable to create injector  
    

    解决:切换到maven3.6.1以下的版本

    struts2项目

    添加struts2依赖

    <dependencies>
    <dependency>
      <groupId>org.apache.struts</groupId>
      <artifactId>struts2-core</artifactId>
      <version>2.5.14.1</version>
    </dependency>
    

    这样环境就好了,配置tomcat就可以运行了。

    log4j配置:https://blog.csdn.net/qq_24986539/article/details/81101943

    maven导出war包:点击clean,点击install,日志里就有war包的路径。

    一些错误记录

    1.在struts2 2.3版本以后为了增加安全性,在action中添加了对方法访问的权限,如果要使用通配符 * 调用方法的话,需要添加额外的代码
    例如:< global-allowed-methods>regex:.*< /global-allowed-methods>
    还有两种方法:https://blog.csdn.net/Annn_kk/article/details/88761708

    2.要使jsp:forward能跳转到action需要在web.xml 加入

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern></url-pattern>
         <!-- 默认只处理客户端请求 -->
        <dispatcher>REQUEST</dispatcher>
        <!-- 增加对服务器内部转发的过滤 -->
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>
    

    3.资源文件不要放到wenb-inf下, 页面引不到

    4.${}无效的时候在jsp头部加isELIgnored="false"

    5.fastJson上手很快。json工具选型参考:https://blog.csdn.net/10km/article/details/77878471

    6.文件上传大小限制配置
    首先action必须继承actonSurport

    <!-- 文件上传大小限制一(这个必须有),单位是byte -->
    <constant name="struts.multipart.maxSize" value="1024"></constant>
    
    <!-- 文件上传大小限制二,配置在action里(这个可有可无) -->
    <interceptor-ref name="fileUpload">
        <param name="maximumSize">1024</param>
    </interceptor-ref>
    
     <!-- 文件太大错误提示页面,name必须是input -->
    <result name="input">error.jsp</result>
    

    7.结果类性是chain,怎么到action的method

    <result name="toHome" type="chain">
        <param name="actionName">fileAction</param>
        <param name="method">home</param>
    </result>
    

    安装docker创建tomcat镜像

    安装一些工具

    apt-get install 
         apt-transport-https 
         ca-certificates 
         curl 
         software-properties-common
    

    安装密匙

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    

    安装稳定存储库

    sudo add-apt-repository  "deb [arch=amd64] https://download.docker.com/linux/ubuntu  $(lsb_release -cs)  stable"
    

    更新(慢的话就换源,更新界面可以操作,或者百度换成阿里的)

    apt-get update
    

    安装docker

    apt-get install docker-ce
    

    下载tomcat镜像

    docker pull tomcat
    

    docker下载慢,配置源
    创建daemon.json文件
    vim /etc/docker/daemon.json

    写入自定义仓库

    {
        "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
    }
    

    配置完后重启

    systemctl daemon-reload
    service docker restart
    

    编写DockerFile创建tomcat8镜像参见博客:https://www.cnblogs.com/areyouready/p/8971817.html

    run之后如果报404,可以进入容器

    #查看容器id
    docker ps
    //进入容器
    docker exec -it bc991ca03e33 /bin/bash
    

    移动webapps.dist中文件到webapp中,并删除webapp.dist

    或者更改dockerFile文件重新创建

    如果还不行可能需要开通8080端口

    #添加
    firewall-cmd --zone=public --add-port=3306/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
    #重新载入
    firewall-cmd --reload
    #查看
    firewall-cmd --zone=public --query-port=3306/tcp
    #删除
    firewall-cmd --zone=public --remove-port=3306/tcp --permanent
    

    如果上边报firewallD is not running

    #查看状态为dead
    systemctl status firewalld
    #开启
    systemctl start firewalld
    

    再次查看状态为active

    一些docker命令

    #显示在运行的容器
    docker ps 
    #停止容器(重启restart)
    docker stop containerId
    #删除容器
    docker rm containerId
    #显示所有的镜像
    docker images
    #删除镜像
    docker rmi imageId
    
    #进入容器
    docker exec -it containerId /bin/bash
    
    #容器内外拷贝
    docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt
    docker cp /opt testtomcat:/usr/local/tomcat/webapps/test/js/test.js
    

    分片上传下载

    项目仓库:https://github.com/Spancymath/CloudDisk.git

    分片上传用的是webupload,很方便,也很明显加快了上传速度,忘了看的哪篇文章了

    分片下载用的是XMLHttpRequest,很方便,效果不是很明显(不知道是不是用的阿里服务器太便宜限流了)
    参考:https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest
    https://blog.csdn.net/aydongzhiping/article/details/82462473?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
    https://blog.csdn.net/sjhuangx/article/details/96972982
    https://www.jianshu.com/p/ae654d89c02f

    小笔记
    js拼接字符串总会遇到含有单引号、双引号,导致js报错
    解决:可以传入this,比如this是td,$(this).closest("tr").find("td").eq(0).text(),可以得到table里同行的第一个元素的值

  • 相关阅读:
    算法题目积累0721
    java编辑器
    java简易编辑器
    公选网站作业4_2.php
    php注册登录系统(一)-极简
    Tomcat与Web服务器、应用服务器的关系
    PHP用户登录与注册页面
    网站选修课作业(4.1)
    网站选修课作业(3.1)
    svn和ftp的区别
  • 原文地址:https://www.cnblogs.com/so-easy/p/12549148.html
Copyright © 2011-2022 走看看