黑马程序员日记-8

原创 2015年11月18日 20:09:30

------- Android培训java培训 期待与您交流! ----------

网络结构,

1,C/S  client/server

特点:

该结构的软件,客户端和服务端都需要编写。

可发成本较高,维护较为麻烦。

好处:

客户端在本地可以分担一部分运算。

2,B/S  browser/server

特点:

该结构的软件,只开发服务器端,不开发客户端,因为客户端直接由浏览器取代。 

开发成本相对低,维护更为简单。

缺点:所有运算都要在服务端完成。

JAVA WEB三大组件:Servlet、Filter、Listener

Servlet

1.作用:处理请求

2.做的事情:接受请求数据,处理请求,完成响应

3.方法:

a) 生命周期方法:

1.init();servlet对象创建之后立即执行,并只执行一次

2.service();会被调用多次,每次处理请求都调用这个方法

3.destroy();servlet对象被销毁之前调用,并只调用一次

 b) getServletInfo();获取Servlet的信息

 c) getServletConfig();获取Servlet的配置信息

4. Servlet是单例的,线程不安全的,其对象由服务器创建,由服务器调用相应方法

5. 在web.xml中配置Servlet:

web.xml

<servlet>
<servlet-name>xxx</servlet-name>
<servlet-class>cn.itcast.web.servlet.AServlet</servlet-class>
<!-- 服务器启动时创建该Servlet对象,值越小越先创建 -->
<load-on-startup>0</load-on-startup>
<servlet-mapping>
<!-- 具体要访问的Servlet,必须与Servlet配置名称相同 -->
<servlet-name>xxx<servlet-name>
<!-- 地址栏访问的Servlet地址,必须以/开头,名称随便 -->
<url-pattern>/AServlet</url-pattern>
</servlet-mapping>
<!-- 可以有多个初始化参数 -->
<init-param>
<param-name>p1</param-name>
<param-value>v1</param-value>
</init-param>
<init-param>
<param-name>p2</param-name>
<param-value>v2</param-value>
</init-param>
</servlet>


 

6. ServletConfig类:

一个ServletConfig对象对应一段web.xml中Servlet的配置信息

7. ServletContext类:

一个项目只有一个ServletContext对象,可以在多个Servlet中获取这个唯一的对象,使用它可以给多个Servlet传递数据,这个对象在Tomcat启动时创建,在Tomcat关闭时销毁

域对象:

ServletContextJavaWeb四大域对象之一:

PageContext

ServletRequest

HttpSession

ServletContext

所有域对象都有存取数据的功能,因为域对象内部有一个Map,用来存储数据。

 Servlet也可以获取初始化参数,但它是局部的参数;也就是说,一个Servlet只能获取自己的初始化参数,不能获取别人的,即初始化参数只为一个Servlet准备!

可以配置公共的初始化参数,为所有Servlet而用!这需要使用ServletContext才能使用!

例如:该配置信息独立于<servlet>标签之外

<context-param>
<param-name>paramName1</param-name>
<param-value>paramValue1</param-value>  
</context-param>


 

8. Response的两个流ServletOutputStream和PrintWriter不能共存,会有状态异常

 

服务器处理请求的流程:

  服务器每次收到请求时,都会为这个请求开辟一个新的线程。

  服务器会把客户端的请求数据封装到request对象中,request就是请求数据的载体!

  服务器还会创建response对象,这个对象与客户端连接在一起,它可以用来向客户端发送响应。


response:其类型为HttpServletResponse

  ServletResponse-->与协议无关的类型

  HttpServletResponse-->与http协议相关的类型

> 重定向是客户端信息必须带项目名

> 转发是服务端信息,不用带项目名

AServlet重定向到BServlet时,BServlet不能获取保存在AServlet中的数据,因为重定向使用了一个新的request对象

  * 请求转发和重定向的区别

    > 请求转发是一个请求一次响应,而重定向是两次请求两次响应

    > 请求转发地址栏不变化,而重定向会显示后一个请求的地址

    > 请求转发只能转发到本项目其他Servlet,而重定向不只能重定向到本项目的其他Servlet,还能定向到其他项目

    > 请求转发是服务器端行为,只需给出转发的Servlet路径,而重定向需要给出requestURI,即包含项目名!

    > 请求转发和重定向效率是转发高!因为是一个请求!

      * 需要地址栏发生变化,那么必须使用重定向!

      *需要在下一个Servlet中获取request域中的数据,必须要使用转发!



版权声明:本文为博主原创文章,未经博主允许不得转载。

黑马程序员_日记8_JavaSE阶段性习题练习及复习

——- android培训、java培训、期待与您交流! ———-JAVASE阶段性习题练习及复习这篇博客主要是把毕老师出的前四大练习题全部做了一遍,经我反复测试和修改后写得一些JAVASE基础总结。...

黑马程序员——java基础学习日记(8)

------- android培训、java培训、期待与您交流! ---------- 内省是 Java 语言对 Bean 类属性、事件的一种处理方法(也就是说给定一个javabean对象,我们就可...

黑马程序员_Java学习日记num8

------- android培训、java培训、期待与您交流! ---------- 学习内容:线程的创建;线程的同步;线程间的通信;操纵线程的常见函数 一、线程的创建 1,线程的创建方式一 1)...

黑马程序员——学习日记8 java抽象类与接口

------- java培训、Android培训 期待与您交流! ---------- 抽象类: abstract 抽象:不具体,看不明白。抽象类表象体现。 在不断抽取过程中,将共性内容中的方法...
  • T2ANDY
  • T2ANDY
  • 2014年04月26日 22:09
  • 266

黑马程序员java基础学习日记——做题遇到GBK查资料发现了个有趣的文章——ASCII、Unicode、GBK和UTF-8字符编码的区别联系

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万...

黑马程序员Java学习日记(8)网络编程

------- android培训、java培训、期待与您交流! ----------   黑马程序员Java学习日记(8)网络编程 1.概述: (1)网络模型:1、OSI参考模型     ...

黑马程序员——黑苹果的日记(8)——oc基础之类和对象

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一面向对象编程 1、编程的实质 我们的思维转变成计算机能够识别的语言的过程 2面向对象 基于...

黑马程序员——黑苹果的日记(3)——函数和进制

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一函数 1概述:函数是C源程序的基本模块,通过对函数模块的调用实现特定的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员日记-8
举报原因:
原因补充:

(最多只允许输入30个字)