zoukankan      html  css  js  c++  java
  • servlet(1)

    java servlet是一种使用java编写的cgi程序

    CGI:通用网关接口,与传统CGI不同的是,Servlet是使用一种多线程的程序处理方式,性能要求较高。

    在servlet中可以控制html代码,则所有的html代码都必须使用out.println()一行一行输出。

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

    一,Servlet的生命周期

    首先创建servlet,然后初始化servlet,如果初始化成功那么,使用servlet提供服务,如果没有成功,那么就卸载servlet,当servlet完成服务,则销毁servlet,最后卸载servlet。

    (1)生命周期的方法描述

    初始化时期

    public void init(ServletConfig config)throws ServletException

    执行时期

    public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException

    public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException

    结束时期

    public void destroy()

    Servlet类本身也是java类,所以也要保存在class文件夹下。

    实例:

    1,编写Servlet类

    package cn.lxh.servlet;

    import java.io.*;

    import javax.servlet.*;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class SimpleServlet extends HttpServlet {

     //初始化
     public void init(ServletConfig config) throws ServletException
     {
      System.out.println("----初始化----");
     }
     //处理
     public void doGET(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
     {
      PrintWriter out=resp.getWriter();
         out.println("<html>");
         out.println("<head>");
         out.println("</head>");
         out.println("<body>");
         out.println("<h1>hello</h1>");
         out.println("</body>");
         out.println("</html>");
     }
     public void doPost(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
     {
      this.doGET(req, resp);
     }
     //销毁
     public void destroy()
     {
      System.out.println("----销毁----");
     }
    }

    2,通过web映射访问Servlet程序

    需要配置web.xml文件

    <Servlet>

      <servlet-name>simple</servlet-name>

      <servlet-class>cn.lxh.servlet.SimpleServlet</servlet-class>

      <load-on-startup>1</load-on-startup>

    </Servlet>

    <!--在此加入新的servlet-->

    <servlet-mapping>

      <servlet-name>simple</servlet-name>

      <url-pattern>/demo</url-pattern><!--浏览器中的相对地址-->

    </servlet-mapping>

    在浏览器中输入..../demo,然后找到servlet-mapping中的servlet名称,然后通过servlet名称找到servlet的class类

    在编译Servlet时,会出现找不到servlet包的问题,因为jdk包含j2se包,而java ee包不在java se之中,需要单独配置包。

    在tomcat中,存在servlet的全部库文件。

    将tomcat\common\lib\servlet.jar包拷贝到jdk安装路径下的jre\lib\ext下

    当客户端发送http请求使用get方法时就调用doGet()方法,http的缺省方法就是GET;当客户端发送http请求使用POST方法时就调用doPost()方法。

    Servlet生命周期:

    1,初始化: 默认情况下,在第一次使用Servlet程序时初始化;也可以在容器启动时初始化Servlet程序,通过配置web.xml

    在servlet配置中加入<load-on-startup>1</load-on-startup>,表示服务器启动时初始化Servlet程序。

    其中1表示优先级,可以为2,3,4等值。

    2,服务: doGet(),doPost(),直接在浏览器中输入地址就是get请求

    3,销毁:a,服务器关闭;b,此servlet长时间不使用,销毁也只执行1次

  • 相关阅读:
    搭建JUnit环境
    搭建日志环境并配置显示DDL语句
    先建表还是先建实体类
    hbm2ddl
    总结与提纲
    常见O/R框架介绍
    hibernate 模拟实现和What is and Why O/R Mapping
    hibernate 注解不给提示
    额,你在main.xml中加了一个id以后,要右键点save,才会将这个id加入到R中,否则是没有的。。。R里的东西是程序自动生成的~~~
    导入android工程@Override报错
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1950866.html
Copyright © 2011-2022 走看看