SpringMVC的类型转换的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC的类型转换的问题相关的知识,希望对你有一定的参考价值。

SpringMVC中有没有类似Struts2中DefaultTypeConverter的接口,或者说有没有什么办法让表单中所有的采参数一次性转换成一个对象。

定义一个实体类.比如

public class User
    private String id;
    private String username;
    private User loader;
    ...//其他代码略

然后编写他的持久层和服务层的代码.

class UserServive...//其他代码略
class UserDao...//其他代码略

在控制层接受前台传来的参数时直接用实体类来接受:

@Controller
@RequestMapping("user")
public class UserController
    ...//其他代码略
    @RequestMapping("/save")
    public ModelAndView save(User user)
    
        userService.save(user);
    
    ...//其他代码略

前台的表单类似如下:

<form acton="/user/save" method="post">
    <input type="hidden" name="id">
    名称:<input type="text" name="username">
    loader名称:<input type="text" name="loader.username">
    <input type="submit">
</form>
参考技术A 可以定义个类,通过这个类创建对象就可以取值赋值了

SpringMVC的数据类型转换

类型转换器,就是将请求参数中的字符串 转换成其他类型,进行方法参数的赋值
 
定义一个类型转换器,需要实现 Converter 接口,会有一个泛型 ( 即对数据类型的约束 )
SpringMVC 拦截器
springMVC 拦截器的配置
/WEB-INF 路径的下文件,属于隐藏文件,只能通过项目内部进行跳转,不能通过路径直接访问;
编写案例
定义一个类型转换器,需要实现 Converter 接口,会有一个泛型 ( 即对数据类型的约束 )
拦截器与 Servlet 中的过滤器 Filter 类似
主要区别:
1 、实现原理不同 拦截器是基于 java 的反射机制的,而过滤器是基于函数回调;
2 、使用范围不同 拦截器不依赖与 servlet 容器,过滤器依赖与 servlet 容器。
3 、触发时机不同 过滤器先执行 ( servlet 之前 ) ,拦截器后执行 ( servlet 之后执行 )
4 、拦截的请求范围不同
5 、注入 Bean 情况不同 拦截器可以获取 IOC 容器中的各个 bean ,而过滤器就不行,拦截器里可
以注入一个 service ,可以调用业务逻辑。
6 、控制执行顺序不同 过滤器 1 个方法,拦截器 3 个方法 (preHandle 按照顺序执行 ,另外两个
方法顺序相反 )
 
springMVC 拦截器的配置
1 、实现 HandlerInterceptor 接口 或者 继承 HandlerInterceptor 的实体子类
2 、实现 WebRequestInterceptor 接口 或者 继承 WebRequestInterceptor 的实体子类
 
/WEB-INF 路径的下文件,属于隐藏文件,只能通过项目内部进行跳转,不能通过路径直接访问;
 
编写案例
实现功能,
用户登录后,可以访问 /selectAll /add /delete
未登录用户,只能访问 /login 访问其他路径时,自动跳转至登录页,并展示错误信息 " 用户未
登录 "

以上是关于SpringMVC的类型转换的问题的主要内容,如果未能解决你的问题,请参考以下文章

spring类型转换器(三)

spring类型转换器(一)

SpringMVC类型转换器Converter

SpringMVC的数据类型转换

关于springmvc怎么自动把前台string类型日期字段转换成date类型

SpringMVC的数据类型转换