Servlet被设计成请求驱动的。Servlet的请求可能包含多个数据项。当Web容器接收到某个对Servlet的请求时,它把它封装成一个HttpServletRequest对象,然后把此对象传给Servlet的对应的服务方法。服务方法通常是doGet()和doPost()方法。另外HttpServlet也提供了一些高级的处理方法,它们有doPut、doTrace和doDelete。
1.doGet
Get调用用于获取服务器信息,并将其作为响应返回给客户端。当经由Web浏览器,或者通过HTML、JSP直接访问Servlet的URL时,一般使用Get调用。Get调用在URL里显示正传送给Servlet的数据,这在系统的安全方面可能带来一些问题。比如说用户登录时,表单里的用户名和密码需要发送到服务器端,如果使用Get调用,就会在浏览器的URL里显示用户名和密码。
下面给出一个例子。使用doGet调用,那么在客户端的Form中必须指定调用的类型为get
引用
<form action="/test/doget_servlet" method="get">
........
<input type="type" name="name">
..........
</form>
那么Servlet代码如下
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class DoGetTestServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
request.setCharacterEncoding("gb2312");
response.setContentType("text/html;charset=gb2312");
PrintWtriter out=response.getWriter();
out.println("获得了以下的参数值:name=<br>"+request.getParameter("name"));
out.flush();
}
}
在doGetTestServlet中,通过request.getParameter()方法获得请求中的参数。部署时候,主要在web.xml中正确描述这个Servlet,并且知道URI映射为/doget_servlet,
即:
引用
<servlet>
<servlet-name>DoGetTestServlet</servlet-name>
<servlet-class>com.test.DoGetTestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DoGetTestServlet</servlet-name>
<url-pattern>/doget_servlet<url-pattern>
</servlet-mapping>
2.doPost
doPost用于客户端把数据传送到服务器端,它会有副作用。但是使用它的好处是可以隐藏发送给服务器端的任何数据。Post适合于发送大量的数据。
例如:
引用
<form action="/test/dopost_servlet" method="post">
......
<textarea name="des" cols="50" rows="10"></textarea>
....
</form>
上例使用了textarea控件,客户端可以发送大量的数据
下面看看Servlet代码
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class DoPostTestServlet extends HttpServlet{
public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
request.setCharacterEncoding("gb2312");
response.setContentType("text/html;chatset=gb2312");
PrintWiter out=response.getWriter();
out.println("获得以下的参数值:des=<br>"+request.getParameter("des"));
out.flush();
}
}
在处理Post请求的Servlet服务器时,它需要覆盖HttpServlet的doPost方法,doPost方法中的代码几乎和DoGetTestServlet中的doGet代码一样。
3.doPut
Put的调用和Post相似,它允许客户端把真正的文件存放在服务器上,而不仅仅是传送数据
4.doDelete
它与Put调用相似,它允许客户端删除服务器端的文件或者Web页面。它的使用也非常少。
5.doTrace
由容器调用以使此Servlet能够处理Trace请求。这个方法主要用于调试,它是不可以覆盖的方法
6.doHead
它用于处理客户端的Head调用,并且返回一个Response。当客户端只需要知道响应的Header时,它就发出一个Header请求。在这种请求下客户端往往关心响应的长度和响应的MIME类型
7.doOptions
它用于处理客户端的Options调用。通过这个调用,客户端可以获得此Servlet支持的方法,如某个Servlet覆盖了doPost方法,那么将返回:
Allow:POST,TRACE,OPTIONS,HEAD
在一般情况下不需要覆盖这个方法。
分享到:
相关推荐
- 当客户端请求Servlet时,服务器会创建一个线程来处理请求。Servlet的生命周期包含初始化、服务和销毁三个阶段。 - **初始化阶段**:Servlet首次被请求时,服务器调用`init()`方法进行初始化。开发者可以在这个...
- **性能提升**:相比于传统的CGI脚本,Servlet采用了不同的进程处理模型,因此能够更快速地响应客户端请求。 - **标准API支持**:Servlet使用了广泛支持的标准API,确保了其在各种Web服务器上的兼容性。 - **平台...
Servlet是Java Web应用的核心,用于处理客户端请求并返回响应。JSP则允许开发者使用HTML语法来嵌入Java代码,简化视图层的开发。Filter和Listener则用于增强应用的功能,如过滤请求、监听事件。 二、HttpServlet...
Servlet容器(如Tomcat、Jetty等)负责加载和管理Servlet实例,处理来自客户端的请求,并将结果返回给客户端。`javax.servlet.http.HttpServlet`是专为HTTP协议设计的Servlet,包含了处理GET、POST等HTTP方法的方法...
5. **HttpServletRequest和HttpServletResponse接口**:这些是HttpServlet处理HTTP请求时使用的对象,包含了HTTP请求头、参数、会话等信息,以及用于构建响应的方法。 通过源码分析,你可以了解Servlet如何通过Web...
3. 异步处理:Android客户端应使用异步方式发送请求,避免阻塞UI线程。 4. 错误处理:客户端需要处理网络错误、服务器错误等各种异常情况。 5. 安全性:考虑使用HTTPS进行加密通信,防止数据被窃取。 6. 应用权限:...
2. **服务器**:服务器是响应客户端请求并提供服务的计算机程序。在本例中,服务器可能由Java Servlet技术实现。Java Servlet是一个Java API,用于扩展服务器的功能,处理HTTP请求,并返回HTTP响应。Servlet容器(如...
总的来说,`HttpServlet`和`HttpServletRequest`是构建动态Java Web应用程序的核心工具,掌握了这两个类的使用,就能有效地处理HTTP请求,实现与客户端的交互。通过不断实践和学习,你将在Java Web开发领域变得更加...
这样,即使一个线程正在处理特定的客户端请求,其他线程也可以同时服务于其他客户端,提高系统效率。 6. **局域网通信**:由于聊天程序设计为在局域网内部使用,所以它依赖于TCP/IP协议栈在本地网络中的工作。这...
服务器端可以使用Http的Post方法接收数据,并使用Servlet子类HttpServlet对象来处理客户端的数据。服务器端可以使用Java数据流和过滤流的方法来处理客户端的数据,并将运算结果响应给手机客户端。 Android手机...
1. **Servlet定义**:`JSONServlet`类继承自`HttpServlet`,这意味着它能处理HTTP请求和响应。`doGet()`和`doPost()`方法分别用于处理GET和POST类型的HTTP请求。 2. **JSON数据构建**:通过`JSONArray`和`...
在Android客户端,我们可以使用`AsyncTask`或者Retrofit这样的库来异步处理网络请求,避免阻塞主线程。当请求完成后,将服务器返回的JSON数据解析成Java对象,如`News`类,然后在UI上显示。 关于标签中的" s' f' g'...
3. 客户端请求到达 Server:当客户端的请求到达 Server 时,Server 会创建一个请求对象和响应对象,并将其传递给 Servlet 的 service() 方法。 4. Servlet 处理请求:Servlet 的 service() 方法会处理客户端的请求,...
在 `dxServlet.java` 文件中,通过继承 `HttpServlet` 类来创建一个自定义的 Servlet,该类提供了默认的行为实现,包括初始化方法 `init()` 和处理 GET 和 POST 请求的方法。 ### HTTP POST 请求与 XML 数据处理 ...
Servlet.jar和HTTPServlet.jar是Java EE规范中定义的两个重要库文件,它们包含了Servlet API和HTTPServlet API的实现,是服务器端处理HTTP请求和响应的关键工具。 Servlet是Java编程语言中的一种接口,由Java ...
POST请求的数据包含在请求正文中,因此可以处理比GET请求更大的数据量,没有明确的大小限制,但实际大小受到服务器和客户端配置的影响。POST请求不是幂等的,因为多次执行可能会导致资源的多次创建或修改。在安全性...
HttpServlet的核心在于它的`service()`方法,这是一个抽象方法,当客户端向Servlet发送请求时,容器(如Tomcat)会调用这个方法。HttpServlet通过重写`service()`方法,根据HTTP请求类型(GET、POST等)调用相应的...
它主要用于Web应用程序,处理来自客户端(通常是Web浏览器)的请求,并生成响应。 2. **HttpServletRequest接口**:这是Servlet API的一部分,它提供了与HTTP请求相关的所有信息。例如,你可以通过...