Servlet基础(1)

来源:互联网 发布:淘宝店铺名字化妆品 编辑:程序博客网 时间:2024/06/05 07:28

什么是Servlet
Servlet是Jsp的前身。Servlet是在服务器上运行的小程序。一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问的这个驻留在服务器内存里的Servlet程序。

Tomcat容器等级
Tomcat的容器分为四个等级。可以看成一个盒子模型,大盒子里边套了很多小盒子。最外边是一个Tomcat容器,里边有一个Container容器,里边又包含一个Engine,即引擎容器,里边又包含一个HOST主机容器,在主机容器中又包含了Servlet容器。Servlet容器可以管理很多的上下文,称为Context容器,一个Context对应一个Web工程(Web项目)。

手工编写一个Servlet(三步)
1.第一步要编写一个Java类,这个Java类要继承HttpServlet类
关于HttpServlet类,是一个抽象类(不能拿来直接使用),它实现了http协议的servlet。它的父类是GenericServlet,它是一个与协议无关的Servlet。这个GenericServlet又实现了一个叫做Servlet的接口,这个接口中定义了三个方法:Init(), service(), destroy()。用户要编写的Servlet要继承自HttpServlet,并且一般还要重写(覆盖)里边的doGet和doPost方法。
2.那么第二步就是刚刚提到的重写doGet()或者doPost()方法
重写哪一个方法取决于用户提交请求的方式,如果是get方式提交请求,那么就重写doGet,post方式则重写doPost。
3.在web.xml中注册Servlet

接下来就是一个小例子,先在Myeclipse中创建一个Web Project,顺便修改一下字符编码为utf-8

<body>    <h1>第一个Servlet小例子</h1>    <hr>    <a href="servlet/HelloServlet">Get方式请求HelloServlet</a>    <form action="servlet/HelloServlet" method="post">        <input type="submit"  value="Post方式 请求HelloServlet"/>    </form>  </body>

先用get方式请求一个Servlet,要实现get请求,可以写一个超链接,访问的地址servlet/HelloServlet。
在用post方式来实现一次,就用一个form表单就可以,要指定action和method。
然后再src里建一个包servlet,再建一个HelloServlet类并指定父类为HttpServlet。并重写doGet和doPost方法。

package 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;//继承于HttpServletpublic class HelloServlet extends HttpServlet {    @Override    protected void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        // TODO Auto-generated method stub        System.out.println("处理Get()请求....");        PrintWriter out=response.getWriter();        response.setContentType("text/html;charset=utf-8");        out.println("<strong>Hello Servlet!</Strong><br>");    }    @Override    protected void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        // TODO Auto-generated method stub        System.out.println("处理Post()请求....");        PrintWriter out=response.getWriter();        response.setContentType("text/html;charset=utf-8");        out.println("<strong>Hello Servlet!</Strong><br>");    }}

后台会告诉我们是处理doGet还是doPost请求,用out对象可以给浏览器输出信息(可以在里边写一点html代码)。
接下来要注册我们所写的servlet,就在web.xml中注册

<servlet>    <servlet-name>HelloServlet</servlet-name>    <servlet-class>servlet.HelloServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>HelloServlet</servlet-name>    <url-pattern>/servlet/HelloServlet</url-pattern>  </servlet-mapping>

这里要注册两个标签
servlet中的servlet-name表示给这个servlet起个名字,servlet-class表示要访问的servlet所在的类,这里的类名要写完整,包括包名。
servlet-mapping里也有两个子标签,里边的servlet-name和servlet中的servlet-name是一一对应的,url-pattern表示访问路径,要和页面上写的超链接的地址一一对应,即servlet/HelloServlet,注意要先写一个“/”,表示项目的根目录。
之后就可以发布项目。

使用我们的Myeclipse来编写Servlet其实还有方便的方法。
首先创建好一个项目,选中src->new->Servlet,然后重写方法
好处是默认选择了superclass,默认继承doget和dopost方法,还有init和destroy方法
点击next之后会看到默认在web.xml中进行注册
我们要做的就是重写方法。