A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 晴雨 中级黑马   /  2018-12-24 19:54  /  1425 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

会话跟踪
1) session
 当一个client请求多个servlets时,一个session可以被多个servlet共享。

 通常情况下,如果server detect到browser支持cookie,那么url就不会重写。

2) cookie
 在java servlet中,如果你光 cookie cookie = new cookie(name,value)
那么当用户退出browser时,cookie会被删除掉,而不会被存储在客户端的硬盘上。

如果要存储 cookie,需加一句 cookie.setmaxage(200)

 cookie是跟某一个server相关的,运行在同一个server上的servlet共享一个cookie.

3) url rewriting
在使用url rewriting来维护session id的时候,每一次http请求都需要encodeurl()
典型的用在两个地方
1) out.print(“form action=\” ”);
out.print(response.encodeurl(“sessionexample”));
out.print(“form action=\” ”);
out.print(“method = get>;”);
2) out.print(“<p>;<a href=\” ”);
out.print(response.encodeurl(“sessionexample?database=foo&datavalue=bar”));
out.println(“\” >;url encoded </a>;”);

3.singlethreadmodel
默认的,每一个servlet definition in a container只有一个servlet class的实例。
只有实现了singlethreadmodel,container才会让servlet有多个实例。

servlet specification上建议,不要使用synchronized,而使用singlethreadmodel。

singlethreadmodel(没有方法)
保证servlet在同一时刻只处理一个客户的请求。
singlethreadmodel是耗费资源的,特别是当有大量的请求发送给servlet时,singlethreadmodel的作用是使包容器以同步时钟的方式调用service方法。
这等同于在servlet的service()方法种使用synchronized.

single thread model一般使用在需要响应一个heavy request的时候,比如是一个需要和数据库打交道的连接。

2. 在重载servlet地init( )方法后,一定要记得调用super.init( );

3. the client通过发送一个blank line表示它已经结束request
而the server通过关闭the socket来表示response已结束了。

4. 一个http servlet可以送三种东西给client
1) a single status code
2) any number of http headers
3) a response body

5. servlet之间信息共享的一个最简单的方法就是
system.getproperties().put(“key”,”value”);

6. post和get
post:将form内各字段名称和内容放置在html header内传送给server
get: ?之后的查询字符串要使用urlencode,经过urlencode后,这个字符串不再带有空格,以后将在server上恢复所带有的空格。

get是web上最经常使用的一种请求方法,每个超链接都使用这种方法。

7. web.xml就是web applicatin 的deployment descriptor
作用有:组织各类元素
设置init param
设置安全性

8. request dispatcher用来把接收到的request forward processing到另一个servlet
要在一个response里包含另一个servlet的output时,也要用到request dispatcher.

9. servlet和jsp在同一个jvm中,可以通过serveltcontext的
setattribute( )
getattribute( )
removeattribute( )
来共享对象
10. 利用request.getparameter( )得到的string存在字符集问题。
可以用 strtitle = request.getparameter(“title”);
strtitle = new string(strtitle.getbytes(“8859-1”),”gb2312”);

如果你希望得到更大得兼容性
string encoding = response.getcharacterencoding();
//确定application server用什么编码来读取输入的。
strtitle = new string(strtitle.getbytes(encoding),”gb2312”);
xml
1.xml基础知识
1. 一个xml文档可以分成两个基本部分:
首部( header )
内容( content )

2. xml名字空间规范中指定:
xml文档中的每一个元素都处在一个名字空间中;如果没有指定的名字空间,缺省的名字空间就是和该元素相关联的名字空间。

3. a document that is well-formed obeys all of the rules of xml documents (nested tags, etc.)

" if a well-formed document uses a document type definition (more on these in a minute), and it follows all the rules of the dtd, then it is also a valid document

4. a tag is the text between the <angle brackets>;
" an element is the start tag, the end tag,and everything (including other elements) in between

5. 标签( tags ) 实际上包含了“元素”( elements ) 和 “属性”( attributes )两部分。
用元素( elements )来描述有规律的数据。
用属性( attributes ) 来描述系统数据。

如果你有一些数据要提供给某个应用程序,该数据就可能要用到一个元素。

如果该数据用于分类,或者用于告知应用程序如何处理某部分数据,或者该数据从来没有直接对客户程序公开,那么它就可能成为一种属性。

6. cdata (读作:c data ) c是character的缩写。

7.org.xml.sax.reader
/|\
org.xm.l.sax.xmlreader
/|\
org.apche.xerces.parsers.saxparser

4 个回复

倒序浏览
回复 使用道具 举报
大佬,真的是大佬呀
回复 使用道具 举报
谢谢分享,很喜欢
回复 使用道具 举报
你的前途不可限量呀
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马