由于大四的蝈蝈都忙着找工作,大三的又忙于学习,大二的对技术还是不是很了解,所以程序区一直不是很“热火”。所以,我把自己的一些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重新编辑 ]