Servlet方面的理解

牛顿有一句话:站在巨人的肩上,我们可以看的更远!这里我修改一下:站在前辈的经验之上,我们这些晚辈前进的更远!因此希望前辈们能够不吝赐教!
今天第一次去面试,由于急切希望暑假期间能够找到一份软件方面的工作,连期末考试都不放在心上,精心准备了一下JavaWEB开发方面的知识。结果到面试的时候,HR问我的第一个问题就是Servlet的doGet方法与doPost方法有什么区别,当时就有点晕。。。。。。就这个好像没看,因为在某些地方好像看到过doGet方法不经常用所以就没有太在意正不巧HR问道这个问题哎。。。。
其实很多时候我们自己觉得某一些方面的知识掌握的很好,但是我们终会忽视一些基本的东西,好像是越基本的东西我们越容易忽略;所以以后一定要对基础的东西理解透!下面是自己对Servlet方面知识的理解,希望前辈可以指导一下,我们这些初学者会感激涕零的,你们(帮助我们的人就会想一部电视剧中所说:你会万福哦!)
Servlet容器(Tomcat)的理解:
任何一个容器都应该是一个完整的可以运行执行某项功能的应用程序,因此Serclet容器本质上也是一个程序;当我们启动一个Servlet容器时(实质就是创建一个类的实例),它会解析(通常说加载)WEB.XML文件,获取Servlet.class文件以及Servlet初始化的一些参数,然后将他们传递给其本身的相关方法,这些方法会利用java中的反射机制动态创建Servlet实例并运行,然后这个实例以多线程的方式处理来自于客户端的请求,这可能就是为什么修改处于运行状态的Servlet容器中的Servlet类以及配置文件并不起效的原因吧!
Request与Response的理解:
书上通常说Request包装了用户的请求参数,实质上是Request这个类里面包含了服务端与客户端之间的输入流变量InputStream;Request类里则提供了解析这个输入流变量的方法;而Request类则相反,它是包含了输出流变量OutPutStream;它会把服务端处理的结果写入到流中,然后客户端会解析成HTML格式并以网页的形式显示。
Application与Session的理解:
Servelt作为一个类,该类以多线程的方式与客户端交互(一般的网络编程都是采用这种方式),其包含一个主体方法,不断循环检测有无用户连接,有的话就为该用户启动一个线程,这个线程仅仅负责与本用户的交互。这时我们可以把Applicqtion看做是Aervlet类的一个变量(确切的说是一个集合类),而Session看做是每个与用户交互的线程里的变量(更确切的说是一个集合类),这样的话Session可以跟中用户的状态,而Application则是说有线程均可以访问的对象,所以书上说Application是一个应用程序级别的全局变量;这里不过这里会有一个很明显的问题,就是Application存在线程安全问题,所以实际中,与用户交互的线程对它的访问一定是同步的。
这里还有个疑惑:客户端请求一个JSP页面并且这个页面中又有一个提交到特定Servlet类的表单时,Servlet容器怎么处理?即是处理的大概步骤或流程?
发布了17 篇原创文章 · 获赞 4 · 访问量 5678

猜你喜欢

转载自blog.csdn.net/jasstion/article/details/83424493