springmvc(3)验证和json操作还有异常页面

验证
导入jar包
在这里插入图片描述

写提示文件(ValidataMessages.properties)

user_username_empty=\u8D26\u53F7\u4E0D\u80FD\u4E3A\u7A7A
user_username_size=\u8D26\u53F7\u957F\u5EA6\u4E3A3~6
user_password_empty= \u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A
user_password_size=\u5BC6\u7801\u957F\u5EA63~6
 

xml配置文件

	<!-- 开启扫描 -->
 	<context:component-scan base-package="com.liy.controller"></context:component-scan>
 	
 	<!-- 开启mvc注解 -->
 	<mvc:annotation-driven validator="validator"></mvc:annotation-driven>
 	 
 	 <!--添加对JSR-303验证框架的支持  -->
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass"  value="org.hibernate.validator.HibernateValidator"/>
        <!--不设置则默认为classpath下的 ValidationMessages.properties -->
         
        <property name="validationMessageSource" ref="validatemessageSource"/>
    </bean>
   
    <bean id="validatemessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">  
        <property name="basename" value="classpath:ValidataMessages"/>  
        <property name="fileEncodings" value="utf-8"/>  
        <property name="cacheSeconds" value="120"/>  
    </bean>	
 
 
 
 </beans>
 

javaBean层

public class User {
	
	public Integer  id;
	
	@NotBlank(message="{user_username_empty}",groups={AvlidateGroup1.class})
	@Size(max=6,min=3,message="{user_username_size}",groups={AvlidateGroup2.class})
	public String username;
	
	@NotBlank(message="{user_password_empty}",groups={AvlidateGroup1.class})
	@Size(max=6,min=3,message="{user_password_size}",groups={AvlidateGroup2.class})
	public String password;


	public User() {
		super();
	}


	public User(int id, String username, String password) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
	}

controller控制层

@Controller
public class Validata {
	
	@RequestMapping("/validata")
	@ResponseBody
	public void validata1(@Validated(value={AvlidateGroup1.class}) User user,BindingResult br){
		System.out.println(user);
		List<ObjectError> objerr = br.getAllErrors();
		  
		if (objerr != null || objerr.size() >0) {
			for (ObjectError objectError : objerr) {
				System.out.println(objectError.getDefaultMessage());
			}
		}else {
			System.out.println(user);
		}
	 
	}
	
	
	@RequestMapping("/validata1")
	@ResponseBody
	public void validata2(@Validated(value={AvlidateGroup2.class}) User user,BindingResult br){
		System.out.println(user);
		List<ObjectError> objerr = br.getAllErrors();
		  
		if (objerr != null || objerr.size() >0) {
			for (ObjectError objectError : objerr) {
				System.out.println(objectError.getDefaultMessage());
			}
		}else {
			System.out.println(user);
		}
	 
	}
 

分组的用的接口(里面不用写内容 , 就是用来区分一个属性的多个验证信息)
在这里插入图片描述

发生错误 ,跳转到错误页面

@Component
public class MyHandlerExceptionResolver implements HandlerExceptionResolver{

	@Override
	public ModelAndView resolveException(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,
			Exception arg3) {
		System.out.println("出现异常了--"+arg3.getMessage());
		ModelAndView mv = new ModelAndView();
		mv.addObject("exe", arg3.getMessage());
		
		mv.setViewName("error");
		return mv;
	}

}
 

配置文件

	<!-- 开启扫描 -->
 	<context:component-scan base-package="com.controller,com.liy.*"></context:component-scan>
 
 	<!-- 开启mvc注解 -->
 	<mvc:annotation-driven></mvc:annotation-driven>
 	
 	
 	<!-- 给返回的字符串加前后缀 -->
  	<bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 		<property name="prefix" value="/"></property>
 		<property name="suffix" value=".jsp"></property>
 	</bean>  
 

json的转换(spring自带的就只要导入jar包就可以了 无需配置)
导入jar包
在这里插入图片描述

controller层代码

@Controller
public class MyController {
	//响应返回数据转换成json只要加上@responseBody注解   

    //接收请求的数据转换json加上@requestBody注解
	@RequestMapping("/fun")
	@ResponseBody 
	public void fun(@RequestBody User user){
	 
	 System.out.println(user);
	}
 

使用其他的json转换的jar包

比如fastJSON

导入jar包
在这里插入图片描述

然后在配置文件里配置

	<!-- 开启mvc注解 -->
 	<mvc:annotation-driven>
		 <mvc:message-converters>
		 	<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"></bean>
		 </mvc:message-converters>
	</mvc:annotation-driven>

springmvc中,直接接收json参数,如果参数中有日期的话,不需要定义日期类型转换器,日期的转换由gson/jackson/fastjson来提供。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值