现在的位置: 首页 > 综合 > 正文

JavaWeb 处理http请求

2018年09月16日 ⁄ 综合 ⁄ 共 1404字 ⁄ 字号 评论关闭

GET/POST提交方式

Request的提交方式有好几种呢,最普遍的是get和post,对于post方法,是将参数隐藏,其实也不算安全的提交方式,两者的区别在教材P60上面的一张表上,值得关注的是get的数据长度不能超过255个字符,这是一个限制,而post没有限制,然后get只用来提交文本,而post用来提交文本+二进制文本;

获取请求的XX

一个request分为请求行,请求头,消息体,三个大块。三者也分别对应着获取的一些getXxx方法。详情见教材JavaWeb第四章;

Forward 、include 、redirect

forward,include,redirect是jsp中web页面(jsp或servelt)的三种不同的路由关系,三个貌似相同,其实是有许多差别的,而了解这些细微的差别,在web开发中是很重要的。

说明:

一、forward、include由javax.servlet.RequestDispatcher来封装,由包容器container提供RequestDispatcher接口的实现,其中声明如下:

void forward(ServletRequest
req,ServletResponse res)

void include(ServeltRequest
req,ServletResponse res)

可以通过两种方式得到RequestDispatcher:

1、ServletContext.getRequestDispatcher(String
path);

其中这里的path必须开始为"/",即这里的path必须相对于context的root.

2、ServeltRequest.getRequestDispatcher(String
path)

这里的path可以为相对路径,如果path开始为"/",则也认为是从context的root开始的。

二、Redirect由HttpServletResponse.sendRedirect(String
location)来支持

差别:

三个都可以对用户的request进行转发,但是还是有许多的不同,差别最主要集中在如下几个方面:

1、forward与include共亨Request范围内的对象,而redirect则不行,即:如果一个javabean被声明为request范围的话,则被forward到的资源也可以访问这个javabean,而redriect则不行。

2、forward与include基本上都是转发到context内部的资源,而redirect可以重定向到外部的资源,如:
req.sendRedriect("http://www.mocuai.com");

Forward功能的实现,这样

private void setForward(String
url,ServletRequest request, ServletResponse response)throws
Exception {

HttpServletRequest
hreq = (HttpServletRequest) request;

RequestDispatcher
dispatcher = hreq.getSession().getServletContext().getRequestDispatcher(url);

dispatcher.forward(request,response);

}

抱歉!评论已关闭.