httpservlet 是从genericservlet 继承而来,因此它具有genericservlet 类似的方法和对象,是我们使用servlet编程经常用到的包,它支持http 的post 和 get 等方法。
编程思路:下面的例子,运行结果是输出简单地返回客户发送给服务器的请求行和头部信息,以及一些可访问的http 信息等。
snoopservlet.java 的源代码如下:import java.io.ioexception;
import java.io.printwriter;
import java.util.enumeration;
import javax.servlet.*;
import javax.servlet.http.*;
public class snoopservlet extends httpservlet {
public void doget(httpservletrequest request, httpservletresponse response)
throws servletexception, ioexception
{
printwriter out = response.getwriter();
response.setcontenttype("text/plain");
out.println("snoop servlet");
out.println();
out.println("servlet init parameters:");
enumeration e = getinitparameternames();
while (e.hasmoreelements()) {
string key = (string)e.nextelement();
string value = getinitparameter(key);
out.println(" " + key + " = " + value);
}
out.println();
out.println("context init parameters:");
servletcontext context = getservletcontext();
enumeration enum = context.getinitparameternames();
while (enum.hasmoreelements()) {
string key = (string)enum.nextelement();
object value = context.getinitparameter(key);
out.println(" " + key + " = " + value);
}
out.println();
out.println("context attributes:");
enum = context.getattributenames();
while (enum.hasmoreelements()) {
string key = (string)enum.nextelement();
object value = context.getattribute(key);
out.println(" " + key + " = " + value);
}
out.println();
out.println("request attributes:");
e = request.getattributenames();
while (e.hasmoreelements()) {
string key = (string)e.nextelement();
object value = request.getattribute(key);
out.println(" " + key + " = " + value);
}
out.println();
out.println("servlet name: " + getservletname());
out.println("protocol: " + request.getprotocol());
out.println("scheme: " + request.getscheme());
out.println("server name: " + request.getservername());
out.println("server port: " + request.getserverport());
out.println("server info: " + context.getserverinfo());
out.println("remote addr: " + request.getremoteaddr());
out.println("remote host: " + request.getremotehost());
out.println("character encoding: " + request.getcharacterencoding());
out.println("content length: " + request.getcontentlength());
out.println("content type: "+ request.getcontenttype());
out.println("locale: "+ request.getlocale());
out.println("default response buffer: "+ response.getbuffersize());
out.println();
out.println("parameter names in this request:");
e = request.getparameternames();
while (e.hasmoreelements()) {
string key = (string)e.nextelement();
string[] values = request.getparametervalues(key);
out.print(" " + key + " = ");
for(int i = 0; i < values.length; i++) {
out.print(values[i] + " ");
}
out.println();
}
out.println();
out.println("headers in this request:");
e = request.getheadernames();
while (e.hasmoreelements()) {
string key = (string)e.nextelement();
string value = request.getheader(key);
out.println(" " + key + ": " + value);
}
out.println();
out.println("cookies in this request:");
cookie[] cookies = request.getcookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
cookie cookie = cookies[i];
out.println(" " + cookie.getname() + " = "+ cookie.getvalue());
}
}
out.println();
out.println("request is secure: " + request.issecure());
out.println("auth type: " + request.getauthtype());
out.println("http method: " + request.getmethod());
out.println("remote user: " + request.getremoteuser());
out.println("request uri: " + request.getrequesturi());
out.println("context path: " + request.getcontextpath());
out.println("servlet path: " + request.getservletpath());
out.println("path info: " + request.getpathinfo());
out.println("path trans: " + request.getpathtranslated());
out.println("query string: " + request.getquerystring());
out.println();
httpsession session = request.getsession();
out.println("requested session id: " +
request.getrequestedsessionid());
out.println("current session id: " + session.getid());
out.println("session created time: " + session.getcreationtime());
out.println("session last accessed time: " +session.getlastaccessedtime());
out.println("session max inactive interval seconds: " + session.getmaxinactiveinterval());
out.println();
out.println("session values: ");
enumeration names = session.getattributenames();
while (names.hasmoreelements()) {
string name = (string) names.nextelement();
out.println(" " + name + " = " + session.getattribute(name));
}
}
}
编程技巧说明:
程序输出init parameters(初始化参数)、attribute names in this request、parameter names in this request、headers in this request、cookies in this request 和 session information等信息。
方法getrequesturi返回的对象uri 是作为url 的一部分,是去掉url 中用于指定机器的那部分;方法getpathinfo 返回的字符串是客户向servlet 传送的各种选项,这些选项是跟在servlet 的url 之后的,方法getpathtranslated 返回的字符串是servlet 的自己的绝对路径名,snoopservlet.class 文件位置是c:\jswdk-1.0.1\examples\web-inf\servlets\snoopservlet.class,则方法getpathtranslated 返回的字符串值就是它。
在浏览器中输入如下的地址:http://localhost:8080/examples/servlet/snoopservlet
则会输出结果。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器