# 编程漫步 #
从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文件)
从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学习框架,脑子里有太多太多疑问与困惑。为什么程序要这么编写,为什么会报错,我写的这个程序在做什么?下面就说说现在自己脑海对编程的一些简单理解
下面是一个典型的系统硬件组成
![](https://i-blog.csdnimg.cn/blog_migrate/771d342ab06dcadd7bcea23c8fb36072.png)
首先说说hello world程序,在计算机中由操作系统负责调用计算机硬件,执行应用程序,关系如下图所示
![](https://i-blog.csdnimg.cn/blog_migrate/c3680f3a7f3321c483bcb6fa202605ea.png)
在执行java语言的hello world程序,首先得告诉操作系统这个调度者:"喂,哥们我要执行java程序啦。"(编译阶段被省略过去了,因为信息编码我不太懂就暂时跳过吧)
操作系统说:"好啊,来吧我来执行java程序。"结果一执行,操作系统执行不了。然后你告诉他要有jdk并且告诉他jdk在哪找(这就是配置系统环境的作用)。操作系统再一执行就在后台打印出了"hello wrold!"。
下面是整个hello world程序执行的硬件执行图
![](https://i-blog.csdnimg.cn/blog_migrate/d8dbfcd540d1ef26432e453621b0fc27.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3f4f4ae51c42f4d5202d7b894977d07a.png)
在了解了这个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的实现类。因为这个错误不是重点就讲到这里。)
(以上图片全部来自《深入理解计算机系统》)