编程漫步

# 编程漫步 #

从java的hello,world到WebApplicationInitializer(或者说web.xml配置)一路过来走的得多停得少,现在停下来好好理一理。

    public class Hello{
        public static void main(String[] args){
            System.out.println("hello,world");
        }
    }
刚刚开始学java时,就是这么一个简单的hello world程序我都运行不了,不是不能编译就是运行就报错。反复看了看正确的代码与自己写的代码都一样,心里气到不行,是不是电脑有问题?

后来反复百度才知道要有JDK,有了JDK之后还要配置系统变量(其实就是让系统知道jdk在哪)。随后学习的就是什么变量、for循环,然后是面向对象与集合。

直到学习web学习框架,脑子里有太多太多疑问与困惑。为什么程序要这么编写,为什么会报错,我写的这个程序在做什么?下面就说说现在自己脑海对编程的一些简单理解

下面是一个典型的系统硬件组成



首先说说hello world程序,在计算机中由操作系统负责调用计算机硬件,执行应用程序,关系如下图所示



在执行java语言的hello world程序,首先得告诉操作系统这个调度者:"喂,哥们我要执行java程序啦。"(编译阶段被省略过去了,因为信息编码我不太懂就暂时跳过吧)

操作系统说:"好啊,来吧我来执行java程序。"结果一执行,操作系统执行不了。然后你告诉他要有jdk并且告诉他jdk在哪找(这就是配置系统环境的作用)。操作系统再一执行就在后台打印出了"hello wrold!"。

下面是整个hello world程序执行的硬件执行图





在了解了这个hello简单的小程序执行的流程之后有什么用呢?下面说说在学习spring阶段遇见的一些问题。

首先看一个类

    public class WebApplication implements WebApplicationInitializer {
        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
            //初始化spring容器
            AnnotationConfigWebApplicationContext application = new AnnotationConfigWebApplicationContext();
            application.register(MVCConfiguration.class);
            application.register(MybatisConfiguration.class);
            application.register(SpringConfiguration.class);
            //servlet的上下文添加一个servlet
            ServletRegistration.Dynamic springmvc = servletContext.addServlet("springmvc", new DispatcherServlet(application));
            springmvc.addMapping("*.action");
            System.out.println("初始化成功");
        }
    }
    与web.xml文件的作用一样
这个类是tomcat在启动时就初始化了一些类(初始化类是不是就是在主存中初始化的信息呢?并且可以随时被访问),在使用浏览器测试时访问静态页面都能找到,一访问*.action的内容就报404找不到的错误。当时可真是查了又查看了看,代码真的是一模一样,一脸的懵逼这个问题到底错在哪?理了理思路,会不会是主存中没有初始化spring容器呢?

所以在WebApplication类中加了一行打印语句,发现果然这个类没有被初始化,那么配置的DispatcherServlet也没有,主存中更不会存在spring容器,自然找不到*.action的Url。

(在tomocat7中标准的文件布局是这样的)

    artfacts/
            --/ META-INF
            --/ WEB-INF
              --/ veiws
                --/ home.jsp
              --/ classes
                --/(class文件)

(因为学习的是spring框架无xml的注解开发,所以没有创建WEB-INF文件,tomcat7找不到,所以启动时是有错误的但是idea并没有报错,按照tomcat7的标准文件夹创建文件夹即可消除此错误,tomcat7就会加载实现了WebApplicationInitializer的实现类。因为这个错误不是重点就讲到这里。)

(以上图片全部来自《深入理解计算机系统》)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值