zoukankan      html  css  js  c++  java
  • 什么是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 不需要一句一句的输出 其他的没有区别

  • 相关阅读:
    商贸通帐套隐藏方法
    固定资产打开提示:上年度数据未结转!
    ZOJ 2432 Greatest Common Increasing Subsequence
    POJ 1080 Human Gene Functions
    POJ 1088 滑雪
    POJ 1141 Brackets Sequence
    POJ 1050 To the Max
    HDOJ 1029 Ignatius and the Princess IV
    POJ 2247 Humble Numbers
    HDOJ 1181 变形课
  • 原文地址:https://www.cnblogs.com/zjf6666/p/6541575.html
Copyright © 2011-2022 走看看