J2EE学习笔记
一、 基本概念(J2EE Java 2 Enterprise Edition )
1. web 构件:在J2EE Web 容器上运行的软件程序,Web 容器主要支持多层结构的表示层。
容器是能提供基本功能的底层平台,他们之间通过接口进行通信;
构件和容器的关系有些像计算机插件和主板的关系;
Web 程序的体系结构:双层结构、三层结构、多层结构(用户界面层、表示逻辑层、业务层、数据访问层、数据层);
Web 容器管理所有JSP、JSTL、和Servlet等web 构件的运行,这一层对应多层结构中的表示层;
2. web 构件的功能:在HTTP协议上对web 请求(request)进行响应(response);
所谓响应:就是动态生成的网页。
3. J2EE 的web 构件包括:servlet 、JSP、JSTL(Java Server Pages Standard Tag Library);
4. Web 程序客户端的主要功能:
(1)显示用户界面;
(2)确认用户输入;
(3)与服务器进行通信;
(4)管理对话状态;
5. 浏览器的主要功能:
(1)以特定状态显示HTML文件
(2)获取用户的点击并转化为web 请求request
(3)连接web服务器,发出web请求并接收处理响应
(4)管理用户与服务器之间的对话状态session state
6. GET 方法:简单直观,数据连接在URL 之后;
缺点:保密性不好,URL长度受限;
POST方法:数据和URL 分开发送;
MIME类型文件、自动使用Post方法
ENCTYPE:指定数据在发送之前的编码方式;
<form action= “updata.action” enctype= “multipart / form-data”>
7. web 层的功能:用来处理HTTP请求,根据web容器内的servlet 和JSP动态生成HTTP响应
8. servlet 的优点:(1)方便灵活;(2)高效的;(3)通用廉价;
9. JSP的优点:
(1)JSP是从servlet 发展而来的;
(2)简单易用;
(3)方便开发;
(4)功能强大;
10. session :代表一个客户在一段工作过程中对web 服务器的一系列web 请求;
11. Cookie :web 服务器向浏览器发送的并在客户端存储的微型数据文件,限制大小为4 KB;
(以 key 、 value 方法存储信息)
12. web 容器实现会话的三种方式
(1)Cookie 机制;
(2)URL 重写;将会话代码加入URL 的过程成为URL 重写;
(3)隐藏表单输入;
13. 请求转发和请求重定向的区别:
进行请求转发时,存储在request 对象中的信息会被保留并被带到目标页面中;
而重定向是重新生成一个 request 请求,然后将该请求重定向到指定的url ,所以事先存储在request 对象中的信息都不存在了;
14.Ajax 包括的5中技术:XMLHTTPRequest,javascript、DOM、CSS、XML;
二、 servlet
1. JSP 和servlet 的区别:
(1)编程方式不同;
(2)servlet 必须在编译以后才能执行;
(3)运行速度不同;
2. servlet 的生命周期
(1)当web 客户请求servlet 服务或当web 服务启动时,容器环境加载一个Java Servlet 类;
(2)容器环境也将根据客户请求创建一个Servlet 对象实例,或者创建多个Servlet 对象实例,并把这些实例加入到Servlet 实例池中;
(3)容器环境调用Servlet 的初始化方法HttpServlet.init() 进行初始化;
(4)容器环境利用一个HttpServletRequest 和HttpServletResponse 对象,封装从web 客户接收到的HTTP请求和由Servlet 生成的响应;
(5)容器环境把HttpServletRequest 和HttpServletResponse 对象传递给HttpServlet.service()方法;
(6)定制的Java Servlet 从HttpServletRequest对象读取HTTP请求数据,访问来自HttpSession 或Cookie 对象的状态信息,进行特定应用的处理,并利用HttpServletResponse 对象生成HTTP响应数据;
(7)当web 服务器或容器关闭时,会自动调用HttpServlet.destroy() 方法关闭所有打开的资源,并进行一些关闭前的处理。
3. Servlet 开发步骤:
(1)继承HttpServlet 抽象类;
(2)重写父类方法 public void init() throws ServletException
protected void doGet(HttpServletRequest req,HttpServletResponse resp)
throws ServletException, java.io.IOException
protected void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException, java.io.IOException
public void destroy()
(3)如果有HTTP请求信息,获取该信息;
(4)生成HTTP响应;
Servlet 配置
(1) Servlet 名称、类和其他选项配置
<servlet>
<description>servlet 的描述信息</description>
<display-name>发布时servlet 的名称</display-name>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>upc.HelloServlet</servlet-class>
</servlet>
如果要配置的servlet 是一个JSP页面则使用<jsp-file>login.jsp</jsp-file> 来指定
(2) 初始化参数
<servlet>
<init-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</init-param>
</servlet>
上述参数在servlet 中可以通过String driver=getInitParameter(“driver”);方法获取
(3) 启动装入优先权
<load-on-startup>10</load-on-startup>
(4) Servlet 的映射
<se