您的位置:首页 > 职场人生

黑马程序员日记-8

2015-11-18 20:09 267 查看
------- 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关闭时销毁

域对象:

ServletContext是JavaWeb四大域对象之一:

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域中的数据,必须要使用转发!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 笔记 java web