創建用戶自己的HttpServlet類。通常涉及下列4個步驟
4.生成HTTP響應結果。通過HttpServletResponse對象可以生成響應結果。HttpServletResponse對象有一個 getWriter()方法,該方法返回一個PrintWriter對象。使用PrintWriter的print()或println()方法可以向客 戶端發送字符串數據流。
例子: 提供一個Servlet樣例(HelloServlet.java)
package com.myServlet
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HelloServlet extends HttpServlet // 第一步:擴展HttpServlet抽象類
{
// 第二步: 覆蓋doGet()方法
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException ,ServletException{
// 第三步: 獲取HTTP請求中的參數信息
String clientName=request.getParameter("clientName");
if(clientName!=null)
clientName=new String(clientName.getBytes("ISO-8859-1"),"GB2312");
else
clientName="你好"
// 第四步
PrintWriter out;
String title="HelloServlet";
String heading1="This is output from HelloServlet by doGet:";
response.setContentType("text/html;charset=GB2312");
out=response.getWriter();
out.print("<HTML><HEAD><TITLE>"+title+"</TITLE>);
out.print("</HEAD><BODY>")
out.print(heading1);
out.println("<h1><P>"+clientName+":你好</h1>"+);
out.print("</BODY></HTML>");
out.close();
}
}
上述HelloServlet類擴展HttpServlet抽象類,覆蓋了doGet方法。在重寫的doGet方法中,通過 getParameter方法讀取HTTP請求中的一個參數ClientName。在上述代碼中,為了解決漢化問題,做了必要的轉碼工作。客戶提交的查詢 數據采用默認的ISO-8859-1編碼,應該把它轉換為中文編碼GB2312:
// 字符編碼轉換
clientName=new String(clientName.getBytes(“ISO-8859-1”),"GB2312");
// 設置輸出響應數據的字符編碼
response.setContentType("text/html;charset=GB2312");
HellowServlet.class 的存放位置為:
<CATALINA_HOME>/webapps/helloapp/WEB-INF/classes/mypack/HelloServlet.class
在Web.xml中位HelloServlet類加上如下<servlet>和<servlet-mapping>元素:
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>mypackCounterServlet</servlet-class>
</servlet>
<servlet-mapping>HelloServlet</servlet-mapping>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
然后通過如下URL訪問HelloServlet: