• Spring里的坑


    Spring里的坑

    1. 配置文件配置controller,在Controller中使用注解配置的bean,会出现获取不到bean的情况

    步骤一:使用在配置文件 springmvc.xml 中配置的方式配置controller

    <bean name="login.action" class="com.orderonline.controller.admin.LoginController"></bean>

    步骤二:在controller中获取 Automired 自动注入的bean

    public class LoginController implements Controller{
    
        @Autowired
        private UserService userService;
        
        @Override
        public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
            // TODO Auto-generated method stub
    
            System.out.println(userService);  //这个将会打印 null
            
            
            ModelAndView mav = new ModelAndView();
            mav.setViewName("/admin/success.jsp");
            
            return mav;
        }
    }

    总结:要么都使用配置文件的方式配置bean,要么都使用注解的方式。

    2. web.xml文件中的<welcome-file>配置springmvc的action

    <welcome-file-list>
      <!-- 访问项目的时候,如果不加具体的页面地址,默认访问的页面 -->
      <welcome-file>index.action</welcome-file> </welcome-file-list>
    问题:
    <welcome-file> 里面配置一个html页面或者jsp页面都没有问题,但是如果配置一个action就会出现访问不到的情况。

    解决方法:
    新建一个与action同名的 空文件。例如我这里的 action 是 index.action,Action代码如下:
    @Controller
    public class IndexController {
    
        @Autowired
        private IndexService indexService;
        
        @RequestMapping("/index.action")
        public ModelAndView initPage(){
            ModelAndView mav = new ModelAndView();
           
        // ... ...
        
    mav.setViewName("/WEB-INF/index.jsp"); return mav; } }
     那我就要在webapp下新建一个 index.action 文件,如下图:

    
    

     3. Spring不引入 commons-logging.jar,报错:java.lang.NoClassDefFoundError: Lorg/apache/commons/logging/Log;

    在使用Spring的时候,如果不导入 commons-logging.jar 就会报错;提示导入这个jar包。但是疑惑的是,我的项目中没有使用到这个jar包啊。
    那么就只能是一个原因了。既然我们自己没有使用这个jar包的日志功能,那么就一定是Spring使用了这个jar包的日志功能。

    所以当我们使用Spring的时候,我们的项目也就依赖commons-logging.jar了。

    Spring依赖Commons-loggin.jar的原因:

     我们都知道,使用了Spring的项目在添加日志打印功能的时候,只需要很简单的几个配置,就能把第三方的日志打印框架整合进来,例如强大的Log4j。(这里不讲Log4j的导入)。

    那么为什么Spring对这些第三方日志打印框架有这么好的整合呢?

    原因就是,给这些第三方日志框架提供了日志打印接口。而Spring实现这些日志打印接口的方法就是通过Commons-loggin.jar实现的。

    Commons-loggin.jar的目的是为“所有的Java日志实现”提供一个统一的接口,它自身的日志功能平常弱,所以一般不会单独使用它。

    在这里可以类比于JDBC的API接口:java提供操作数据库的接口,而操作数据库的驱动和api的实现由各个数据库的厂商来做。开发者只需要调用java的api即可,不用管各个数据库访问的实现。

     
  • 相关阅读:
    nginx配置https访问
    nginx解决带_的head内容丢失
    软件开发报价的计算方法(转载)
    使用游标批量初始化密码
    调用WScript.Shell时产生Automation 服务器不能创建对象的错误
    用.NET SqlBulkCopy类执行批量插入数据到数据库
    XML文件做数据源的读取使用
    页面实现数据库备份(还原)实例
    特定的ExcelCSS样式Excel导出
    索引的初步学习总结
  • 原文地址:https://www.cnblogs.com/CUI-S/p/8445274.html
Copyright © 2020-2023  润新知