spring-MVC-异步

spring-MVC-异步 拦截 上传

异步请求传参 名称 @ RequestBody 类型 形参注解

位置 处理器类中的方法形参前方

作用 将异步提交数据组织成 标准请求参数格式 并赋值给形参

@RequestMapping
  //使用@RequestBody注解,可以将请求体内容封装到指定参数中
  @RequestMapping("saveUser")
    @ResponseBody
    public  String saveUser(@RequestBody User user){
        System.out.println(user);
        return "成功";
    }
@RequestMapping("saveUser")
@ResponseBody
public  String saveUser(@RequestBody User user){
    System.out.println(user);
    return "成功";
    
    
      $("#mybutton").click(function () {
            $.ajax({
                //请求方式:POST请求
                type:"POST",
                //请求的地址
                url:"saveUser",
                //请求参数(也就是请求内容)
                data:'{"name":"cls","age":23}',
                //响应正文类型
                ataType:"text",
                //请求正文的MIME类型
                contentType:"application/json",
                success:function (data) {
                    alert(data);

                }
            });

        });

拦截器

Interceptor 一种动态拦截方法调用的机制

1在指定的方法调用前后执行预先设定后的代码

2 阻止原始方法的执行

实现一个HandlerInterceptor

前置有一个判定 true 跟false

执行顺序 preHandle

return true; Handle postHandle afterCompletion

return t false; 结束

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

    System.out.println("前置运行-----a1");

    return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    System.out.println("后置运行-----b1");
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    System.out.println("完成运行-----c1");
}
     <mvc:mapping path="/*"/>拦截所有
     <mvc:mapping path="/handleRun*"/>拦截也他开头的
     <mvc:mapping path="/**"/>所有的结构

<mvc:exclude-mapping path="/b*"/>
    
排除  b开头的

责任链模式 沿着一条预先设定的任务链顺序 每个节点具有独立的工作任务

独立性 隔离性 灵活性 解耦

异常 定义一个一个接口

实现一个HandlerExceptionResolver

 HandlerExceptionResolver
 
 @Component
public class ExceptionResolver implements HandlerExceptionResolver {

    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest,
                                         HttpServletResponse httpServletResponse,
                                         Object o, Exception e) {

        System.out.println("my exception  is running....");
        ModelAndView modelAndView = new ModelAndView();
           modelAndView.addObject("msg","出错了");
           modelAndView.setViewName("error.jsp");


        return   modelAndView;
    }
}

判断 什么异常

  System.out.println("my exception  is running...." + e);
        ModelAndView modelAndView = new ModelAndView();
        if (e instanceof NullPointerException) {

            modelAndView.addObject("msg", "空指针");

        } else if (e instanceof ArithmeticException) {
            modelAndView.addObject("msg", "算术异常");
        } else {
            modelAndView.addObject("msg", "未知的异常");

        }
        modelAndView.setViewName("error.jsp");

        return modelAndView;
    }
}

注解异常

@ControllerAdvice
@Exception
//声明该类是一个Controller的通知类,声明后该类就会被加载成异常处理器

//类中定义的方法携带@ExceptionHandler注解的会被作为异常处理器,后面添加实际处理的异常类型
@Component
//使用注解开发异常处理器
//声明该类是一个Controller的通知类,声明后该类就会被加载成异常处理器
@ControllerAdvice
public class ExceptionAdvice {

    //类中定义的方法携带@ExceptionHandler注解的会被作为异常处理器,后面添加实际处理的异常类型
    @ExceptionHandler(NullPointerException.class)
    @ResponseBody
    public String doNullException(Exception ex){
        return "空指针异常";
    }

    @ExceptionHandler(ArithmeticException.class)
    @ResponseBody
    public String doArithmeticException(Exception ex){
        return "ArithmeticException";
    }

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public String doException(Exception ex){
        return "all";
    }

}
//自定义异常继承RuntimeException,覆盖父类所有的构造方\


文件上传下载

坐标

<!--文件上传下载-->
  <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.4</version>
  </dependency>
</dependencies>
<!--配置文件上传处理器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="1024000000"/>
</bean>

页面上传下载实现

页面表单

<%@page pageEncoding="UTF-8" language="java" contentType="text/html;UTF-8" %>

<form action="/fileupload" method="post" enctype="multipart/form-data">
    <%--文件上传表单的name属性值一定要与controller处理器中方法的参数对应,否则无法实现文件上传--%>
    上传LOGO:<input type="file" name="file"/><br/>
    上传照片:<input type="file" name="file1"/><br/>
    上传任意文件:<input type="file" name="file2"/><br/>
    <input type="submit" value="上传"/>
</form>

springMVC 配置

<!--配置文件上传处理器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxInMemorySize" value="1024"/>
</bean>

控制器

@RequestMapping(value = "/fileupload")

@Controller
public class FileUploadController2 {
    @RequestMapping("/fileupload")
    public String fileupload(MultipartFile file, HttpServletRequest request) throws IOException {

        if (!file.isEmpty()) {
            //當前文件的真實名字
            String filename = file.getOriginalFilename();
            //设置地址
            String realPath = request.getServletContext().getRealPath("/images");

            file.transferTo(new File(realPath, file.getOriginalFilename()));


        }
            return"page.jsp";
    }

}


Restful

GET 查询 post 保存 Put 更新 Delete 删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值