ssh项目页面url包含Action名时ajax上传文件返回错误500

本人正在做一个网站,暂时做到能够正常登录和注销,现在希望在已登录页面加一个文件上传功能。
目前该功能代码已经完成,在一般的jsp和html页面内都能正常使用,在该网站项目内虽然也能正常使用,但是在执行success后会跳出java.lang.nullpointerexception,无法回到原页面上。现已经确认后台代码没有问题,问题发生在action的return后。代码如下,这一方面的一些原理我的确还不是很懂,还请各位指点一二,谢谢。

1.jsp、html以及网站内jsp都是使用的这一段代码,前两者可用项目内的不可用

<form id="myForm">
        选择Excel:<input type="file" name="input">
    <button onclick="btn()">上传</button>
    </form>

    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
    <script type="text/javascript">
        function btn(){
            var formData = new FormData($("#myForm")[0]);
            $.ajax({
                type : "post",
                url : "/Web_project/Fill/upload",
                data : formData,
                async: false,
                cache: false,
                contentType: false,
                processData: false,
                error: function (result) {
                    alert('异常');
                },
                success: function (result) {
                    if(result.error == ""){
                        alert("已上传");
                    }else{
                        alert("失败")
                    }
                }
            });
        }
    </script>

2.upload.action对应的result

@Result(name="uploaded",type="json",params={"root","mm"})

3.jsp页面下的url和项目action跳转后的url,这是我发现的两者唯一区别,不知道是不是能证明什么问题
图片说明
图片说明



虽然不是很清楚原因,但是我个人认为是ajax提交了页面后,页面刷新,触发了登录用的action,再次检验用户登录,但是却没有取到数据,所以空指针。(个人猜测,没有详细了解)
我给action这段代码加了一个判断session是否为空,不为空则直接返回的代码段,这么一来在ajax提交页面后,action内验证登录的部分代码不会再次运行,页面也确实没有出现错误而是正常停留在原页面。
虽然没有能直接解决我的问题,但是很感谢各位的建议和帮助。

5个回答

500表示服务器内部错误,和这个文件的代码没关系,你ajax的url(upload)是个文件夹吧?而不是php文件,或者java文件?如果upload是文件夹,需要写一个代码文件来接收处理异步(ajax请求),如果upload是代码文件,就检查upload的代码,错误肯定出在这里面

Friedice
Friedice 有上传功能的是登录后的界面,而登录前的界面调用了adminLogin.action来实现登录功能,那行代码是用来获取用户输入的登录信息的。是不是在文件上传完成后,页面重新提交了表单,调用了adminLogin,然而却找不到对应信息所以报错?
12 个月之前 回复
Friedice
Friedice 回复: Admins loginAdmin = adminService.get(admin.getUsername(), admin.getPassword());
12 个月之前 回复
Friedice
Friedice 回复毕小宝: 位置是文件上传功能那个页面的action,adminLogin.action中的一行代码:
12 个月之前 回复
wojiushiwo945you
毕小宝【阿木小镇】 回复Friedice: 报空指针的异常信息定位代码那里是什么呢?
12 个月之前 回复
Friedice
Friedice 抱歉我没有写清楚.....upload是个action,但是这个action在重定向的页面内能正常完成流程。可在action跳转后的页面内,虽然代码同样运行完成,但是在完成后会报这么个错。所以我感觉代码没有什么问题,可能是我action跳转的页面有什么的东西导致他出错了,可我还没找到。
12 个月之前 回复
重复提交了吧
Friedice
Friedice 那为什么会出现重复提交呢?action跳转后的页面果然和直接跳转的页面有不同吗?
12 个月之前 回复

在ajax里添加一个datatype:json试试

Friedice
Friedice 谢谢,刚才试过了,但还是会在完成后报错,500
12 个月之前 回复

首先,这是用ajax提交具有文件表单的表单,后台可能没有获取到文件内容。
可以参考这个:
https://www.cnblogs.com/zhuxiaojie/p/4783939.html

Friedice
Friedice 我在service里取出并打印了excel内容,能够正常运行,直到action的return之后。我怀疑是Action跳转的页面和一般跳转的页面的不同导致的,但对于这方面没有足够的了解.....
12 个月之前 回复

1,form 表单提交文件时必须设置 enctype ==multipart/form-data

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问