我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: [ 独飞の孤心 ]JAVA EE学习之路 (一)--SERVLET 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

独飞の孤心



性别: 帅哥 状态: 该用户目前不在线
头衔: 孽缘!
等级: 荣誉会员
家族: 单身贵族
发贴: 4484
威望: 3
浮云: 496
在线等级:
注册时间: 2005-10-12
最后登陆: 2011-09-23

5come5帮你背单词 [ bakery /'beikəri/ n. 面包店,面包烘房 ]


[ 独飞の孤心 ]JAVA EE学习之路 (一)--SERVLET

由于大四的蝈蝈都忙着找工作,大三的又忙于学习,大二的对技术还是不是很了解,所以程序区一直不是很“热火”。所以,我把自己的一些java ee的学习笔记拿出来供大家参考,希望对大家有所帮助,由于只是自己的学习笔记,写的不是很容易理解,旨在给大二的学弟一点学习的途径:

先介绍一下java ee的学习之路吧:
jsp,servlet ->JDBC->ajax->javabean->javamail->JNDI等->MVC->一些框架

第一章:

一。客户请求的处理:http请求报头

(1)方法汇总

1.getCookies() 返回cookie报头的内容,内容放在由cookie对象构成的数组中
2.getAuthType()或getRemoteUser   返回Authorization报头的各个构成部分
3.getContentLength() 返回Content-Length报头的一个值
4.getContentType() 返回Content-Type报头的一个值
5.getDateHeader()和getIntHeader() 读取指定报头,并对其进行分解转换成Date和int值
6.getHeaderNames() 返回一个enumeration 枚举当前请求中所有的报头名称
7.getHeaders()   列举一个报头的多个值,返回一个Enumeration
8.getMethod()   返回请求的方法
9.getRequestURL()   返回Url中主机和端口只后,表单数据之前的部分,如:http://random.com/servlet/serach.BookSerach?subject=jsp返回/servlet/serach.BookSerach
10.getQueryString() 返回表单数据,如上返回:subject=jsp
11.getProtocol() 一般为http/1.0或http/1.1

(2)一些请求报头(用request.getHeader("报头名")返回)

1.Accept 浏览器能够处理的mime类型
2.Accept-Charset 可以使用的字符集
3.Accept-Encoding 可以接受的编码方式(如:gzip,compress)
4.Accept-Language   语言:en,en-us等
5.Authorization   在访问密码保护的页面时用来标识拥护的身份
6.Connection   是否能处理持续性http连接
7.Content-Length 只适合于post请求,用来给定数据大小(以字节为单位)
8.Cookie   返回cookie
9.Host   主机名和端口号
10.IF-Modified-Since   它表明:当页面在指定的日期之后发生更改的情况下,客户程序才希望获取该页面
11.IF-UNModified-Since
12.Referer   跟踪请求的来源
13.User-Agent 表识请求的浏览器 (request.getHeader("User-Agent")).indexOf("MIIE")判断是不是ms的ie,其他的一般是mozilla

(3)发送压缩网页
String encoding=request.getHeader("Accept-Encoding");
String flag=request.getParamerter("disableGzip");
if((encoding!=null)&&(encoding.indexOf("gzip")!=-1)&&(flag!=null)&&(!flag.equalsIgnoreCase("false")))
{
  PrintWriter out=new PrintWriter(new GZIPOutputStream(response.getOutputStream()));
}

out.close();


(4)生成图片

1.创建一个bufferedimage
int width=..;
int length=..;
BufferedImage image=new BufferedImage(width,heigth,BufferedImage.TYPE_INT_RGB);
2.在bufferedimage上绘制内容
Graphics2D g2d=(Graphics2D)image.getGrapics();
g2d.setXxx(...);
g2d.fill(someShape);
g2d.draw(someShape);
3.设置Content-Type响应报头
response.setContentType(image/jpeg);
4.获取输出流
OutoutStream out=response.getOutoutStream();
5.以一种图片格式用BufferedImage发送到输出流
try{
  ImageIO.writer(image,"jpg",out);
}catch(IOEception e){
      ...
}



二。服务器响应的生成(一个状态行,一些响应报头,一个空行,和响应的文档)

如:http/1.0 200 ok
  Content-Type:text/html
  Header1:...
  HeaderN:...
  (空行)
  <!DOCTYPE...>
  <html>
  (文档)
  </html>


(1)状态代码(response.setStatus(),response.setRedirect(url) thorws IOException,reponse.setError() thorws IOException)

1.302代码命令浏览器连接到新的位置。setRedirect方法生成302状态代码以及location报头,给出新的文档url
2.404,sendError(int code,String msg)
3.
100-199 信息型的,表示客户应采取的行动
200-299 请求成功
300-399 用于那些已经移动的文件,常常包括Lacation报头,指出新的地址
400-499 由客户引发的错误
500-599 由服务器引发的错误
4.301(SC_MOVED_PERMANENTLY):请求的文件被移走,新的url在Location报头中给出,浏览器根据这个url转到新的url
5.302(SC_MOVED_TEMPORARILY)

(2)响应报头(response.setHeader("name","value"))


三。会话跟踪基础

基本步骤:
1.访问与当前请求相关连的会话对象 request.getSession()获取HttpSession对象,它是一个简单的hashtable,用来储存用户信息
如果输入的cookie和附加url信息中找不到会话id,系统就创建一个空的会话;如果使用cookie,系统还会创建一个名为JESSIONID的输出cookie,在其中存入唯一值表示会话id。如果调用 request.getSession(false),当找不到会话时就不创建新的会话
2.查找与会话相关的信息 用httpSession的getAttribute,将返回值转化成恰当的值,并检查是否为null
SomeClass value=(SomeClass)session.getAttribute("someIdentifier");
if(value==null){
    value=new SomeClass();
    session.setAttribute("someIdentifier",value);  
   
}

3.存储会话中的信息 用setAttribute设置需要存储的值以及相应的键
4.废弃会话数据 调用removeAttribute(废弃指定的值),invalidate(废弃整个会话),logout(使客户退出web服务器,并作废所有与该用户相关的会话)
5.一些API

public Enumeration getAttributeNames()
public String getId() 返回每个标志会话的id
public boolean isNew()
public long getCretionTime() 首次构建会话的时间
public long getLastAccessedTime() 格式为从1970年1月1日以来的毫秒数
public int getMaxInactiveIterval()
public int setMaxInactiveIterval()读取或设置在没有访问的情况下,会话在被自动废弃之前应该保持多少时间,以秒为单位。超时由服务器来维护,它不同于cookie的失效期。首先会话一般基于驻留内存的cookie,不是持续性的cookie,因此没的截止期,即使截取到JSEESIONID cookie,并为它设置一个失效的日期发送出去,浏览器会话和服务器会话也会不同。
6.integer是一种(immutable)不可变数据结构,而数组,list,map或含有可写字段的应用程序的数据结构是可变的。


[ 此贴被独飞の孤心在2006-11-13 14:30重新编辑 ]
本帖最近评分记录:
  • 浮云:20 (by zc1984) | 理由: 原创内容
  • 顶端 Posted: 2006-11-12 15:14 | [楼 主]
    ipod



    性别: 帅哥 状态: 该用户目前不在线
    等级: 栋梁之材
    发贴: 992
    威望: 0
    浮云: 1452
    在线等级:
    注册时间: 2006-04-24
    最后登陆: 2010-07-07

    5come5帮你背单词 [ insufficient /insə'fiənt/ n. 不充分的,不足的 ]


    我大哥snpt早和我说过了,呵呵
    纠正一下你的错误:
    ->jsp,servlet ->ajax->javabean->->javamail->JNDI等->EJB
    先学的是:html+js+j2se,中间再把JDBC加上吧,把哄人的Ajax去掉吧,然后把EJB去掉吧,再把Struts加上吧,有时间的话再把hibernate加上吧,如果再有时间就把CORBA,AspectJ,JDO加上吧.

    下面的基本上都是书上的了,我改不了~
    顶端 Posted: 2006-11-12 18:05 | [1 楼]
    datuz



    性别: 帅哥 状态: 该用户目前不在线
    等级: 荣誉会员
    发贴: 1425
    威望: 3
    浮云: 399
    在线等级:
    注册时间: 2006-09-15
    最后登陆: 2009-10-03

    5come5帮你背单词 [ off /o:f/ ad. & a. 脱离(的),离去,(断)掉(的),停止(的),关着(的);prep. 从…离开 ]


    问一下楼上的hibenate,corba,aspectj,jdo是什么,能不能给介绍一下
    顶端 Posted: 2006-11-12 18:09 | [2 楼]
    ipod



    性别: 帅哥 状态: 该用户目前不在线
    等级: 栋梁之材
    发贴: 992
    威望: 0
    浮云: 1452
    在线等级:
    注册时间: 2006-04-24
    最后登陆: 2010-07-07

    5come5帮你背单词 [ count /kaunt/ vt. 数,计数,认为;vi. 计数,指望;n. 计数,总数 ]


    oh! it's really really funny!
    你不会上网查啊~
    顶端 Posted: 2006-11-12 18:19 | [3 楼]
    ipod



    性别: 帅哥 状态: 该用户目前不在线
    等级: 栋梁之材
    发贴: 992
    威望: 0
    浮云: 1452
    在线等级:
    注册时间: 2006-04-24
    最后登陆: 2010-07-07

    5come5帮你背单词 [ torrent /'torənt/ n. 急流,迸发 ]


    1.就是一款好玩的ORM软件(ORM是啥,就是Object-Relation Model)
    2.就是一段句子的缩写:Common Object Request Broker Access
    3.就是面向方向编程AOP的J版
    4.就是Java Data Object


    这东西你现在还搞不懂~ 强烈建议学.net吧
    顶端 Posted: 2006-11-12 18:25 | [4 楼]
    独飞の孤心



    性别: 帅哥 状态: 该用户目前不在线
    头衔: 孽缘!
    等级: 荣誉会员
    家族: 单身贵族
    发贴: 4484
    威望: 3
    浮云: 496
    在线等级:
    注册时间: 2005-10-12
    最后登陆: 2011-09-23

    5come5帮你背单词 [ succeed /sək'si:d/ vi. 成功,继承,接着发生;vt. 接替,接…之后 ]


    Quote:
    引用第1楼ipod于2006-11-12 18:05发表的:
    我大哥snpt早和我说过了,呵呵
    纠正一下你的错误:
    ->jsp,servlet ->ajax->javabean->->javamail->JNDI等->EJB
    先学的是:html+js+j2se,中间再把JDBC加上吧,把哄人的Ajax去掉吧,然后把EJB去掉吧,再把Struts加上吧,有时间的话再把hibernate加上吧,如果再有时间就把CORBA,AspectJ,JDO加上吧.

    .......


    html+javascript+java se应该不用说都会去学的,我说的是java ee。jdbc确实弄掉了,不好意思。。。ajax怎么能说是弄人呢?解释下呢?struts,hibernate等框架还是等把这些基础打好了再说吧。。。毕竟框架每年一换,就比如现在有出来的wicket。至于EJB确实有争议。
    顶端 Posted: 2006-11-12 18:38 | [5 楼]
    独飞の孤心



    性别: 帅哥 状态: 该用户目前不在线
    头衔: 孽缘!
    等级: 荣誉会员
    家族: 单身贵族
    发贴: 4484
    威望: 3
    浮云: 496
    在线等级:
    注册时间: 2005-10-12
    最后登陆: 2011-09-23

    5come5帮你背单词 [ heavy /'hevi/ a. 重的,沉重的,大量的,猛烈的 ]


    Quote:
    引用第4楼ipod于2006-11-12 18:25发表的:
    1.就是一款好玩的ORM软件(ORM是啥,就是Object-Relation Model)
    2.就是一段句子的缩写:Common Object Request Broker Access
    3.就是面向方向编程AOP的J版
    4.就是Java Data Object

    .......


    就希望有蝈蝈这样的人经常来程序区交流哈,呵呵。。。
    顶端 Posted: 2006-11-12 18:54 | [6 楼]
    我来我网·5come5 Forum » 程序员之家

    Total 0.011339(s) query 5, Time now is:11-23 21:53, Gzip enabled
    Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号