精华内容
下载资源
问答
  • servlet技术特点
    2021-02-26 16:53:37

    Servlet(Server Applet)是 Java Servlet 的简称,是使用 Java 语言编写的运行在服务器端的程序。具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

    通常来说,Servlet 是指所有实现了 Servlet 接口的类。

    Servlet 主要用于处理客户端传来的 HTTP 请求,并返回一个响应,它能够处理的请求有 doGet() 和 doPost() 等。

    Servlet 由 Servlet 容器提供,Servlet 容器是指提供了 Servlet 功能的服务器(如 Tomcat)。

    Servlet 容器会将 Servlet 动态加载到服务器上,然后通过 HTTP 请求和 HTTP 应与客户端进行交互。

    Servlet 的请求首先会被 HTTP 服务器(如 Apache)接收,HTTP 服务器只负责静态 HTML 页面的解析,而 Servlet 的请求会转交给 Servlet 容器,Servlet 容器会根据 web.xml 文件中的映射关系,调用相应的 Servlet,Servlet 再将处理的结果返回给 Servlet 容器,并通过 HTTP 服务器将响应传输给客户端。

    Servlet 技术具有如下特点。

    1)方便

    Servlet 提供了大量的实用工具例程,如处理很难完成的 HTML 表单数据、读取和设置 HTTP 头,以及处理 Cookie 和跟踪会话等。

    2)跨平台

    Servlet 使用 Java 类编写,可以在不同的操作系统平台和不同的应用服务器平台运行。

    3)灵活性和可扩展性强

    采用 Servlet 开发的 Web 应用程序,由于 Java 类的继承性及构造函数等特点,使得应用灵活,可随意扩展。

    除了上述几点以外,Servlet 还具有功能强大、能够在各个程序之间共享数据、安全性强等特点,此处不再详细说明,读者简单了解即可。

    更多相关内容
  • Servlet 技术简介

    万次阅读 2017-10-24 21:06:21
    Web技术的发展静态页面阶段用户访问页面过程: 用户用浏览器通过HTTP协议请求服务器上的Web页面 服务器上的Web服务器软件接收到请求后,读取URI所标识的资源 在读取的资源上加上消息报头发送给客户端的浏览器。 ...

    Web技术的发展

    静态页面阶段

    用户访问页面过程:

    1. 用户用浏览器通过HTTP协议请求服务器上的Web页面
    2. 服务器上的Web服务器软件接收到请求后,读取URI所标识的资源
    3. 在读取的资源上加上消息报头发送给客户端的浏览器。
    4. 浏览器解析响应中的HTML数据,想用户呈现内容。

    CGI(Common Gateway Interface)动态页面阶段

    用户访问页面过程:

    1. 用户通过点击链接或者直接输入URL访问CGI程序。
    2. Web服务器接收到请求后,于是启动并运行CGI程序,由这个程序来处理用户的请求。
    3. CGI程序解析请求中的CGI数据,处理数据,产生一个响应(通常是HTML页面)。
    4. 响应返回给Web服务器。
    5. Web服务器包装这个响应,以HTTP响应的形式发送给浏览器。

    Servlet 动态页面阶段

    用户访问页面过程:

    1. 用户通过点击链接或者直接输入URL访问Servlet。
    2. Web服务器接收到请求后,交给Servlet容器。
    3. Servlet容器实例化Servlet。
    4. 调用Servlet特定方法对请求进行处理,并且产生一个响应。
    5. 响应由Servlet容器返回给Web容器。
    6. Web容器包装这个响应,以HTTP响应的形式发送给浏览器。


    Servlet是什么

    Servlet是一种独立于平台和协议的服务器端的Java技术,可以用来生成动态的Web页面。

    Servlet是使用Java Servlet应用程序设计接口(API)及相关类和方法的Java程序。

    Servlet主要用户处理客户端传来的HTTP请求,并返回一个响应。通常Servlet是指HttpServlet,用于处理HTTP请求。

    能够处理的请求有:doGet() doPost() service()等。

    在开发Servlet时,可以直接继承javax.servlet.http.HttpServlet。


    Servlet与Servlet容器

    Java Servlet(Java服务器小程序)是一个基于Java技术的Web组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容。Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类。Servlet被编译为平台独立的字节码,可以被动态地加载到支持Java技术的Web服务器中运行。

    Servlet容器(Servlet引擎)是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的请求,格式化机遇MIME的响应。

    Servlet不能独立于运行,必须被部署到Servlet容器中,由容器来实例化和调用Servlet的方法,Servlet容器在Servlet的生命周期内包容和管理Servlet。


    Servlet技术特点

    高效,方便,跨平台,功能强大,灵活性和可扩展性,共享数据,安全。

    1. 高效
    在服务器上仅有一个Java虚拟机在运行,它的优势在于当多个来自客户端的请求进行访问时,Servlet为每个请求分配一个线程而不是进程。

    2. 方便
    Servlet提供了大量的实用工具例程,如处理很难完成的HTML表单数据,读取和设置HTTP头,处理Cookie和跟踪会话等。

    3. 跨平台
    Servlet是用Java类编写的,可以在不同的操作系统平台和应用服务器平台下运行。

    4. 功能强大
    在Servlet中,许多实用传统CGI程序很难完成的任务都可以利用Servlet技术轻松完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。

    5. 灵活性和可扩展性
    采用Servlet开发的Web应用程序,由于Java类的继承性,构造函数等特点,使得其应用灵活,可随意扩展。

    6. 共享数据
    Servlet之间通过共享数据可以很容易地实现数据库连接池。它能方便地实现管理用户请求,简化Session和获取前一页面信息的操作,而在CGI之间通信则很差。由于每个CGI程序的调用都开始一个新的进程,调用间通信通常要通过文件进行,因而相当缓慢。同一台服务器上的不同CGI程序之间的通信也相当麻烦。

    7. 安全
    有些CGI版本有明显的安全弱点。即使是实用最新标准,系统也没有基本安全框架。而Java定义有完整的安全机制,包括SSL\CA认证、安全政策等规范。


    Servlet生命周期

    加载和实例化–>初始化–>请求处理–>销毁

    1. 加载和实例化(创建Servlet对象)
    第一种情况:
    当请求到达容器时,容器查找该servlet对象是否存在,如果不存在,才会创建实例。
    第二种情况:
    容器在启动时,或者新部署了某个应用时,会检查web.xml当中,servlet是否有 load-on-starup配置。如果有,则会创建该servlet实例。
    load-on-starup参数值越小,优先级越高(最小值为0,优先级最高)。

    2. 初始化init()
    在Servlet实例化后,容器调用init()方法初始化这个对象,为了让Servlet对象在处理客户端请求之前完成一些初始化工作,例如简历数据库的连接,获取配置信息等。

    3. 请求处理 service()
    Servlet容器调用service()方法对请求进行处理。
    HttpServlet的service()方法,会依据请求方式来调用doGet()或者doPost()方法进行请求处理,并且通过调用ServletResponse对象的方法设置响应信息。

    4. 销毁 destroy()
    当容器检测到Servlet实例应该从服务器中被移除的时候,当需要释放内存或容器关闭时候,容器或调用Servlet实例等destroy()方法。
    当destroy()方法调用之后,容器会释放这个Servlet实例,随后会被Java等垃圾收集器所回收,如果在此需要这个Servlet处理请求,Servlet容器会创建一个新的
    Servlet实例。



    init()destroy()方法只被调用一次
    service()可以被调用多次


    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;
    
    public class MyServlet extends HttpServlet{
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            // 可编写使用req读取和请求有关的信息和表单数据代码
            // 可编写使用resp置顶HTTP应答状态代码和应答头的代码
            // 可编写使用out对象向页面中输出信息的代码
            PrintWriter out = resp.getWriter();
        }
    }
    

    总结

    首先通过Web技术的发展引出了Servlet技术。接着简单介绍了Servlet是什么Servlet和Servlet容器Servlet技术特点Servlet生命周期Servlet代码结构


    参考:

    • 《Servlet/JSP深入详解—基于Tomcat的Web开发》 孙鑫
    • 《JSP程序设计教程》(第2版)郭珍 王国辉 张敏 张永
    • 《JSP从零开始学》刘鑫
    展开全文
  • 一、Servlet的简介Servlet的概述servlet是运行在服务端的java程序 servlet是一套规范(接口) 外界都可以访问到servlet的快速入门步骤:(1) 创建一个类 实现servlet(2)覆盖servlet接口中的全部方法(尤其是service方法)...

    一、Servlet的简介

    1. Servlet的概述
      servlet是运行在服务端的java程序 servlet是一套规范(接口) 外界都可以访问到
    2. servlet的快速入门
      步骤:
      (1) 创建一个类 实现servlet
      (2)覆盖servlet接口中的全部方法(尤其是service方法)
      (3)需要进行虚拟路径的配置
      web.xml配置部分:
      
          
      1. <?xml version="1.0" encoding="UTF-8"?>
      2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
      3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
      5. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      6. <display-name></display-name>
      7. <servlet>
      8. <!--servlet-name 这里的名字可以任意取,不过需要和 servlet-mapping中的servlet-name匹配
      9.         每一个Servlet标签中只能配置一组属性-->
      10. <servlet-name>Demo1</servlet-name>
      11. <!-- 这里需要填写正确的完整包名来指向java源文件 -->
      12. <servlet-class>com.heima.servlet.Demo1</servlet-class>
      13. </servlet>
      14. <servlet-mapping>
      15. <!-- 这里的name需要和servlet标签中的名字匹配 每一个Servlet-mapping 标签中只能配置一组-->
      16. <servlet-name>Demo1</servlet-name>
      17. <!-- 对外访问的路径 -->
      18. <url-pattern>/demo1</url-pattern>
      19. </servlet-mapping>
      20. <welcome-file-list>
      21. <!-- 这里代表的是欢迎页面,可以自己去寻找 -->
      22. <welcome-file>index.jsp</welcome-file>
      23. </welcome-file-list>
      24. </web-app>
      Demo1.java工程内容:
      
           
      1. package com.heima.servlet;
      2. import java.io.IOException;
      3. import java.io.PrintWriter;
      4. import javax.servlet.Servlet;
      5. import javax.servlet.ServletConfig;
      6. import javax.servlet.ServletException;
      7. import javax.servlet.ServletRequest;
      8. import javax.servlet.ServletResponse;
      9. public class Demo1 implements Servlet
      10. {
      11. @Override
      12. public void service(ServletRequest req, ServletResponse res)
      13. throws ServletException, IOException
      14. {
      15. // 主要业务处理的地方,每次访问都会执行
      16. PrintWriter writer = res.getWriter();
      17. writer.print("<h1>Hello World</h1>");
      18. writer.print("<h1>Hello World</h1>");
      19. System.out.println(getServletInfo());
      20. }
      21. @Override
      22. public void destroy()
      23. {
      24. // 服务器正常关闭的时候调用
      25. }
      26. @Override
      27. public void init(ServletConfig arg0) throws ServletException
      28. {
      29. // 在服务器servlet对象创建的时候执行
      30. }
      31. @Override
      32. public ServletConfig getServletConfig()
      33. {
      34. // 这个方法用于返回ServletConfig对象,内部封装的是Servlet配置信息
      35. return null;
      36. }
      37. @Override
      38. public String getServletInfo()
      39. {
      40. // 用来返回Servlet的一些信息
      41. return "";
      42. }
      43. }

      由于servlet页面回写的时候使用的PrintWrite流,写出中文由于编码问题会出现乱码,可以通过这个方法解决
      res.setContentType("text/html;charset=utf-8");


            
    二、Servlet的生命周期

    1. java中的生命周期:对象什么时候创建 什么时候销毁 这个过程中必然要实行的方法
    2. servlet对象的生命周期:
      创建:默认第一次访问servlet时创建 创建之后对象驻留在内存中 等待为后面的访问服务,所以说,servlet对象只有一个。
      销毁:服务器关闭 web应用从服务器中移除

      与生命周期想过的方法说明
      
          
      1. public void service(ServletRequest req, ServletResponse res)
      2. throws ServletException, IOException
      3. {
      4. // 主要业务处理的地方每次访问都会执行
      5. }
      6. @Override
      7. public void destroy()
      8. {
      9. // 服务器正常关闭的时候调用
      10. }
      11. @Override
      12. public void init(ServletConfig arg0) throws ServletException
      13. {
      14. // 在服务器servlet对象创建的时候执行
      15. }

    三、Servlet的相关配置文件

    1. 基本配置
      基本格式:
      配置servlet的实体:
      
           
      1. <servlet>
      2. <sevlet-name>随意书写</servlet-name>
      3. <servlet-class>servlet类的一个全包名</servlet-class>
      4. </servlet>
      配置servlet的对外访问的虚拟路径
      
            
      1. <servlet-mapping>
      2. <sevlet-name>和那么上面的name一致</servlet-name>
      3. <url-pattern>/虚拟路径</url-pattern>
      4. </servlet-mapping>
      例子:
      
           
      1. <servlet>
      2. <!--servlet-name 这里的名字可以任意取,不过需要和 servlet-mapping中的servlet-name匹配 -->
      3. <servlet-name>Demo1</servlet-name>
      4. <!-- 这里需要填写正确的完整包名来指向java源文件 -->
      5. <servlet-class>com.heima.servlet.Demo1</servlet-class>
      6. </servlet>
      7. <servlet-mapping>
      8. <!-- 这里的name需要和servlet标签中的名字匹配 -->
      9. <servlet-name>Demo1</servlet-name>
      10. <!-- 对外访问的路径 -->
      11. <url-pattern>/demo1</url-pattern>
      12. </servlet-mapping>
      虚拟路径的写法:
      完全匹配:  就是客户端的访问地址与配置完全一致才可以访问到
      
            
      1. <url-pattern>/demo1</url-pattern>

      目录匹配:以/开始以*结束     /aaa/bbb/*
      
            
      1. <url-pattern>/demo1/*</url-pattern>

      扩展名匹配:以*开始 以扩展名结束    *.abc ,如果直接写*.abc那么前面就不需要加/
      
            
      1. <url-pattern>/demo1/*.jpg </url-pattern>

      注意:目录匹配和扩展名匹配不能混用  /aaa/bbb/*.abc(错误的!!!)
    2. 服务器一启动就实例化servlet
      格式:写在Servlet标签内,<load-on-startup>数字</load-on-startup> 
                数字代表实例化的顺序 数字越小越早创建
      
           
      1. <servlet>
      2. <servlet-name>Demo2</servlet-name>
      3. <servlet-class>com.heima.servlet.Servlet</servlet-class>
      4. <load-on-startup>2</load-on-startup>
      5. </servlet>

    3. 缺省的servlet
      格式:缺省的servlet就是所有的servlet都不匹配 缺省的servlet去负责执行
                就是将url-pattern配置成/
      
           
      1. <servlet-mapping>
      2. <servlet-name>Demo2</servlet-name>
      3. <url-pattern>/</url-pattern>
      4. </servlet-mapping>
      注意:其实所有的web资源都是servlet负责返回的,建议在开发中不要自己写缺省servlet使用Tomcat自己的web.xml文件中的默认缺省

    4. 欢迎页面:相当于IIS里面的的默认打开页面
      
           
      1. <welcome-file-list>
      2. <!-- 这里代表的是欢迎页面,可以自己去寻找 -->
      3. <welcome-file>index.jsp</welcome-file>
      4. </welcome-file-list>
    5. tomcat默认的全局web.xml
      1. 缺省的servlet


      2. jsp处理的servlet


      3. session默认失效时间


      4. MIME类型(下载资源)

      5. 欢迎页面

        注意:tomcat的全局的web.xml对tomcat中所有的web应用都适用

    四、Servlet的继承体系

    1. 使用IDE工具创建Servlet类和web.xml配置的对应关系

    2. 我们自己创建servlet的继承关系
      关系:自定义servlet----->HttpServlet------>GenericServlet------>Servlet
      1. service方法的演化过程
        servlet接口中service方法


        GenericServlet中的service方法

        HttpServlet中service方法

        这里service调用的是本类中的另外一个重载service方法。


        在service(HttpServletRequest,HttpServletResponse)方法中可以进行提交方式的判断。通过HttpServlet类中的常量来实现。
        HttpServlet类中的常量属性

        判断实现的方式:



      2. init(ServletConfig config)演变过程
        在servlet接口中的init方法

        在GenericServlet中的init方法

        这个有参方法用来接收Servlet的配置信息,进行赋值

        这个无参重载方法主要用于覆写,切不影响GenericServlet中的一些get方法
        问题:有参数的init和无参数的init的关系?
        首先他们是重载关系。
        有参发放主要用来赋值和调用无参方法。所以在子类中覆盖覆写无参方法不影响最有效果。

      3. destroy()的演变过程
        servlet接口中的destroy方法


        GenericServlet中的destroy方法


    五、ServletConfig对象

    1. 概述:是Servlet的配置对象 内部封装的是servlet的配置信息 在web容器调用init方法时 将ServletConfig作为参数进行传递
    2. 怎样获取?
      通过getServletConfig()
      查看GenericServlet的源码发现。

      可以直接返回GenericServlet类中的config变量,该变量在此类中的有参inti方法中进行了赋值。可以直接调用的原因是应为inti的在服务器开启的时候就自动调用了此方法,所以可以正常服务,而不会去除null值。前提是子类不覆盖有参inti方法。
    3. ServletConfig的作用
      1. 获取servlet的名称
        
               
        1. ServletConfig sc=getServletConfig();
        2. System.out.println(sc.getServletName());

        取出的值就是这里的Servlet-name的值
      2. 获取初始化参数(多个参数的获取方式)
        设置参数方式:通过init-param来设置参数

        
               
        1. ServletConfig sc=getServletConfig();
        2. Enumeration <String> names = sc.getInitParameterNames();
        3. while(names.hasMoreElements())
        4. {
        5. String name=names.nextElement();
        6. System.out.println(name+" "+sc.getInitParameter(name));
        7. }
      3. 可以获取web应用的上下文对象 ServletContext

    六、ServletContext对象

    1. 概述
      HttpServletservletContext是servlet上下文对象 实质代表web应用上下文对象 对象只有一个 而且所有的servlet共享一个ServletContext

      servletContext什么时候创建?
      服务器启动的时候 就会创建ServletContext对象 将这个对象放置在内存中中 供所有的setvlet访问(有点想静态变量)

      servletContext什么时候销毁?
      关闭服务器时销毁  web应用新哦那个服务器中移除
    2. 怎么获得ServletContext对象
      通过servletConfig对象获得
      
           
      1. ServletContext context = getServletConfig().getServletContext();

      通过getServletContext()直接获得
      在GenericServlet类中有此方法

    3. ServletContext的作用
      1. 获取初始化参数
        XML文件设置:

        实现代码:
        
               
        1. ServletContext context = getServletConfig().getServletContext();
        2. Enumeration <String> enums =context.getInitParameterNames();
        3. while(enums.hasMoreElements())
        4. {
        5. String name=enums.nextElement();
        6. System.out.println(name+" "+context.getInitParameter(name));
        7. }

      2.  可以获取web资源的绝对路径:context.getRealPath() 
        重点:getRealPath()相对的位置:相对web应用

        ReadFile方法:
        
               
        1. public void readFile(String path)
        2. {
        3. BufferedReader bufr;
        4. try
        5. {
        6. bufr = new BufferedReader(new FileReader(path));
        7. System.out.println(bufr.readLine());
        8. }
        9. catch (Exception e)
        10. {
        11. // TODO Auto-generated catch block
        12. e.printStackTrace();
        13. }
        14. }

      3.  可以作为域对象:域对象:代表存储数据的区域的对象
        1. context.setAttribute(键,值):设置对象的键和值
        2. context.getAttribute(键):通过键获取值
          
                   
          1. ServletContext context =getServletContext();
          2. //设置属性键值
          3. context.setAttribute("name", "zhansan");
          4. //通过键获取值
          5. String attribute=(String) context.getAttribute("name");






    转载于:https://www.cnblogs.com/didixyy/p/5bb0512ee7b05a9f423ccddf22bcb758.html

    展开全文
  • 北京电子科技职业学院Servlet特点主讲人侯海平 老师目录1. Servlet特点2. Servlet的工作过程13. Servlet的工作过程21. Servlet特点1Servlet是一个供其他java程序(Servlet引擎)调用的java类它不能独立运行2...
  • 【JavaWeb】——JSP和Servlet技术详解

    千次阅读 2020-12-08 17:11:41
    JSP的出现有效的弥补了Servlet程序对页面显示方面的不足 有效的控制动态内容的生成 JSP页面从形式上就是在传统的网页HTML文件中加入Java程序片段和JSP标签 HTML用于表示页面,而Java代码用于访问动态内容。 JSP在...

    1.JSP技术。是Sun Microsystems公司倡导的,许多公司参与建立的一种
    动态网页技术标准。该技术能为创建显示动态生成内容的web页面提供了
    一个简捷而快速的方法。

    2.JSP服务器页面(Java Server Page)的扩展名为.jsp
    JSP的出现有效的弥补了Servlet程序对页面显示方面的不足
    有效的控制动态内容的生成
    JSP页面从形式上就是在传统的网页HTML文件中加入Java程序片段和JSP标签

    HTML用于表示页面,而Java代码用于访问动态内容。

    JSP在目前流行的三P技术中
    ASP :Active Server Pages
    PHP :Personal Homepage
    JSP :Java Server Pages
    JSP是基于Java Servlet以及整个Java体系的Web开发技术
    具有动态网页与静态页面相分离,能够脱离硬件平台束缚一次编写,各处运行等优点。
    利用这一技术,可以建立安全跨平台的先进动态网站,
    从1998年初Sun公司发布了第一个公开的JSP规范草稿,JSP技术就不断的更新完善,
    目前已发展的较为成熟了;
    JSP主要有以下五个方面特点:
    内容生成与表示相分离。使用JSP技术Web页面开发人员可以使用HTML
    或者XML来设计和格式化最终页面,使用JSP标签或者脚本来生成页面上的动态内容;

    在服务器端JSP引擎解释JSP标签和脚本,生成所请求的内容,并且将结果以HTML或XML页面
    的形式发送回浏览器;

    这有助于作者保护自己的代码,并且保证了任何基于HTML的Web了浏览器的完全可用性;

    虽然JSP的实质是Servlet,但与Servlet相比,内容生成与表示相分离是JSP的一个优点,这是Servlet无法解决的;

    使用可重用组件。可重用组件是一个程序它可以为多个其它的程序使用;

    可移植性。JSP最重要的特点之一就是他用Java语言构建,是Java应用程序的一种;

    Java技术最鲜明的特点之一就是工作平台具有独立性;

    不管JSP在任何平台中编写,只要服务器中有JSP Container就可以使用原先编写的程序来运行;

    4.采用标签简化页面开发;

    5.完善的存储管理和安全性:由于JSP页面的内置脚本语言是基于Java语言的,而且所有的JSP页面都被编译成为Java
    Servlet,所以JSP页面就具有Java技术的所有优点,包括完善的存储管理和安全性;

    JSP技术并非单纯的JSP语法和几个JSP页面,而是一种涉及其他多种技术的综合技术,
    它包括HTML、Java、JavaScript、Servlet、JDBC等,它是一个较为庞大的知识体系,各种知识之间有一定的层次关系,

    6.Servlet技术是Java动态Web技术的基础,它使用Java书写的一种规范,是与平台无关
    的服务器端构件可以在支持Servlet的Web服务器或应用服务器上运行;
    JSP与Servlet有着极为密切的关系;
    实际上,Servlet是JSP的基础,对于Java虚拟机的编译机制只能识别符合Java语法的代码文件,
    而对于JSP文件是不可能由虚拟机直接编译的;Web服务器充当了JSP语言转换成Java代码的中间件,
    在客户端访问某一JSP页面的时候,Web服务器首先将此JSP文件转换成Servlet源码,再有虚拟机编译运行并返回相应的结果给客户端;
    所以说JSP在某种角度上来说就是Servlet,所有Servlet能做的事JSP一样可以处理;

    7.Servlet很适合来开发业务层,但是对于表示层的开发就很不方便,JSP则只要是为了描述表示层而设计的;
    JSP页面里面主要由以下元素构成:静态内容,表达式、Scriptlet、声明、动作、注释等等。
    静态内容:JSP静态内容就是页面中的静态文件,它基本上HTML文本,与Java和JSP语法无关;
    8.JSP指令:
    JS表达式:
    Scriptlet:Scriptlet是嵌套在页面里的一段Java代码,以<%代码%>,中间是Java代码,也被称为代码片段;
    JSP声明:用于定义JSP页面中的变量和方法,它以<%%>;
    JSP 动作:JSP动作允许在页面间转移控制权,JSP动作也有很多,它以"<jsp:动作名>"开始,以"</jsp:动作名>"结束;
    JSP注释:

    9.JSP页面的执行过程:
    首先客户端的浏览器向JSP页面发送一个请求,然后JSP引擎就将分析JSP文件的内容,JSP引擎会根据JSP文件的内容,创建临时的Servlet源代码,所产生的Servlet负责生成在设计时说明
    JSP页面的静态元素以及创建页面的动态元素;在编译JSP文件时如果发现有任何语法错误,转换过程将中断,并向客户端发出出错信息;如果编译成功,则转入下一步;将Servlet的源代码由java
    编译器编译成为.class二进制文件即Servlet类文件;然后,实例化Servlet,该Servlet被JSP引擎加载到内存中,此时JSP引擎调用Servlet的jspinit和jspService方法,并执行Servlet逻辑;
    接下来就是静态HTML和图形相结合,再与JSP页面定义中说明的动态元素结合在一起,通过Servlet响应对象的输出流传送到浏览器;
    从形式上看,JSP页面是一种文本文件,更像HTML文档,但是从Web应用和Web服务器的角度看,它是一种Servlet,因为它从本质上看是Servlet的一种扩展;
    在分析和编译JSP页面之后,会创建一个Servlet,此时开始Servlet的生命周期;
    在Servlet生命周期中,JSP引擎(Web容器)会记载和创建Servlet类的实例;调用jspinit方法以初始化Servlet类,调用jspService方法,并将请求和响应对象传递给jspService方法,调用jspDestory方你发以删除Jsp页面的Servlet;
    在执行JSp网页时,通常可分为转义时期和请求时期:
    翻译(转译)时期:JSP网页翻译成Servlet类;

    请求时期;Servlet类执行后响应结果至客户端;

    转译时期主要完成两件事情:将JSP页面转译为Servlet源代码,此段称为翻译时期;
                               将Servlet源代码(.java)编译成Servlet类(.class),此段称为编译时期;
                               当JSP网页在执行时,JSp容器会检查JSp页面是否更新修改,如果发现JSp网页有更新修改,Jsp容器会重新翻译jSP;ruguo JSP没有更新,就直接执行前面所产生的Servlet;
                               当JSP被翻译成Servlet时,内容主要包含三个方法:


    10.通过JSP技术,Web页面的技术开发人员可以使用HTML或者XML格式文档来设计和实现所要呈现的页面,并使用JSP标识或者小脚本来根据相应的请求来生成页面上的动态内容。由于JSP页面的内置脚本语言是基于Java的,而Tomcat在访问任何资源时都是在访问Servlet ,因此JSP 在本质上也是一种Servlet。因为JSP在第一次被访问时就会被编译成HTTPServlet的子类HTTPJSPPAge类,编译完成后在运行class文件来对浏览器所发送的请求进行响应。
    JSP代码可以分为两个部分:模板数据(即HTML代码)和元素(JSP页面中的Java代码、JSP指令、JSP标签)。JSP的脚本就是JSP页面中的Java代码,也称为scriptlet。JSP的脚本需要使用<% %>括起来,否则会被当成是模板数据的。JSP指令用来声明JSP页面的相关属性,如编码方式、文档类型等;语法:<%@指令 属性名 = “值”%>。JSP指令控制JSP编译器如何去生成Servlet;JSP动作是一系列可以调用内建于网络网络服务器中的功能的XML标签;JSP支持标签技术,要是用标签技术就先得声明标签库和标签前缀。taglib指令就是用来指明JSP页面内使用标签库技术。


     

    展开全文
  • Servlet技术总结

    千次阅读 2021-07-12 19:53:51
    什么是Servlet? Servlet 是运行在服务器上的一个 java 小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。 Servlet接口及其实现类 在Servlet接口中定义了5个抽象方法,具体如下表所示: 方法声明 ...
  • servlet特点

    千次阅读 2018-10-18 15:33:36
    servlet特点,生命周期 单实例 非线程安全的 性能高于多实例 比如统计访问人数 Integer i=0; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, ...
  • Servlet技术简介

    2021-04-09 19:25:57
    Servlet技术 Servlet规范是JavaEE规范中的一个部分,是用于扩展服务器功能的运行在服务器中的小型Java程序(即服务器端小应用程序),是实现了Servlet接口通过http接收和响应web客户端请求的类 静态和动态 因人因时...
  • servlet技术

    2016-11-16 19:46:52
    结合慕课网上的视频,对servlet技术总结
  • Servlet特点

    2015-11-03 09:59:00
    1、Servlet是一个供其他程序(Servlet引擎)调用的java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度 2、Servlet引擎是一种容器程序,它负责管理和维护所有Servlet对象的生命周期。Serlvet的加载,...
  • Servlet技术入门Servlet技术入门Servlet技术入门Servlet技术入门Servlet技术入门
  • JSP 网上订餐管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助servlet技术mvc框架,系统具有完整的源代码和数据库,开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言...
  • 详解JSP技术与Servlet技术

    千次阅读 2018-03-15 12:42:10
    什么是Servlet,使用Servlet的优点。 Servlet处理客户端请求的步骤。 JSP的优点。 JSP与Servlet的相同点与不同点。 JSP其他知识点。 什么是Servlet,使用Servlet的优点。 什么是ServletServlet是采用Java...
  • Servlet(Server Applet)是 Java Servlet 的简称,是使用 Java 语言编写的运行在服务器端的程序。具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。通常来说,Servlet 是指所有...
  • Servlet 是 Java 的一套技术标准,规定了如何使用 Java 来开发动态网站。换句话说,Java 可以用来开发网站后台,但是要提前定义好一套规范,并编写基础类库,这就是 Servlet 所做的事情。 Java Servlet 可以使用...
  • java Servlet技术·笔记

    千次阅读 2020-12-27 17:37:45
    Servlet技术简介 Servlet是一种独立于平台和协议的服务器端的java技术,可以用来动态的生成Web界面。Servlet具有非常好的可移植性、强大的功能、更少的投资、更高的效率、更好的安全性等特点 Servlet一般用来处理...
  • 本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 ...本文是微信公众号【Java技术江湖】的《走进JavaWeb技术世界》其中一篇,本文部分内容来源于网络,为了把本文主题...
  • 1、servlet体系结构 servlet实质就是按servlet规范编写的Java类,可以处理web应用中的相关请求。
  • Servlet技术

    2018-01-07 17:08:55
    Servlet技术 一、Servlet基础 Serlvet运行在Web服务器端的Java应用程序,它使用java语言编写,具有Java语言的优点。与Java程序的区别是,Servlet对象主要封装了对HTTP请求的处理,并且它的运行需要Servlet容器的...
  • 一、Spring MVC与Jsp/Servlet比较1、传统的 Jsp/Servlet 技术体系弊端2、Spring Web MVC 特点3、Spring MVC工作流程二、idea创建servlet项目1、搭建过程2、servlet的工作流程3、servlet的生命周期三、idea创建Spring...
  • Java Web程序设计笔记 • 【第5章 Servlet技术

    千次阅读 多人点赞 2021-03-06 16:53:09
    5.1 Servlet 技术介绍 5.1.1 为什么需要Servlet 5.1.1 Servlet 简介 5.1.2 Java Web 处理流程 5.1.3 Servlet 开发 5.1.4 Servlet 配置 5.1.5 实践练习 5.2 Servlet 流程 5.2.1 Servlet 运行原理 5.2.2 ...
  • javaEE servlet 学习笔记

    2018-05-07 22:38:29
    javaEE servlet 学习笔记 jsp本质上是servlet,但是为了更加符合mvc的框架,将页面显示和逻辑控制分离,jsp页面只负责页面,也就是mvc中的V(view),而servlet负责mvc中的C(control)。 而为了更加好的理解结构,一下...
  • 一.HttpSession对象的特点 二.HttpSession对象的创建 三.HttpSession对象的使用 四.HttpSession的销毁方式 五.通过HttpSession实现客户端与服务端会话的维持 六.HttpSession生命周期 七.HttpSession对象总结 ...
  • JSP与Servlet技术 一、Servlet 基础知识 Servlet 是 Java Web 应用程序中的组件技术,是运行在服务器端的 Java 应用程序,实现与 JSP 类似的功能。Servlet 本身是一个 Java 类,可以动态地扩展服务器的能力。Web ...
  • 重定向响应特点: 重定向会产生两次请求两次响应。 重定向的URL是由客户端浏览器发送的。 浏览器地址栏会有变化。 RedirectServlet.java: package com.first.servlet; import javax.servlet.ServletException; ...
  • Servlet--Servlet技术

    2015-02-12 11:30:44
    4.1Servlet基础 servlet是使用Java Servlet 接口(API)运行在Web应用服务器上的Java程序。与普通java程序不同,它是位于Web服务器内部的服务器端的Java应用程序,可以对Web浏览器或其他HTTP客户端程序发送的请求...
  • JavaWeb之Servlet技术

    2018-07-23 14:59:26
    servlet Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的...servlet的几个特点: 由服务器调用和执行 使用Java语言编写 按照serv...
  • 一、Servlet和JSP概述

    2021-01-08 21:56:36
    1.1 Java Servlet及其特点 Servlet是Java技术对CGI编程的回答。Servlet程序在服务器端运行,动态地生成Web页面。与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,...
  • JavaWeb之Servlet技术(二)

    2021-08-10 22:56:55
    Servlet就是sun公司开发动态web的一门技术 Sun在API中提供了一个接口:Servlet ,如果逆向开发一个Servlet程序,只需要完成两个小步骤 编写一个类,实现Servlet接口 把开发好的Java类部署到web服务器中 把实现...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,765
精华内容 21,906
关键字:

servlet技术特点