总结response/request/DoGet/DoPost

  • Post author:
  • Post category:其他


[quote][size=medium]1.Response

[JSP] [color=red]JSP中的隐藏对象 — response- -[/color]

JSP的response隐藏对象在转换为Servlet之后,对应于HttpServletResponse型态对象,HttpServletResponse对象是有关于对客户端请求之响应,您可以利用它来设定一些要响应的讯息,例如标题信息、响应状态码等.

response的常用方法:

setHeader():是一个通用的标头设定方法,您可以用它来设定任何「名称/值」的标头.

setIntHeader():是专门用来设定整数值标头的版本.

setDateHeader():是setHeader()的Date设定版本,第二个参数是设定Date的Long数值,0表示GMT 1970/1/1 00:00。

(Note:以上3个函数用来设置HTTP协议的表头,必须对HTTP协议有些了解才能正确使用,我现在也不清楚).

setStatus():是用来设定回应的状态码,例如404 Not Found,HttpServletResponse类中提供了一些助忆常数设定,例如SC_NOT_FOUND就是表示404状态码(可以在Servlet API文件中查询相关的助忆常数).

sendError():会根据服务器的预设错误网页回报方式显示错误讯息.

sendRedirect():设置重定向页面.

getWriter():取得PrintWriter对象,由它来写出响应至服务器的本体信息.

2.Request

[JSP] JSP中的隐藏对象 — request- –

request这个对象不用事先宣告,就可以在JSP网页中使用,在转译为Servlet之后,它会转换为javax.servlet.http.HttpServletRequest型态的对象,HttpServletRequest对象是有关于客户端所发出的请求之对象,只要是有关于客户端请求的信息,都可以藉由它来取得,例如请求标头、请求方法、请求参数、使用者IP等等信息。

request的主要方法:

getParameterNames():取得客户端所发出的请求参数名称.

getParameter():可以让您指定请求参数名称,以取得对应的设定值.

getServerName():请求的服务器.

getProtocol():使用协议.

getMethod():请求方法.

getServerPort():请求端口号.

getContextPath():Context路径.

getServletPath(): Servlet路径.

getRequestURI():URI路径.

getQueryString():查询字符串.

getRemoteAddr():使用者主机IP.

getRemotePort():使用者使用端口号.

例子:

http://localhost:8080/myjsp/requestdemo.jsp?name=john&nick=johncn

对应的信息为:

请求的服务器: localhost

使用协议: HTTP/1.1

请求方法: GET

请求的端口号: 8080

Context路径: /myjsp

Servlet路径: /requestdemo.jsp

URI路径: /myjsp/requestdemo.jsp

查询字符串: name=john&nick=johncn

使用者主机IP: 127.0.0.1

使用者使用端口号: 1060

[color=darkred]3. DoGet与DoPost[/color]

[u] 第一:你的servlet如果是继承自HttpServlet,就必须重写它里面的两 个虚方法doGet和doPost,也就是说,先不管别的servlet或jsp会去调用哪个方法,这两个方法都应该有。[/u]

[u]第二:至于它调用哪个方法,就看提交方式

<form action=”myServlet” method=”get” >

method属性的值是get,它就去调用对应servlet的doGet方法。

同理,method属性的值是get,它就去调用对应servlet的doPost方法。[/u]

一般来说,不管采用那种提交方式,在servlet里要做的事情是一样的。所以,我们很多情况下,在一个方法里面调用另一个方法,这样随你那种方式提交的,都可以转去做一种处理。

eg:

public void doPost(HttpRequest request,HttpResponse response)throw ServletException,IOException {

doGet(request,response);

……

}

[color=indigo]•如果请求是幂等的就可以使用GET

•所谓幂等是指多个请求返回相同的结果

•当改变服务器状态时应当使用POST方法

•GET请求的例子:

http://localhost/yourApp?firstName=Adam&middleName=Christopher

•采用POST方法向服务器发送命名参数时,与采用GET方法几乎一样的。

•区别:POST方法将参数串放在请求体中发送,而GET方法是将参数追加到URL中发送。

•如果数据处理不改变数据模型的状态,HTML使用规约理论上推荐采用GET方法,从这

可以看出,获取数据时应当使用GET方法。

•如果因为存储、更新数据,或者发送电子邮件,操作改变了数据模型的状态,这时建议使 用POST方法。[/color][/size][/quote]



版权声明:本文为laz383310051原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。