创建用户自己的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:
http://localhost:8080/helloapp/hello?clientName=sky