2013年3月23日星期六

最简单的一个servlet程序——Hello world!

最简单的一个servlet程序——Hello world!

看书写了个最简单的servlet程序——Hello world!这基本上也是每种语言入门的标准例子了。废话少说,言归正传。
可以使用工具比如Eclipse编辑,实用工具能省去很多麻烦,但这只是一个最简单的程序,手工写写就OK了,用不着这么强大的工具。
在Tomcot根目录/webapps里新建一个文件夹hello,然后在hello文件夹里新建一个WEB-INF文件夹,再在WEB-INF文件夹里新建一个example,在example文件夹里新建一个Hello.java。编写程序:
package example;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Hello extends HttpServlet {
    protected void service(HttpServletRequest request, HttpServletResponse response)
        throws ServletException,IOException {
        //ServletOutputStream out = response.getOutputStream();
        PrintWriter out = response.getWriter();
        out.println("Hello world!");
    }
}
然后编译成Hello.class文件。
在WEB-INF文件夹里新建一个web.xml配置文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee  
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <!--设置相应Servlet对应的类型-->
<servlet>
    <servlet-name>ms1</servlet-name>
    <servlet-class>example.Hello</servlet-class>
</servlet>
<!--设置请求对应的Servlet名称-->
<servlet-mapping>
    <servlet-name>ms1</servlet-name>
    <url-pattern>/Hello</url-pattern>
</servlet-mapping>
</web-app>
这样一个最简单的servlet程序就OK了,启动tomcat服务器,输入地址:http://localhost:8080/hello/Hello,结果在页面上出现Hello world!

我 以前对web.xml非常的反感,感觉太麻烦了,哪有直接写jsp来的简单,可能是因为不会,不知道怎么去配置它,但通过这个例子,我大概知道了一个 servlet程序如何通过url来访问,如何通过web.xml来映射——通过标签servlet和servlet-mapping来配合使用。(维护 远比开发麻烦,这种设计模式,就是方便了以后的维护、扩展工作)

另外,
PrintStream和PrintWriter两个类以及ServletOutputStrem和PringWriter两个类的区别可以在网上找下,前人栽树,后人乘凉嘛。
大致就是Stream对应类处理的是字节流,而Writer对应的类处理的是字符流,如何使用,要看情况,没有绝对的好与坏。
可以参考一下这两个链接:
    http://hi.baidu.com/cliff77/blog/item/22e45a54f2efc55dd009060a.html
    http://hi.baidu.com/foodnotenough/blog/item/10f8321fee9fc1c9a6866968.html
到底是如何一个区别,以及在什么情况下使用什么类,我还没有很具体的经验,在以后的学习中慢慢积累吧。


在servlet中指定字符编码格式的代码:
        response.setContentType("text/html");
        response.setCharacterEncoding("UTF-8");

没有评论:

发表评论