SpringMVC的类型转换的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC的类型转换的问题相关的知识,希望对你有一定的参考价值。
SpringMVC中有没有类似Struts2中DefaultTypeConverter的接口,或者说有没有什么办法让表单中所有的采参数一次性转换成一个对象。
定义一个实体类.比如
public class Userprivate String id;
private String username;
private User loader;
...//其他代码略
然后编写他的持久层和服务层的代码.
class UserDao...//其他代码略
在控制层接受前台传来的参数时直接用实体类来接受:
@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的类型转换的问题的主要内容,如果未能解决你的问题,请参考以下文章