首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

HTTP请求和响应处置

2012-09-04 
HTTP请求和响应处理1.信息的处理(一切都是数据的处理和描述)HttpServletRequest是对HTTP请求的描述(这里是

HTTP请求和响应处理

1.信息的处理(一切都是数据的处理和描述)

HttpServletRequest是对HTTP请求的描述(这里是封装或抽象)

?

HttpServletRequest&HttpServletResponse分别对请求和响应的处理,它们处理过程都分为2种: 1)设置型 2)数据处理型 。往往设置型的方法需要先调用,因为---这是常识....

?

2.Http是请求和响应的方式,一次请求和响应就是一个生命周期,所以有数据返回到浏览器端就代表生命周期开始结束,此时再进行响应方面的其它操作会出错(请求转发)或无效...........

?

3. / 与没有/

<servlet-mapping>
??? <servlet-name>HeaderDemo</servlet-name>
??? <url-pattern>/header.do</url-pattern>
? </servlet-mapping>

<url-pattern>需要使用/,不然会报错

这里/header.do代表了http://www.localhost:8080/webapps/header.do的请求

/代表了相对与web应用程序的根目录

及:url-pattern是根据url来匹配的而不是根据jsp中action的值

?

?

<form action="/header.do" method="post">

?<input type="submit" value="submit" /><br>
</form>

action="/header.do"

?

开始在此页面下显示jsp

http://localhost:8080/LGG_LXL_Book_ServletJsp/jsp/header.jsp

点击后为

http://localhost:8080/header.do

?

所以action="/header.do"的/代表了相对服务器的根目录

?

4.HttpServlet部分源代码

例如:注意粗体部分?

?protected void doPut(HttpServletRequest req, HttpServletResponse resp)
??????? throws ServletException, IOException {

??????? String protocol = req.getProtocol();
??????? String msg = lStrings.getString("http.method_put_not_supported");
??????? if (protocol.endsWith("1.1")) {
??????????? resp.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, msg);
??????? } else {
??????????? resp.sendError(HttpServletResponse.SC_BAD_REQUEST, msg);
??????? }
??? }

?

?

5.中文处理问题

response.setContentType("text/html;charset=utf-8");

?

request.setCharacterEncoding("utf-8");//指定浏览器数据的文字编码,默认按照ISO-8859-1处理字符串

?

String name = new String("abcde...".getBytes("ISO-8859-1"),"UTF-8") ;

"abcde..."是按照ISO-8859-1解码

name编码是utf-8

?

?

?6.请求转发是request发出的,在容器内进行,不涉及浏览器端,所以浏览器地址栏不进行变化

?

?

7.HttpServeltResponse --- setContentType

?

response.setContentType("text/html;charset=utf-8");

==

response.setHeader("content-type","text/html;charset=utf-8");

response.setCharacterEncoding("utf-8");

setHeader()可直接设置某个标头名称的值,重复此方法后面的会覆盖前面的值

addHeader()在同一标头下,附加其它的值

?

8.HttpServletResponse --- sendRedirect与sendError

response.sendRedirect("....");

?这个方法会在响应中设置HTTP状态码301以及Location标头,Location标头要求浏览器重定向到此处,所以浏览器地址栏会改变

Ps:

要求这个方法在执行时,没有开始响应(即没有数据放回到浏览器中)

?

处理请求的过程中发现一些错误时:

response.sendError(HttpServletResponse.SC_NOT_FOUND);//发送默认的错误信息

response.sendError(HttpServletResponse.SC_NOT_FOUND,msg);//发送msg

Ps:

同样sendError()必须在响应没有输出前执行

?

?

9.ServeltOutputStream的使用

?

对浏览器进行字节的输出

?

Ps:

同一个请求周期中,进行字节输出时,不能再进行字符的输出

即: HttpServletResponse的getWriter()与getOutputStream()只能使用一个

?

?

?

热点排行