使用servlet处理HTTP请求

来源:互联网 发布:点对点软件 编辑:程序博客网 时间:2024/05/21 07:46

1 HttpServletReques是ServletRequest的子接口。是专门针对http协议书写的接口,由容器实现,由用户调用。用户根据接口调用方法,可以屏蔽容器的差异。

2getpost区别:

提交数据类型: 文本       文本、二进制文本

提交数据长度: 255字符        无限制

提交数据可见性:作为URL地址的一部分显示在浏览器地址栏    作为请求的消息体,不可见

提交数据缓存   缓存在浏览器url历史状态中       不会被浏览器缓存

总结:

Get方式主要作用时资源的查找。

Post方式主要作用时数据的传输

3 url/uri区别

url:包含请求地址

uri:不包含

4:请求头

HttpServletReques利用getHeader()getHeader()得到请求头,同样只对http协议有效。

5:上传图片:

1post提交

2enctype=multipart/form-data;

在Form元素的语法中,EncType表明提交数据的格式,用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型表单中 enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x- www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据。

6:请求转发

//得到请求转发对象

RequestDispatcher d=request.getRequestDispatcher("two");【要转发的servlet路径】

//内部转发指定的页面或servlet,客户端只发出一次请求。资源在服务器内部调用

d.forward(request, response);

//b包含另一个servlet输出的结果

d.include(request, response);

两种方法来包含不同的资源,以及将请求转发到不同资源:

forward()把请求和响应派发给别的资源后,就不会再去做任何处理了。

include()把请求发送给另一个服务器资源(通常是另一servlet)来完成工作,然后再返回给发送者。

//封装数据到request,只在一次请求范围内有效

request.setAttribute("ff""11");

重定向和内部转发的区别

 1:重定向由response发出,内部转发由requestDispatcher发出。

2:重定向发出二次请求,内部转发发出一次请求。内部转发可以取出request中封转的数据。而重定向不行。(每次请求会产生新的request对象)。

3:内部转发只能在一台服务器中作资源调用。重定向可以在第二次请求时请求另外的服务器。

Myeclipse开发时,部署名和工程名默认一致。但也可以不一致。

9改变部署名:

右键单击工程---properties---myeclipse---web---web context-root

10 form表单的action中如果直接写路径,表示在当前目录下查找。

如果在action中先书写/。表示回到webapps根目录。这时必须在/后加上部署名。