美文网首页
spring异常处理

spring异常处理

作者: itachi | 来源:发表于2017-02-06 17:34 被阅读66次

中文乱码解决方案

spring提供了一个CharacterEncodingFilter过滤器,可用于解决乱码问题,在使用时,需要注意下面几点问题:
1、表单数据以post方式提交
2、在web.xml中配置CharacterEncodingFilter过滤器
3、页面编码和过滤器指定编码要保持一致

  <!--配置过滤,解决中文乱码问题-->

    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

验证登陆实例

在登陆后才可以查看某些页面,否则会被转到登陆页面要求登陆

先定义一个异常:该异常继承RunTimeException

public class ApplicationException extends RuntimeException {
    public ApplicationException() {
        super();
    }

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

    public ApplicationException(String message, Throwable cause) {
        super(message, cause);
    }
}

在服务层定义一个获得用户名的login方法:

    public Admin login(String adminCode,String password) {
        Admin admin=null;

            admin=adminDao.findByAdminCode(adminCode);
            if(admin==null){
                throw new ApplicationException("账户不存在");
            }
            if(!admin.getPassword().equals(password)){
                throw new ApplicationException("密码错误");
            }
           /* 异常的分类:系统异常(数据库,服务暂停,网络中断)发生之后,程序无法恢复,只能通知用户稍后重试
                    应用异常:用户的问题产生异常(输入错误的账号和密码,应提示进行正确的操作)*/

        return admin;
    }

在控制层做登陆控制

@RequestMapping("/login.do")
    public ModelAndView checkLogin(String adminCode, String password, HttpSession session){
//        try {
            Admin admin=loginService.login(adminCode,password);
            session.setAttribute("admin",admin);
/*        } catch (Exception e) {
            e.printStackTrace();
            if(e instanceof ApplicationException){
                //应用异常,提示用户
                Map<String,String> map=new HashMap<String,String>();
                //用户名回显
                map.put("adminCode",adminCode);
                map.put("message",e.getMessage());
                return new ModelAndView("login/login",map);
            }
            //系统异常,提示用户稍后尝试
            return new ModelAndView("error");
        }
        */
        //没有异常,重定向至首页
        return new ModelAndView(new RedirectView("toIndex.do"));
    }

若spring的配置文件中有对于异常的统一配置处理可以进行如下处理:

    //转发至首页
    @RequestMapping("toIndex.do")
    public String toIndex(){
        return "login/index";
    }

    @ExceptionHandler
    public String execute (HttpServletRequest req,Exception e) throws Exception {
        //应用异常,提示用户
        if(e instanceof ApplicationException){
            //回显
            req.setAttribute("adminCode",req.getParameter("adminCode"));
            req.setAttribute("message",e.getMessage());
            return "/login/login";
        }else{
//            系统异常交给Spring
            throw e;
        }
    }

相关文章

  • spring boot异常处理

    spring boot异常处理 在spring mvc异常处理一文中,我介绍了在spring mvc中如何配置异常...

  • Spring 之异常处理

    spring的异常处理 spring的异常处理,有两种方式 1、实现HandlerExceptionResolve...

  • SpringMVC(十三)异常处理

    一、异常处理 Spring MVC 通过 HandlerExceptionResolver 处理程序 的异常,包括...

  • SpringMVC异常处理

    Spring MVC处理异常有3种方式: (1)使用Spring MVC提供的简单异常处理器SimpleMappi...

  • SpringMVC统一异常处理

    Spring MVC处理异常有3种方式: (1)使用Spring MVC提供的简单异常处理器SimpleMappi...

  • springboot之统一异常处理

    spring统一异常处理 使用spring的统一异常处理,我们就不再需要在业务代码中就行显式的捕获异常处理,在da...

  • Spring中处理Filter中的异常

    通常的Spring全局异常处理并不能处理Filter中的异常。 How to manage exceptions ...

  • spring 处理异常

    spring提供了3种方式将异常转化为响应 特定spring异常将会自动映射为指定的http状态码 异常上可以添加...

  • spring异常处理

    中文乱码解决方案 spring提供了一个CharacterEncodingFilter过滤器,可用于解决乱码问题,...

  • Spring异常处理

    1、配置简单异常处理器(此方法用于简单处理异常,即只能做跳转) 其中Key对应需要处理的异常种类,value对应需...

网友评论

      本文标题:spring异常处理

      本文链接:https://www.haomeiwen.com/subject/lpawbttx.html