infinity

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  36 随笔 :: 0 文章 :: 25 评论 :: 0 Trackbacks

    我们现在来创建一个简单的Servlet:FirstServlet类,功能只是输出“Hello!大家好!”。代码如例3.1。

/*

 * FirstServlet.java

 *

 * 功能:通过Servlet输出页面

*/

package com.jy.sample.servlet;

 

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;

 

/**

 * HelloWorld Servlet.

 * 
@author JY

 
*/

public class FirstServlet extends HttpServlet {

    
/** serialVersionUID. */

    
private static final long serialVersionUID = 2372510451801586160L;

 

    
/**

     * 处理Get请求.

     * 
@param req Request

     * 
@param resp Response

     * 
@throws ServletException Servlet异常

     * 
@throws IOException IO异常

     
*/

    @Override

    
protected void doGet(HttpServletRequest req,

            HttpServletResponse resp)

                
throws ServletException, IOException {

        
// 设定内容类型为HTML网页UTF-8编码

        resp.setContentType(
"text/html;charset=UTF-8");

        
// 输出页面

        PrintWriter out 
= resp.getWriter();

        out.println(
"<html><head>");

        out.println(
"<title>First Servlet Hello</title>");

        out.println(
"</head><body>");

        out.println(
"Hello!大家好!");

        out.println(
"</body></html>");

        out.close();

    }

}

 

例3.1

    下面我们来看看这段代码,一开始我们必须导入javax.servlet.*和javax.servlet.http.*。其中,javax.servlet.* 存放与HTTP协议无关的一般性Servlet类;javax.servlet.http.* 增加了与HTTP协议有关的功能。

    所有Servlet都必须实现javax.servlet.Servlet接口,但是通常我们都会从javax.servlet.GenericServlet或javax.servlet.http.HttpServlet择一来实现。如果写的Servlet代码和HTTP协议无关,那么必须继承GenericServlet类;若有关,就必须继承HttpServlet类。我们的例子中继承的是HttpServlet类。

    javax.servlet.* 里面的ServletRequest和ServletResponse接口提供存取一般的请求和响应;而javax.servlet.http.* 里面的HttpServletRequest和HttpServletResponse接口,则提供HTTP请求及响应的存取服务。通过代码了解到,我们代码中用到的是HttpServletRequest和HttpServletResponse。

    我们的代码中,利用HttpServletResponse接口的setContentType()方法来设定内容类型,我们要显示为HTML网页类型,因此,内容类型设为“text/html”,这是HTML网页的标准MIME类型值。之后,用getWriter()方法返回PrintWriter类型的out对象,它与PrintStream类似,但是它能够对Java的Unicode字符进行编码转换。最后,利用out对象把“Hello!大家好!”的字符串显示在网页上。

    代码写好后,我们来设定web.xml文件,web.xml文件在我们Web项目的WEB-INF文件夹内。如图3.4。


图3.4

    我们来详细看一看web.xml中这段关于Servlet的配置。配置一个Servlet需要配置两个标签,第一个<servlet>,一个是<servlet-mapping>。

对于<servlet>,在其中可以配置Servlet的名字,所要调用的Java类,还有Servlet初始化时传入的参数。在这里,我们的Servlet名字是“FirstServlet”,调用的java类是“com.jy.sample.servlet.FirstServlet”,就是我们写的Servlet的package加上类名。我们写了一个最简单的Servlet,我们不需要传递初始化参数给Servlet,所以没有配置初始化参数,关于配置初始化参数,我们会在后边的例子里讲解。

    对于<servlet-mapping>,我们首先指定了Servlet的名字,然后设置url连接,在这里,我们设置的是“/FirstServlet”。这里的Servlet名字必须和上面的<servlet>标签中的<servlet-name>的值一致。

    当我们的页面中设定的连接和<url-pattern>中设定的值一致时,则会通过<servlet-name>找到对应Servlet类来运行。这里,当页面的连接(a标签或form设定的action)是“/FirstServlet”时,则会通过Servlet的名字“FirstServlet”来找到对应的Servlet类“com.jy.sample.servlet.FirstServlet”来运行。

    最后,我们看看FirstServlet的执行结果,如图3.5所示。

图3.5


posted on 2010-07-27 11:10 infinity 阅读(511) 评论(0)  编辑 收藏 引用 所属分类: java

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理