• springmvc controller常见问题


     controller 的各种操作都是依赖服务器启动后来注入很多功能的,所以热部署经常会没有效果(因为没有被注入,除非在 方法名() 的括号中定义对象 [ 例如: 

    HttpServletResponse response

    ] ,因为那样就在访问方法时传递注入了进来,不过即使用这种方式都容易出现没效果的问题,所以这种时候重启服务器即可),没有效果时重启服务器即可

    1. 不要把一个 modelAndView 当成重定向的方式,因为它是用于指定视图的,如果要重定向到 .action结尾的 或者就是无后缀的controller,那么用 return String 的方式来重定向,

    指定视图就用 modelAndView (通过测试发现: 直接 return String 的方式仍然停留在这个 controller 中,所以特殊场景下需要使用 response来实现重定向)

    2. controller的类必须在创建后就先写上 @Controller 注解,否则会找不到这个 Controller

    3. 使用 session 时,直接key和value都使用字符串值即可,在验证value时,直接用if来判断即可,如:

        @RequestMapping("/jsp/backstageManager/showFramework")
        public ModelAndView showFramework() {
            ModelAndView modelAndView = new ModelAndView("/jsp/backstageManager/backstage_framework.jsp");
            if (!"true".equals(session.getAttribute("adminLoginStatus")) ){
                System.out.println("没有 session ,跳转到 非法访问 页面");
                modelAndView.setViewName("/html/error/UnauthorizedAccess.html");
            }
            return modelAndView;
        }

    controller非常容易出现空指针异常,特别是所有跟request有关的操作,

    如下图, @Autowired 有时都注入不成功,所以这种情况下需要在方法里单独传入request,这样就可以成功实现了

    使用idea进行热部署访问或者正常访问项目时,可能会因为路径问题访问错误但是却不显示错误,这种情况下连Controller都进不了(这里少了个项目目录)

    idea热部署情况下更新controller后出现莫名其妙的错误的解决方案

    在idea热部署的情况下,刚写好的mailservice出现了错误,发现重启服务器后解决了,可能是资源并没有完成同步的原因,所以这种情况以后可以直接重启服务器,不需要debug

  • 相关阅读:
    [2020BUAA软工助教]助教每周小结(week 9)
    关于强制转会的说明
    Windows更新崩溃记~
    WPF 在DataTemplate定义事件触发器不生效的问题
    Github上不去方法
    TCPListener.AcceptTcpClient阻塞进程退出方法
    Lamada 借助All实现ForEach
    WPF 关于在ContextMenu中绑定带参数的命令
    关于WPF.ICommand.CanExcute
    .NET程序员疫情之下找工作现状
  • 原文地址:https://www.cnblogs.com/kinome/p/9047553.html
Copyright © 2020-2023  润新知