📄 right10_2_1.htm
字号:
<html><head><title>JAVA编程语言</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><link rel="stylesheet" href="../../../css/text.css" type="text/css"></head><body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" ><table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td valign="top"> <table width="90%" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#FFFFFF"> <tr> <td valign="top"> <p class="pt9-black"> 表单是HTML中使用最广泛的传递信息的手段。搞清楚Servlet与表单的交互,就在客户端与服务器之间架起了一座桥梁。Servlet使用HttpServlet类中的方法与表单进行交互。在HttpServlet类中有几个未完全实现的方法,你可以自己定义方法的内容,但是必须正确使用方法名称以使HTTP Server把客户请求正确的映射到相应的函数上。<br> <br> doHeader 用于处理HEADER请求<br> doGet 用于处理GET请求,也可以自动的支持HEADER请求<br> doPost 用于处理POST请求<br> doPut 用于处理PUT请求<br> doDelete 用于处理DELETE请求<br> HttpServlet的Service方法,当它接收到一个OPTIONS请求时,它会自动调用doOptions方法,当接收到一个TRACE请求时调用doTrace。DoOptions默认执行方式是自动决定什么样的HTTP被选择并返回哪个信息。<br> <br> 在使用这些方法时必须带两个参数。第一个包含来自客户端的数据HttpServletRequest。第二个参数包含客户端的相应HttpServletResponse。在我们的第一个例子中使用的是doGet方法,因为通过地址访问的话,对应的方式是GET。<br> <br> 一个HttpServletRequest对象提供请求HTTP头部数据,也允许获取客户端的数据。怎样获取这些数据取决于HTTP请求方法。<br> <br> 不管何种HTTP方式,都可以用getParameterValues方法返回特定名称的参数值。 <br> <br> 对于HTTP GET请求的方式,getQueryString方法将会返回一个可以用来解剖分析的参数值。<br> <br> 对于用HTTP POST,PUT和DELETE请求的方式,HttpServletRequest有两种方法可以选择:如果是文本数据,你能通过getReader的方法得到BufferedReader获取数据;如果是二进制数据,可以通过getInputStream方法得到ServletInputStream获取数据。<br> <br> 为了相应客户端,一个HttpServletResponse对象提供返回数据给用户的两个方法:一种是用getWriter方法得到一个PrintWriter,用于返回文本数据;另一种方法是用getOutputStream方法得到ServletOutputStream,用于返回二进制数据。在使用Writer或OutputStream之前应先设置头部(HttpServletResponse中有相应的方法),然后用Writer或OutputStream将相应的主体部分发给用户。完成后要关闭Writer或OutputStream以便让服务器知道相应已经结束。<br> <br> 下面我们举一个使用HttpServletRequest和HttpServletResponse得到并打印客户端信息的例子:<br> <br> <font color="339900">//RequestInfo.java</font><br> import java.io.*;<br> import javax.servlet.*;<br> import javax.servlet.http.*;</p> <p class="pt9-black"> public class RequestInfo extends HttpServlet {<br> public void doGet(HttpServletRequest request, HttpServletResponse response)<br> throws IOException, ServletException <br> <font color="339900">//处理GET请求的方法</font><br> { <br> response.setContentType("text/html"); <br> <font color="339900">//先设置Header,在这里只设置ContentType一项</font><br> PrintWriter out = response.getWriter(); <br> <font color="339900">//得到文本输出Writer</font><br> <br> <font color="339900">//下面打印相关的HTML</font><br> out.println("<html>");<br> out.println("<head>");<br> out.println("<title>Request Information Example</title>");<br> out.println("</head>");<br> out.println("<body>");<br> out.println("<h3>Request Information Example</h3>");<br> </p> <span class="pt9-black"> out.println("Request URI: " + request.getRequestURI()+"<br>"); <br> <font color="339900">//打印请求的路径</font><br> out.println("Protocol: " + request.getProtocol()+"<br>"); <br> <font color="339900">//打印协议名称</font><br> out.println("PathInfo: " + request.getPathInfo()+"<br>"); <br> <font color="339900">//打印额外的路径信息</font><br> out.println("Remote Address: " + request.getRemoteAddr()); <br> <font color="339900">//打印客户机的地址,如果没有打印IP地址</font><br> out.println("</body>");<br> out.println("</html>");<br> out.close(); <font color="339900">//关闭Writer</font><br> } </span> <p class="pt9-black"> public void doPost(HttpServletRequest request, HttpServletResponse response)<br> throws IOException, ServletException<br> {<br> <font color="339900">//如果是POST请求类型,同样调用GET类型的响应函数</font><br> doGet(request, response);<br> <span class="pt9-black"> }<br> }<br> <br> 用我们在前面介绍的方法在Resin中配置使其运行,我们得到的结果如下:<br> <img src="../../../images/tu/ch10/10_2_1.gif" width="440" height="315"><br> <br> <br> <font color="000099">这样的一个例子很好的说明了所谓的动态网页和静态网页的区别,就上面这个例子而言,每个客户看到的内容是不一样的,而静态网页则对每一个客户而言都是一成不变的。</font></span> <br> </p> </td> </tr> </table> </td> </tr></table></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -