SpringMVC中使用ajax、拦截器、文件上传

首先JQuery中封装了一些方便的方法:$.ajax()、$.get()、$.post()、$.getJSON()
除了$.ajax(),$.get()、$.post()、$.getJSON()使用方法都一样
例如常用的$.getJSON():

    $(function (){
        $("#send").click(function(){
            $.getJSON("jsp/ajax",              //提交的URL地址
            {
                name:$("#name").val(),        //提交的数据
                content:$("#content").val()
            },
            getAjaxData                //回调函数,注意getAjaxData不能加()
            )
        })
    })
    
    function getAjaxData(data){                //响应的操作
        alert(data)
    }

//创建一个页面控制器
@Controller
public class CommentAjaxController {
    @RequestMapping("jsp/ajax")
    @ResponseBody             //将ajax发送为客户端的Java对象自动转换为json格式时
    public String CommentAjax(String name,String content) {        //返回类型为java对象,不能为ModelMap
        System.out.println(name);
        return name;        //返回的数据不再是逻辑视图名,而是页面需要的数据
    }
}

SpringMVC拦截器


//创建一个拦截器,继承HandlerInterceptorAdapter类
public class MyIntercepor extends HandlerInterceptorAdapter{
    //在前端控制器返回响应到用户之前,不能拦截
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        System.out.println("在前端控制器返回响应到用户之前,不能拦截");
        
    }
    //在页面控制器返回模型数据到前端控制器前,不能拦截
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        System.out.println("在页面控制器返回模型数据到前端控制器前,不能拦截");
    }
    //在前端控制器将请求派发给页面控制器前,可以拦截请求
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        System.out.println("在前端控制器将请求派发给页面控制器前,可以拦截请求");
        return true;
    }
}

需要添加springMVC-servlet.xml配置


    
        
        
        
                    
    

    


SpringMVC中文件上传(非ajax,上传多个文件)

首先需要表单设置:enctype="multipart/form-data"


    文件标题:

    第一个文件:

    第二个文件:

    第三个文件:

    

页面控制器:
@Controller
public class FileUploadController {
   @RequestMapping("uploadCard")
   public String uploadCard(@RequestParam(value="myfile", required=true)MultipartFile[] myfile,HttpServletRequest request) throws IOException, ServletException {
        if (myfile !=null && myfile.length>0) {
            //如果只是上传一个文件,则只需要MultipartFile类型接收文件即可,而且无需显式指定@RequestParam注解
            //如果想上传多个文件,那么这里就要用MultipartFile[]类型来接收文件,并且要指定@RequestParam注解
            //上传文件时,前台表单中的所有的name都应该是myfile,否则参数里的myfile无法获取到所有上传的文件
            for (int i = 0;i                 long start = System.currentTimeMillis();
                try {
                    String filePath = request.getSession().getServletContext()
                            .getRealPath("/") + "uploads/" +start+ myfile[i].getOriginalFilename();
                    //转存文件
                    myfile[i].transferTo(new File(filePath));
                }catch (Exception e){
                    e.printStackTrace();
                }
                System.out.println("成功");
            } return "ok";

        } else {
            System.out.println("失败");
            return "no";
        }
   }
}

需要添加springMVC-servlet.xml配置:


    
    
    
    
    
    

你可能感兴趣的:(SpringMVC,springMVC,ajax,拦截器,文件上传)