使用ajax加jsp和servlet实现前后端交互

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <script src= src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
    <title>file upload</title>
</head>
<script type="text/javascript">
    function send(){
        var choose = $("#choose").val();
        var up = $("#up").val();
        $.ajax({
            url:"http://localhost:8887/demo2/UploadServlet",    //请求的url地址
            dataType:"json",   //返回格式为json
            async:true,//请求是否异步,默认为异步,这也是ajax重要特性
            data:{"choose":choose},    //参数值
            type:"POST",   //请求方式
            beforeSend:function(){
                //请求前的处理
            },
            success:function(req){
                //返回值是json格式因此需要加上想调取的信息的key值
                alert(req.data);
                //请求成功时处理
            },
            complete:function(){
                //请求完成的处理
            },
            error:function(){

                //请求出错处理
            }
        });
    }

</script>
<body>
<form action="UploadServlet" method="post"  enctype="multipart/form-data">
    <table>
        <tr>
            <td></td>
            <td><h1>IPsec协议检测</h1></td>
        </tr>
        <tr>
            <td>请选择需要检测的文件:</td>
            <td><input id="choose" input type="file" name="myfile"></td>
        </tr>
        <tr>
            <td></td>
            <td><input id="up" input type="submit" value="上传文件"></td>
        </tr>
        <tr><td><input type="submit" value="检测"></td></tr>
    </table>
</form>
</body>
</html>
package servlet;

import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

/**
 * Servlet implementation class UploadServlet
 */
@MultipartConfig  //使用MultipartConfig注解标注改servlet能够接受文件上传的请求
@WebServlet("/UploadServlet")
public class UploadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        //存储路径
        String savePath = request.getServletContext().getRealPath("/WEB-INF/upload");
        //判断文件夹是否存在
        File file =new File(savePath);
        //如果文件夹不存在则创建
        if  (!file .exists()  && !file .isDirectory())
        {
            file .mkdir();
            System.out.println("文件夹已创建");
        } else
        {
            System.out.println("文件夹已存在");
        }
        Part part = request.getPart("myfile");
        String filename = part.getSubmittedFileName();
        //获取上传的文件名
        InputStream is = part.getInputStream();
        //动态获取服务器的路径
        FileOutputStream fos = new FileOutputStream(savePath + "/" + filename);
        byte[] bty = new byte[1024];
        int length =0;
        while((length=is.read(bty))!=-1){
            fos.write(bty,0,length);
        }
        fos.close();
        is.close();
    }
}

我想请教一下如何在jsp中使用ajax实现上传文件后页面不跳转,因为我需要上传文件后进行检测,这是我在网上寻找的方法照猫画虎写的jsp,但是并没有用,还有那个fos的路径怎么返回到jsp中调用。因为没有接触过前后端分离,所以问题很多,希望大家可以帮助一下。

学习网站: