美文网首页
如何实现servlet

如何实现servlet

作者: guanalex | 来源:发表于2017-10-14 11:07 被阅读16次

    什么是servlet?

    Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。简而理解就是web服务器上具有特殊功能的一个小程序。

    servlet的运行过程

    对于servlet的运行过程是Servlet程序是由web服务器调用,web服务器收到客户端的Servlet访问请求后:
      第一步,Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。 如果是,则直接执行第四步,否则,执行第二步。
      第二步,装载并创建该Servlet的一个实例对象。
      第三步,调用Servlet实例对象的init()方法。
      第四步,创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
      第五步,WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。

    下列是图解过程

    web浏览器向服务器发出请求 首次请求时建立servlet对象 3创建请求和响应对象 调用servlet方法 读取请求信息并写入响应信息 servlet方法返回 读取响应信息 向web浏览器返回响应

    利用工具来创建一个servlet过程

    利用工具来创建servlet文件好处就是他会总动帮你写好web.xml文件,下面是用myeclipse 10来创建的过程。

    首先实例化一个包 创建servlet文件 自动创建xml文件 xml文件

    首先1号的/Hello是我们访问服务器的虚拟目录,当检测到这个路径,就会转到servlet-name标签下找,然后跳转置3号查找servlet是否好友与2号相同的名字,如果有就创建myservlet.HelloServlet对象。

    开发servlet的三种方式

    第一种,就是创建一个普通类去实现Servlet接口,并重写servlet接口的所有方法,重点是重写service方法,代码如下

    public class Demo implements Servlet {         //实现Servlet接口,重写接口全部方法
    public void destroy() {
    }
    public ServletConfig getServletConfig() {
        return null;
    }
    public String getServletInfo() {
        return null;
    }
    public void init(ServletConfig arg0) throws ServletException {
    }
    public void service(ServletRequest req, ServletResponse res)throws ServletException, IOException {
     //向浏览器输出SERVLET字符
        PrintWriter pw = res.getWriter();
        pw.write("<font style='color:red;font-size:111px'>SERVLET</font>");
     }
     }
    

    第二种方法,就是创建一个普通类去继承GenericServlet类,并重写service方法,因为GenericServlet类以实现servlet接口,所以就不用去重写每一个servlet接口的方法。代码如下:

    public class Demo extends GenericServlet {
    public Demo(){
    }
    @Override
    public void service(ServletRequest req, ServletResponse res)throws ServletException, IOException {
          //向浏览器输出servlet字符
        res.setContentType("text/html;charset=utf-8");
        PrintWriter pw = res.getWriter();
        pw.write("<font style='font-size:111px;color:red'>Servlet</font>");
    }
     }
    

    第三种方法,也是创建一个普通类去继承HttpServlet类,并重写doGet或doPost方法,因为HttpServlet类是继承自GenericServlet类,不用在重写service方法,这种放好的好处就是可以分清楚是处理哪一种请求方式。代码如下:

         public class Demo01C extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
         //向浏览器输出一个表单
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter pw = response.getWriter();
        pw.write("<form action='#' method='POST'>");
            pw.write("<table border='2' align='center'>");
                pw.write("<caption><h2>用户登录</h2></caption>");   
                pw.write("<tr><th>姓名</th><td><input type='text' name='username'/></td></tr>");
                pw.write("<tr><th>密码</th><td><input type='password' name='password'/></td></tr>");
                pw.write("<tr><td colspan='2' align='center'><input type='submit' value='提交'/></td></tr>");
            pw.write("</table>");
        pw.write("</form>");
    }
     }   
    

    相关文章

      网友评论

          本文标题:如何实现servlet

          本文链接:https://www.haomeiwen.com/subject/kskxuxtx.html