??xml version="1.0" encoding="utf-8" standalone="yes"?>成人高潮成人免费观看,欧美日一区二区,免费a在线观看http://www.aygfsteel.com/hitlang/category/11573.html学以致用zh-cnFri, 02 Mar 2007 02:33:51 GMTFri, 02 Mar 2007 02:33:51 GMT60servlet学习W记http://www.aygfsteel.com/hitlang/articles/71851.htmlliulangliulangMon, 25 Sep 2006 15:09:00 GMThttp://www.aygfsteel.com/hitlang/articles/71851.htmlhttp://www.aygfsteel.com/hitlang/comments/71851.htmlhttp://www.aygfsteel.com/hitlang/articles/71851.html#Feedback0http://www.aygfsteel.com/hitlang/comments/commentRss/71851.htmlhttp://www.aygfsteel.com/hitlang/services/trackbacks/71851.html2004-9-16      星期四    ??/p>

Servlet的基概念

1.  Servlet是什?
{:1) 模块化的E序Q运行在服务器端Q增Zh/响应导向服务;
    2) 应用CZQ?br />       a. 讉Kq端对象;
       b. 跟踪大量信息;
       c. 多用户协?/p>

2.  HTTP和Servlets
{:1) Servlet是HTTP协议中作为CGI的一个替代品;
    2) HttpServletcȝ于开发HTTP为基的Servlet

3.  HttpServlet
{:1) l承抽象cjavax.servlet.GenericServletQ实现接口java.io.Serializable;
    2) 用以开发Http协议为基的Servlet

4.  服务Ҏ
{:1) 每当服务接收到对Servlet的请求时Q服务器׃产生一个新U程Qƈ调用Service。serviceҎ查HTTPhcd(GET、POST、PUT、DELETE{?,q相应地调用doGet、doPost、doPut、doDelete{?br />    2) doGet/doPostҎ接收HttpServletRequest和HttpServletResponse对象?br />    3) 99%的时间里Q只需注意GET?或POSTh;
    4) 没有MdoHeadҎ?/p>

5.  q回响应
{:1) PrintWriter out = response.getWriter                 // 用于q回文本数据l客L
    2) ServletOutputStream out = response.getOutputStream   // 用于q回二进制数据给客户?/p>

6.  支持Servlet的Web服务?br />{:1) J2EE应用服务器包括:Web Container和EJB Container;
    2) Web Container的Servlet Engine提供对Servlet的运行支?

                                                                               
2004-9-17      星期五    ??

用Servlet处理表单数据

1. Form元素的属?br />{:1) ACTION: 用来指定要处理FORM数据的Servlet的URLQ也可以指定FORM数据要发送到的电子邮?
    2) METHOD: 指定数据传送给HTTP服务器的Ҏ;
    3) ENCTYPE: 指定数据在传输之前进行编码的方式, 例multipart/form-data ~码每个字D作为MIME可兼容的文档的单独部分传输?/p>

2. 解析h
{:1) 对于所有的hQ?br />       a. getParameterNames: 以Enumeration形式获取表单中清? 每一w可以转换成String;
       b. getParameter: q回表单中参数名(区分大小?对应的?没有q样的参敎ͼq回null;没有M|q回IString);
       c. getParameterValues: q回表单中参数名(区分大小?对应的字W串数组(没有q样的参敎ͼq回null;只有一个|q回gؓ单一元素l?;


Servlet的生命周?/p>

1.  Servlet的生命周?br />{:1) 通过web Container装蝲(J2EE的组仉是被动地装蝲入Container)q实例化Servlet对象;
    2) 调用init()Ҏ(在整个生命周期中只被调用一?;
    3) 调用service()Ҏ(在整个生命周期中可被调用多次);
    4) 调用destroy()Ҏ(在整个生命周期中只被调用一?;

2.  initҎ
{:1) 当首ơ创建Servlet时就会调用initҎ, 而不是每个用戯求都会调用该Ҏ?br />    2) 除非被destroyҎU除Q否则不能被重蝲;
    3) initҎ一l束Qservlet卛_接受客户端请?
   
3.  initҎ实例
{:1) 在编写接受ServletConfig作ؓ参数的initҎӞ应该L在首行调用super.init;
    2) initҎ接受ServletConfig作ؓ参数, 用以下方法获得参数|
       a. getInitParameter: q回指定参数名称对应的|如果参数不存在,q回null;
       b. getInitParameterNames: q回指定参数名称对应的值枚举,如果参数不存在,q回的空枚D;

2004-9-20      星期一      ?/p>

3.  serviceҎ
{:1) 每当服务器接收到对Servlet的请求时Q服务器׃产生一个新U程, q调用service。serviceҎ查HTTPhcdQ请相应地调用doGet、doPost、doPut、doDelete?br />    2) 被container调用d?ServletResponse)来自客户端的h(ServletRequest);

4.  Servlets的多U程安全
{:1) 多线E占用资源少Q处理速度快,提高了效率?br />    2) 一些编码徏议:
       a. 对变量和Ҏ定义适当的访问方? 例如单纯取值操作不会有多线E安全问?
       b. 同步化所有访问重要数据的实例变量;
       c. 创徏讉Kcd量的讉KҎ?/p>

5.  SingleThreadModel接口
{:1) 如果希望止多线E访问,可以让Servlet使用SingleThreadModel接口:
       public class YourServlet extends HttpServlet implements SingleThreadModel{
       ...
       }
    2) 使用此接口,pȝ保证不会存在多个请求线E同时访问Servlet的单个实例。但是仍焉要同步对存储在Servlet外部的类变量或共享字D늚讉K?br />    3) 如Servlet频繁被访问,则Servlet讉K的同步将严重影响性能(延时)?/p>

6.  destroyҎ
{:1) 服务器决定删除已l加载的Servlet实例之前调用Servlet的destroyҎ;
    2) 该方法允许Servlet:
       a. 关闭数据库连?
       b. 中止后台U程;
       c. CookieE序清单或访问计数写到磁盘以及执行其他类似的收尾工作?/p>

7. 在Servletl止时处理ServiceU程
{:1) 在destroy()Ҏ中:如有服务(通过一个同步化的实例方法取得当前线E数大于0)Q则|关闭状态ؓtrue(通过一个同步化的实例方法实?。然后@环等待服务线E数?.
    2) 在Service()Ҏ? 如见关闭状态ؓtrueQ便不执行具体逻辑ҎQ直接退出?/p>

2004-9-21      星期二    ??/p>

资源讉K

1. 分布式JAVA技?br />{:1) JDBC;
       a. 实现了Data和Client的分开;
       b. 通过单的配置可以适用不同U类的数据库?br />    2) RMI(RMI使用的协议ؓInternet Inter ORB Protocol);
    3) CORBA(核心技术ؓORBQ相应的你的h转ؓ另一个物理地址另一个不同语a对象的请求。纯Java的情况下Ҏ不用CORBA);

2.  转发l果臛_视页?br />{:1) 用JavaBean(用来装蝲一l|遵从一定协议的class)装l果;
    2) 每个JVM中的每一个应用程序里都存在一个上下文;
    3) servletContext在servletConfig的对象中;
    4) ServletContext.getRequestDispatcher(String path)Q返回一个RequestDispatcher
    5) 通过RequestDispatcher的forward()或include()Ҏ传送请求?/p>

3. 转发hx的资?br />{:1) request dispatcher的二U传送请求方?br />       a. Forward: 请求从一个servlet传到服务器上的其他资?servlet、JSP、HTML);
       b. Include: 包括静态或动态内?
    2) 获得request dispatcher的二U方式:
       a. ServletRequest.getRequestDispatcher()       // 相对路径
       b. ServletContext.getRequestDispatcher()       // l对路径
    3) 四种资源范围
       a. javax.servlet.ServletContext: 整个应用E序范围?
       b. javax.servlet.http.HttpSession: 会话期间;
       c. javax.servlet.ServletRequest: 一个请求期?
       d. javax.servlet.jsp.PageContext: 一个JSP面;

2004-9-22      星期三    ??/p>

Servlets中的持久状?/p>

1. HTTP协议中无状态的优缺点:
{:优点Q可以服务很多客L;
    ~点Q不能在多个h之间׃n信息(通过Cookie和Session解决);

2. Cookies
{:1) Cookies是Web服务器发送到览器的短文本信息,以后在访问同一个Web站点或域时浏览器׃毫无更改地返回该文本信息?br />    2) 用户可以军_是否接受Cookie?br />    3) 一个Cookie׃下内容组成:
       a. 名称;
       b. 单个?
       c. 一些操作属性:路径或所在域、有效期以及版本受?br />    4) 每个站点Q浏览器通常只接?0条Cookie,d接受300条,以及每条Cookie限制?KB?/p>

3.  讄Cookie
{:1) 创徏Cookie:
       Cookie c = new Cookie("CookieName", "CookieValue");
    2) 讄有效期:
       c.setMaxAge(int lifetime); 黙认|只作用于当前会话Q不能存储在盘?如ؓ0DC删除CookieQ有效gؓUؓ单位?br />    3) 在响应头中放|Cookie:
       response.addCookie(c);
    4) 从客LdCookie:
       Cookie[] cookies = request.getCookies();
       Cookie cookie;
       for(int i=0; i<cookies.length; i++)
       {
          cookie = cookies[i];
          out.println("<tr><td>" + cookie.getName() + "</td><td>" + cookie.getValue());
       }

4. Sessions
{:1) 一个客L和一个服务器端一ơ连接信息的所有集合,通过brower发出Q由服务器端的servlet调用;
    2) 提供一U方式在多个面h间确认用h者储存关于用L信息;
    3) 实现会话跟踪的三U方式:a. cookie; b. URL重写; c. 隐藏的表单段

5. 讄Sessions
{:1) 创徏Sessions:
       HttpSession session = request.getSession(true);      // true表示如不存在则创Z个新的session
    2) 用指定名U将一个对象绑定到session:
       public void setAttribute(String name, Object value);
    3) 删除与指定名U相关的所有|
       public void removeAttribute(String name);
    4) q回会话中所有属性名
       public Enumeration getAttributeNames();
    5) q回指定名称对象
       public Object getAttribute(String name);

6. Cookies和Sessions的比?br />{:1) Cookies可由用户军_是否需? Sessions不能; 
    2) Cookies是一U装载sessionID的可?
    3) Cookies存储在客L, Sessions存储于服务器?
    4) Cookies可以构造,可以由Request取出Q由Responseq回

2004-9-23      星期四    ??/p>

qo?/p>

1.  什么是qo?
{:与Servlet怼Q过滤器是一些Web应用E序lgQ可以绑定到一个Web应用E序档案中。但是与其他Web应用E序lg不同的是Q过滤器是“链”在容器的处理过E中的。这意味着它们会在servlet处理器之前访问一个进入的hQƈ且在外发的响应信息返回到客户前访问这些响应信息。这U访问得过滤器可以查ƈ修改h和响应的内容?/p>

2.  qo器可以用于:
{:1) Z个Web应用E序的新功能建立原型(可被d到Web应用E序中或者从Web应用E序中删除而不需重写基层应用E序代码);
    2) 向过ȝ代码中添加新功能?/p>

3.  qo器放在容器结构什么位|?
{:qo器放在Web资源之前Q可以在h抵达它所应用的Web资源(可以是一个servlet、一个JSP面Q甚x一个HTML面q样的静态内?之前截获q入的请求,q且在它q回到客户之前截莯求?/p>

4.  qo器的存活周期
{:qo器有四个阶段(与servletcM)Q?br />    1) 实例?
    2) 初始?调用init()Ҏ);
    3) qo(调用doFilter()Ҏ);
    4) 销?调用destroy()Ҏ);

5. qo器类和接?br />{:所有的qo器都必须实现javax.servlet.Filter接口:
    1) 容器调用init()Ҏ初始化过滤器实例Q?br />       public void init(FilterConfig config) throws ServletException
    2) doFilter()Ҏ包含qo器逻辑Q?br />       public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException
    3) destroy()Ҏ由容器在销毁过滤器实例之前调用Q?br />       public void destroy();
    4) FilterChain的doFilter()Ҏ之后的代码构成了后期处理qo器调用?/p>

6.  配置qo?br />{:使用<filter>?lt;filter-mapping>元素来配|:
    <filter>
       <filter-name>XSLTFilter</filter-name>                   //qo器名
       <filter-class>filters.SmartXSLFilter</filter-class>     //具体qo器类
       <init-param>                                            //初始化参?br />          <param-name>xsltfile</param-name>
          <param-value>/xsl/stockquotes.xsl</param-value>
       </init-param>
    </filter>
    <filter-mapping>                        //过滤器应用于Web应用E序中的每个Web资源
       <filter-name>Logger</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>


2004-9-24      星期五    ??/p>

Web应用E序生命周期事g及监听器(Servlet V2.3版本以后新增功能)

1. 什么是事g监听?
{:1) 支持ServletContext、HttpSession(since v2.3)及ServletRequest(since v2.4)中状态改变的事g通知;
    2) 实现了一个或多个servlet事g监听器接口的cd;
    3) 控制ServletContext、HttpSession(since v2.3)及ServletRequest(since v2.4)中的生命周期;

2. Servlet Context事g监听?br />{:1) 对于应用E序而言在JVM层别理资源或保存状?br />    2) 有二U类型的事g监听器:
       a. ServletContextListener(以下是该监听器的Ҏ)
          contextDestroyed(ServletContextEvent sce)
          contextInitialized(ServletContextEvent sce)
       b. ServletContextAttributeListener(以下是该监听器的Ҏ)
          attributeAdded(ServletContextAttributeEvent scab)
          attributeRemoved(ServletContextAttributeEvent scab)
          attributeReplaced(ServletContextAttributeEvent scab)

3. HTTP Session事g监听?br />{:1) 理从同一个客L或用户向一个Web应用E序发出的一pdh相关的状态或资源;
    2) 有二U类型的事g监听?
       a. HttpSessionListener(以下是该监听器的Ҏ)
          sessionCreated(HttpSessionEvent se)
          sessionDestroyed(HttpSessionEvent se)
       b. HttpSessionAttributeListener(以下是该监听器的Ҏ)
          attributeAdded(HttpSessionBindingEvent se)
          attributeRemoved(HttpSessionBindingEvent se)
          attributeReplaced(HttpSessionBindingEvent se)

4. Servlet Requst事g监听?br />{:1) 理整个request生命周期的状?br />    2) 有二U类型的事g监听?br />       a. ServletRequestListener(以下是该监听器的Ҏ)
          requestDestroyed(ServletRequestEvent sre)
          requestInitialized(ServletRequestEvent sre)
       b. ServletRequestAttributeListener(以下是该监听器的Ҏ)
          attributeAdded(ServletRequestAttributeEvent srae)
          attributeRemoved(ServletRequestAttributeEvent srae)
          attributeReplaced(ServletRequestAttributeEvent srae)

5. 监听器类的规?br />{:1) 必须在部|描q符中配|实现类;

 



liulang 2006-09-25 23:09 发表评论
]]>
վ֩ģ壺 ˫| ʯ| ̨| | | | | | ̩| Ͻ| ˮ| ˮ| ױ| | ָ| ӱ| ƽ| Ͻ| | | ƽ| | ˫Ѽɽ| Ǩ| | | ˮ| ɾ| ɽ| ƽ| | | Ԫ| ̨| | | μԴ| | ¬| ԭ| |