今天动手实践了一下写Servlet的代码,感觉不错.现在写些东西给大家分享一下:
我们是用Servlet的API处理HTTP请求的,现在我给大家看一段代码,它的作用就是在浏览器里面打出一行字,经典的不能再经典(你想说老土我也不反对)就是,Hello,World
package Chap2;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloWorld extends HttpServlet
{
// eclipse非要让我加这句话,要么会有一个警告,我看对运行没有什么影响我就加了,不知道哪位高人知道怎么用这个东西
private static final long serialVersionUID = 1L;
// 这个方法可以处理GET的请求
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置一个Content-Type首部
response.setContentType("text/html");
// 这个东西就像你拿到了向客户端浏览器写字的一支笔
PrintWriter out = response.getWriter();
// 现在可以往客户端的浏览器写HTML代码了,想怎么写就怎么写,呵呵
out.println( "<HTML>" );
out.println( "<HEAD><TITLE>Hello World</TITLE></HEAD>" );
out.println( "<BODY>" );
out.println( "<BIG>Hello World</BIG>" );
out.println( "</BODY></HTML>" );
}
}
把这个东西发布到你的服务器下面,你就可以看到一行字:Hello,World.
至于怎么配置服务器,近期我会给大家一份资料,里面详细描述了配置JDK+Tomcat+Eclipse+MyEclipse的方法,这些软件都可以到我的网站上去下载,链接在我的签名里面!
下面我们来点动态的东西,做完了以后,学过JSP的人们会发现,这个...不就是JSP么?
对!JSP就是拿这个东西实现的,就如同Windows API和MFC的关系;相信如果你是个肯钻研的主,早就不愿意学MFC那个把你规定的死死的东西了吧.
第二个例子:
package Chap2;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Exp2 extends HttpServlet
{
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String name = request.getParameter( "name" );
out.println( "<HTML>" );
out.println( "<HEAD>" );
out.println( "<TITLE>Hello " + name + ".</TITLE>" );
out.println( "</HEAD>" );
out.println( "<BODY>" );
out.println( "Hello, " + name + "." );
out.println( "</BODY>" );
out.println( "</HTML>" );
}
public String getServletInfo()
{
return "A servlet that knows the name of the person to whom it's saying hello";
}
}
这个Servlet可以接受一个name的参数,当然你可以新建一个页面来让用户来提交这个参数.
我给大家一个
<HTML>
<HEAD>
<TITLE>Introductions</TITLE>
</HEAD>
<BODY>
Exp2
<FORM METHOD=GET ACTION="servlet/Exp2"> If you don't mind me asking, what is your name?
<INPUT TYPE=TEXT NAME="name"></P>
<INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>
纯粹的HTML代码,简单的不能再简单,根据你服务器配置的不同和Servlet存放的地方的不同,你要看你的FORM标签上面那个ACTION属性该怎么填!
Exp2那个Servlet就是接受了一个name的变量,然后叫一下你的名字,问候你下你呵呵.
但是有时候用户会发出一个HEAD请求(客户端只想看到响应的首部时发出的请求),这个东西可能会让你很烦,你心里会说这些人就会给我捣乱,发什么HEAD请求啊!确实这个东西看上去微不足道,也没有doHead()的方法可以使用.任何有子类HttpServlet和实现了doGet方法的servlet都支持HEAD请求.
现在我们看一下处理HEAD请求的工作过程:
HttpServlet的service()方法确定HEAD请求并把它特殊对待。它构建一个修改过的HttpServletResponse对象,并把它和原来的请求一起发给doGet方法(你知道了,我们要在doGet那个东西里面做文章!)。很高兴地告诉你,如果是一个HEAD请求,系统可以为我们自动屏蔽后面的输出,但是如果让我们来做一个判断,你可以提高你的程序性能,也能加深我们对这个Servlet的了解。
我们要在Exp2的doGet()方法中加一句话:
if( request.getMethod().equals( "HEAD" ) ) return;
通过request这个对象我们可以看到客户端的请求类型,如果这个字符串时HEAD,哈哈,干掉他!
但是,即使我们只是处理一个HEAD请求,我们也要设置Content-Type首部。
posted on 2005-12-30 13:32
Fusion KISS 阅读(412)
评论(0) 编辑 收藏