• 什么是servlet


    sun公司制定的一种用来扩展web服务器功能的组件规范(服务器端的Java应用程序)。具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求(Web浏览器或其它HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层

    1.用来扩展web服务器功能(生成动态的Web页面)

    以前的CGI效率不高,用servlet来扩展 替换 CGI

    客户端发送请求给web服务器,web服务器启动并调用servlet。servlet容器负责解析数据包,也包括

    网络通讯相关的一些处理。然后将解析之后的数据交给servlet来处理。

    注意:可以不使用服务器,而直接向servlet容器发送请求。因为servlet容器也有通信模块,所以可以直接把servlet容器当做web服务器来使用。

    2.组件规范

     (1)组件:是符合一定规范,并且实现部分功能的可以单独部署的软件模块。组件必须部署到容器中才能运行。

    (2)容器:也是符合一定规范,并且提供组件的运行环境的程序。

    注意:单个的组件,单个的容器都没有意义。只有放在一起才能运行

    Tomcat 就是一个servlet容器也是一个web服务器

    3 servlet容器是怎么运行的:
     浏览器箱web服务器发送请求  web服务器接收数据 发送servlet容器 然后实例化servlet 调用init方法  初始化 然后调用service方法 利用doget 或者dopost处理
    servlet 将处理的结构返回给web服务器 然后发送给客户端
    servlet 的优点 只创建一个实例 只初始化一次 但是可以被调用多次。 不同GCI创建多个实例,servlet存在线程安全问题。servlet效率 比较高

    servlet的创建

    public class servletest extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        public servletest() {
            super();
        }

        
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
             response.setContentType("text/html");
                      PrintWriter out = response.getWriter();
                      out.println("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">");
                      out.println("<HTML>");
                      out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
                      out.println("  <BODY>");
                      out.print("    This is ");
                     out.print(this.getClass());
                      out.println(", using the GET method");
                      out.println("  </BODY>");
                      out.println("</HTML>");
                      out.flush();
                      out.close();
        }

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              response.setContentType("text/html");
                       PrintWriter out = response.getWriter();
                       out.println("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">");
                       out.println("<HTML>");
                       out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
                       out.println("  <BODY>");
                      out.print("    This is ");
                       out.print(this.getClass());
                       out.println(", using the POST method");
                       out.println("  </BODY>");
                       out.println("</HTML>");
                      out.flush();
                       out.close();
        }

    }

    web.xml的配置

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>zz.servletest</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/test/hello</url-pattern>
      </servlet-mapping>
    </web-app>

    启动Tomcat  输入 :localhost8080/zzservlet/test/hello

    注意:

    web.xml中servlet是servlet实例的一个线程 可以有多个servlet标签每个servlet代表一个请求处理

    servletname是这个servlet的名称 可以为任意值但必须和servlet-mapping中的对应

    servlet-class 是对应的Java类,即根目录下的Java目录 即不需要工程名 工程名是根目录,class是文件名称即package后的名称

    url-pattern 是访问的路径  输入的访问地址为 网址+端口号+工程名+访问的路径

    servlet与jsp的区别 即servlet 需要一个一个的out.print 而jsp 不需要一句一句的输出 其他的没有区别

  • 相关阅读:
    Loadrunner 参数化&参数化策略&参数化mysql
    Loadrunner 录制脚本注意事项
    Centos7卸载nginx及php、php-fpm方法
    卸载apache
    apache配置
    centOs
    ajax-php跨域请求
    安装php
    apache
    java集合类,HashMap,ArrayList
  • 原文地址:https://www.cnblogs.com/zjf6666/p/6541575.html
Copyright © 2020-2023  润新知