异常以及类型转换

   异常处理器 

 <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="defaultErrorView" value="error"></property>
        <property name="exceptionAttribute" value="ex"></property>
    </bean>

   

      这里是在spring的xml文件中写     ,  之中使用了视图解析器,error是错误跳转的页面, 

<property name="defaultErrorView" value="error"></property>    

 <property name="exceptionAttribute" value="ex"></property>

这个是异常的对象,el表达式 ,页面使用输出异常对象


2 自定义异常处理
<body>
<h2>登录</h2>
<form action="/lp" method="post">
    用户名: <input name="username" value="${username}"/>
    年龄: <input name="age"/>
    出生日期: <input name="birthday"/>

    <input type="submit" value="登录"/>
</form>
</body>

    @RequestMapping("/login")
    public  String  log(String username,int age) throws Exception {
        System.out.println("adadadda");
        if(!username.equals("admin")){
            System.out.println("aaa");
            throw  new NameException("名字错了");
        }

        if(age>60){
            System.out.println("bbb");
            throw new AgeException("年龄错了");
        }

        return "ax";
    }

下面把异常类说一下 

public class AgeException extends Exception{
    public AgeException() {
    }

    public AgeException(String message) {
        super(message);
    }
}
public class NameException extends Exception {

    public NameException() {

    }

    public NameException(String message) {
        super(message);
    }
}

   这是我们自己的异常 

 <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <!--<property name="defaultErrorView" value="error"></property>-->
        <property name="exceptionAttribute" value="ex"></property>
        <property name="exceptionMappings">
            <props>
                <prop key="springmmv.exception.NameException">age</prop>
                <prop key="springmmv.exception.AgeException">name</prop>

            </props>
        </property>
    </bean>

把异常跳转的页面定义好就行 

  

 自定义异常处理器 

 */
public class text implements HandlerExceptionResolver {
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        ModelAndView mv=new ModelAndView();
        mv.addObject("ex",e);
        if(e instanceof NameException){
         mv.setViewName("name");
        }
        if(e instanceof AgeException){
         mv.setViewName("age");
        }

        return mv;
    }
}

之后在spring中加入一行这个的配置文件就行,就是以他为class的bean  

类型转换  

Data 的各种处理 

 <bean id="dg" class="springmmv.cn.news.Conver"></bean> 为转换器的类 
 <bean id="dg" class="springmmv.cn.news.Conver"></bean>

    <bean id="jk" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters" ref="dg"></property>
    </bean>

    <mvc:annotation-driven conversion-service="jk"/>
public class Conver implements Converter<String,Date> {
    public Date convert(String str) {
        SimpleDateFormat sa=gets(str);
        try {
            Date date=sa.parse(str);
            return date;
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return null;
    }

    public SimpleDateFormat gets(String string){
        SimpleDateFormat sm=new SimpleDateFormat("yyyy年MM月dd日");

        if(Pattern.matches("^\d{4}-\d{2}-\d{2}",string)){
            sm=new SimpleDateFormat("yyyy-MM-dd");
        }else if(Pattern.matches("^\d{4}/\d{2}/\d{2}",string)){
            sm=new SimpleDateFormat("yyyy/MM/dd");
        }else if(Pattern.matches("^\d{4}\d{2}\d{2}",string)){
            sm=new SimpleDateFormat("yyyyMMdd");
        }



        return sm;

    }
}

这个就是类型转换的类 

使用这个的时候,传过来的数值就会自动转换,避免400吧 。 












原文地址:https://www.cnblogs.com/LWLDD/p/8679201.html