Java Web学习笔记-1

1.servlet理论上可以处理多种形式的请求响应形式 ,http只是其中之一 ,所以HttpServletRequest、 HttpServletResponse分别是ServletRequest和ServletResponse的子类 ,HttpServletRequest和ServletRequest都是接口 ,HttpServletRequest继承自ServletRequest ,HttpServletRequest比ServletRequest多了一些针对于Http协议的方法。  如  getHeader(String name),  getMethod() ,  getSession() 等

2.HttpServletRequest 的实现是根据不同服务器的,tomcat有tomcat的实现,webLogic有webLogic的实现

3.生成唯一文件名:UUID.randomUUID();

4.WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。多个Servlet通过ServletContext对象实现数据共享。

如实现Servlet的转发。

 RequestDispatcher rd = getServletContext().getRequestDispatcher(“/1.jsp”);   //相对当前上下文的根目录,而不是文件在物理服务器上的根路径

 rd.forward(request,response);

实现数据的交互

this.getServletContext().setAttribute("today","Yestoday");

 

5.HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议);当使用Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后续请求时,Keep-Alive功能避免了建立或者重新建立连接。

6.flush()这个函数是清空的意思,用于清空缓冲区的数据流,从缓存区强制输出。进行流的操作时,数据先被读到内存中,然后再用数据写到文件中,那么当你数据读完时,我们如果这时调用close()方法关闭读写流,这时就可能造成数据丢失,为什么呢,因为,读入数据完成时不代表写入数据完成,一部分数据可能会留在缓存区中。

7.HTTP消息的结构

 (1)Request 消息分为3部分,第一部分叫请求行, 第二部分叫http header消息头, 第三部分是body正文,header和body之间有个空行, 结构如下图

 (2)Response消息的结构, 和Request消息的结构基本一样。 同样也分为三部分,第一部分叫request line状态行, 第二部分叫request header消息体,第三部分是body正文, header和body之间也有个空行,  结构如下图

 

8.java类的加载是由虚拟机来完成的,虚拟机把描述类的Class文件加载到内存,并对数据进行校验,解析和初始化,最终形成能被java虚拟机直接使用的java类型,这就是虚拟机的类加载机制.JVM中用来完成上述功能的具体实现就是类加载器.类加载器读取.class字节码文件将其转换成java.lang.Class类的一个实例.每个实例用来表示一个java类.通过该实例的newInstance()方法可以创建出一个该类的对象.

 

9.返回的类型是接口,但是接口是不能实例化的,但是接口可以声明一个引用,指向其实现类,也就是说,在实际中返回值都是这个接口的实现类的对象。 说明返回的对象是实现这个接口的某一个类型的实例。

 

10.isAssignableFrom 是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口。  

  String.class.isAssignableFrom(Object.class)------->false

  Object.class.isAssignableFrom(String.class)------->true

posted @ 2017-05-26 11:07  陈煜弘  阅读(197)  评论(0编辑  收藏  举报