spring boot 项目重新搭建----------mvc配置:参数解析

本文深入探讨了Spring MVC框架的高级配置技巧,包括静态资源解析、跨域支持、自定义视图控制器、参数解析、返回值处理、消息转换、异常处理等关键功能,帮助开发者掌握更复杂的Web应用构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7.addResourceHandlers静态资源解析

如:

registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");

8.addCorsMappings跨域支持

registry.addMapping("/greeting-javaconfig").allowedOrigins("http://localhost:9000");

.addCorsMappings()中的参数代表支持跨域的url,.allowedOrigins()中的参数代表可以访问该接口的域名,设置为”*”可支持所有域。

9.addViewControllers添加自定义视图控制器

    // 对 "/hello" 的 请求 redirect 到 "/home"
    registry.addRedirectViewController("/hello", "/home");
    // 对 "/admin/**" 的请求 返回 404 的 http 状态
    registry.addStatusController("/admin/**", HttpStatus.NOT_FOUND);
    // 将 "/home" 的 请求响应为返回 "home" 的视图 
    registry.addViewController("/home").setViewName("home");

10.configureViewResolvers配置视图解析器

enableContentNegotiation启用内容裁决解析器

11.addArgumentResolvers添加参数解析器

如添加一个JSON解析

实现HandlerMethodArgumentResolver

public class JSONArgumentResolver implements HandlerMethodArgumentResolver {
    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        Class<?> paramType = parameter.getParameterType();
        return JSONObject.class.isAssignableFrom(paramType) || JSONArray.class.isAssignableFrom(paramType);
    }

    @Override
    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
        Class<?> paramType = parameter.getParameterType();
        String json = webRequest.getParameter(parameter.getParameterName());
        if (JSONObject.class.isAssignableFrom(paramType)) {
            return JSON.parseObject(json);
        } else if (JSONArray.class.isAssignableFrom(paramType)) {
            return JSON.parseArray(json);
        } else {
            Method method = parameter.getMethod();
            throw new UnsupportedOperationException("Unknown parameter type: " + paramType + " in method: " + method);
        }
    }
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
        resolvers.add(new JSONArgumentResolver());
}

12.addReturnValueHandlers添加返回值处理

对返回值进行处理,1.处理哪种类型 2.处理逻辑

13.configureMessageConverters 配置消息转换

HTTP输入请求格式向Java对象的转换;Java对象向HTTP输出请求的转换

配置一个FastJson消息转换器

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    converters.add(new StringHttpMessageConverter(Charset.forName("UTF-8")));
    FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
    FastJsonConfig fastJsonConfig = new FastJsonConfig();
    fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue);
    fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
    converters.add(fastJsonHttpMessageConverter);
}

14.extendMessageConverters在原有的基础上拓展,而上面是替换

15.configureHandlerExceptionResolvers配置异常处理解析器

配置一个全局异常处理

@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler({EntityValidException.class})
    @ResponseBody
    public KeyValue handleForbiddenException(Exception ex) {
        return KeyValue.err(ex.getMessage());
    }

}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值