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配置
<!-- 配置拦截器 (可选)-->
<mvc:interceptors>
    <mvc:interceptor>
        <!-- 配制URL地址映射 -->
        <mvc:mapping path="/login"/>
        <!-- 拦截器所在的地址 -->
        <bean class="com.mitu.interceptor.MyIntercepor"/>            
    </mvc:interceptor>
    <!-- 添加其他拦截器 -->
</mvc:interceptors>


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

首先需要表单设置:enctype="multipart/form-data"
<form action="uploads" method="post" enctype="multipart/form-data">
    文件标题: <input type="text" name="title" /> <br/>
    第一个文件: <input type="file" name="file1" /> <br/>
    第二个文件: <input type="file" name="file2" /> <br/>
    第三个文件: <input type="file" name="file3" /> <br/>
    <input type="submit" value="提  交" />
</form>

页面控制器:
@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注解
            //上传文件时,前台表单中的所有<input type="file"/>的name都应该是myfile,否则参数里的myfile无法获取到所有上传的文件
            for (int i = 0;i<myfile.length;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配置:
<!-- 配置文件上传(可选) -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 字符集编码 -->
    <property name="defaultEncoding" value="utf-8"/>
    <!-- 设置上传文件最大字节数 -->
    <property name="maxUploadSize" value="10485760000"/>
    <!-- 设置上传文件缓冲区大小 -->
    <property name="maxInMemorySize" value="40960"/>
</bean>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值