spring-mvc笔记(三)


内容:

文件下载

1.jsp:

  下载图片

2.controller:

//进入拦截器
    @RequestMapping("downloadimg")
    public ResponseEntitydownloadpic(HttpServletRequest request) throws IOException {
        String path=request.getServletContext().getRealPath("download/微信图片_20211215195603.jpg");
        FileInputStream inputStream=new FileInputStream(path);
        byte[]buffer=new byte[inputStream.available()];
        inputStream.read(buffer);
        HttpHeaders httpHeaders=new HttpHeaders();
        String fileName=path.substring(path.indexOf("\\")+1);
        httpHeaders.setContentDispositionFormData("attachment",URLEncoder.encode(fileName,"utf-8"));
        ResponseEntityentity=new ResponseEntity(buffer,httpHeaders,HttpStatus.OK);
        return entity;
    }

springmvc的异常处理(自定义异常):

1.枚举类

package stu.adam.springMVC.http;

/**
 * @program: springMVC-3
 * @description:
 * @author: adam
 * @create: 2021-12-20 19:46
 **/

//I.枚举异常类编写
public enum  StatusEnum {

    ERROR(500,"服务器错误"),
    SUCCESS(200,"请求成功"),
    PAGE_LOSE(404,"请求页面丢失"),
    USER_ERROR(501,"登录错误");
    //定义属性
//状态码
private int status;
//提示信息
private String message;

    StatusEnum(int status, String message) {
        this.status = status;
        this.message = message;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

2.

package stu.adam.springMVC.exception;

import lombok.Getter;
import lombok.Setter;
import stu.adam.springMVC.http.StatusEnum;

/**
 * @program: springMVC-3
 * @description:
 * @author: adam
 * @create: 2021-12-20 19:53
 **/


//II.异常自定义
    @Getter
    @Setter
public class HttpException extends RuntimeException{

    //类定义
    private StatusEnum statusEnum;

    //构造器
    public HttpException(StatusEnum statusEnum) {
        this.statusEnum = statusEnum;
    }

    //getset


    public StatusEnum getStatusEnum() {
        return statusEnum;
    }

    public void setStatusEnum(StatusEnum statusEnum) {
        this.statusEnum = statusEnum;
    }


}

3.

package stu.adam.springMVC.control;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import stu.adam.springMVC.exception.HttpException;
import stu.adam.springMVC.http.StatusEnum;

/**
 * @program: springMVC-3
 * @description:登录异常
 * @author: adam
 * @create: 2021-12-20 20:02
 **/


//III.logincontroller层编写
@Controller
public class LoginController {

@GetMapping("error")
public String error(){

    if(true){
        throw new HttpException(StatusEnum.USER_ERROR);
    }
    return "success";


}

}

4.

package stu.adam.springMVC.Exceptionhandler;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import stu.adam.springMVC.exception.HttpException;
import stu.adam.springMVC.http.MessageBean;
import stu.adam.springMVC.http.StatusEnum;

import javax.security.auth.login.LoginException;

/**
 * @program: springMVC-3
 * @description:
 * @author: adam
 * @create: 2021-12-20 20:07
 **/


/*
*
* */
//iv 异常类处理编写
@ControllerAdvice
public class ErrorExceptionHandler {


    @ExceptionHandler(HttpException.class)
    public ResponseEntity loginHandler(HttpException e) {
        StatusEnum statusEnum = e.getStatusEnum();

        int status = statusEnum.getStatus();
        String message = statusEnum.getMessage();
        MessageBean messageBean = new MessageBean();
        messageBean.setStatusCode(status);
        messageBean.setMessage(message);

        return ResponseEntity.ok(messageBean);

    }

}

5.

package stu.adam.springMVC.http;

import lombok.Data;

/**
 * @program: springMVC-3
 * @description:
 * @author: adam
 * @create: 2021-12-20 20:16
 **/

//v.bean编写
@Data
public class MessageBean {
private Integer statusCode;
private String message;
}

效果:(json格式)

springmvc拦截器:

1.自定义拦截器



public class OneInteceptor implements HandlerInterceptor
{
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        System.out.println("preHandle执行了");
        return true;
        }


    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {

        System.out.println("postHandle执行了");

    }

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {

        System.out.println("afterCompletion执行了");
    }

}

2.测试对象

package stu.adam.springMVC.control;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @program: springMVC-3
 * @description:
 * @author: adam
 * @create: 2021-12-20 20:56
 **/

@Controller
public class ControllerTest {

    @RequestMapping("/a")
    public String aa(){
        System.out.println("aa excute执行了");
        return "success";
    }

    @RequestMapping("/b")
    public String bb(){
        System.out.println("bb excute执行了");
        return "success";
    }

    @RequestMapping("/c")
    public String cc(){
        System.out.println("cc excute执行了");
        return "success";
    }


}

3.拦截xml配置

  
        
        
            
            
            
            
            
            
            
            
        
          

springmvc静态资源

一般静态资源类型转换问题统一在:

mvc.xml文件里加这句话

springmvc类型转换问题(重点是时间类型转换问题):

1.注解(要导包)

2.自定义转换格式


    
        
            
                
            

        
    

    

相关