javaweb——JSP

2023.10.23

使用纯粹Servlet开发web应用的缺陷

在Servlet当中编写HTML/CSS/JavaScript等前端代码:

  • java程序中编写前端代码,编写难度大。麻烦。

  • java程序中编写前端代码,显然程序的耦合度非常高。

  • java程序中编写前端代码,代码非常不美观。

  • java程序中编写前端代码,维护成本太高。(非常难于维护)

        修改小小的一个前端代码,只要有改动,就需要重新编译java代码,生成新的class文件,打一个新的war包,重新发布。

JSP

        JSP(Java Server Pages)是建立在Servlet规范之上的动态网页开发技术,其实质是一个简化的Servlet,在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用于实现网页中静态内容的显示,Java代码用于实现网页中动态内容的显示。

JSP是什么?

  • JSP实际上就是一个Servlet。

    • index_jsp 类继承 HttpJspBase,而HttpJspBase类继承的是HttpServlet。所以index_jsp类就是一个Servlet类。

    • jsp的生命周期和Servlet的生命周期完全相同。完全就是一个东西。没有任何区别。

    • jsp和servlet一样,都是单例的。(假单例)

    • JSP是java程序。(JSP本质还是一个Servlet)

    • Servlet是JavaEE的13个子规范之一,那么JSP也是JavaEE的13个子规范之一。

    • JSP是一套规范。所有的web容器/web服务器都是遵循这套规范的,都是按照这套规范进行的“翻译”

    • 每一个web容器/web服务器都会内置一个JSP翻译引擎。

JSP的执行流程

  1. 客户端向服务器发送请求,访问JSP页面。
  2. 服务器接到请求后检索对应的JSP页面,如果该JSP页面是第一次被请求,那么服务器会将此页面中的静态数据(HTML文本)和动态数据(Java元素)全部转化为Java代码,使JSP文件转换成一个Servlet类文件。在转换过程中,服务器若发现JSP文件中存在语法错误,则会中断转换过程,并向客户端返回出错信息。

  3. 服务器将转换后的Servlet源代码编译成字节码文件(.class),对于Tomcat服务器而言,生成的字节码文件默认存放在Tomcat安装目录的work目录下。

  4. 编译后的字节码文件被加载到内存中执行,并根据用户的请求生成HTML格式的响应内容。

  5. 服务器将响应内容发送回客户端。

JSP基础语法

  • JSP中直接编写普通字符串:

    • 翻译到service方法的out.write("这里")

  • <%%>

    • 翻译到service方法体内部,里面是一条一条的java语句。

  • <%! %>

    • 翻译到service方法之外。

  • <%= %>

    • 翻译到service方法体内部,翻译为:out.print();

  • <%@page contentType="text/html;charset=UTF-8"%>

    • page指令,通过contentType属性用来设置响应的内容类型。

  • JSP的专业注释

    • <%--   JSP的专业注释,不会被翻译到java源代码当中。 --%>

只用JSP这一个技术,能不能开发web应用?

        可以。因为JSP本质就是Servlet,在JSP的<%%>里面写的代码就是在service方法当中的,所以在<%%>当中完全可以编写JDBC代码,连接数据库,查询数据,也可以在这个方法当中编写业务逻辑代码,处理业务,都是可以的,所以使用单独的JSP开发web应用完全没问题。

        But不建议。建议采用servlet + jsp的方式进行开发。这样都能将各自的优点发挥出来。JSP负责做数据展示。Servlet负责数据的收集。(JSP中编写的Java代码越少越好。)一定要职责分明。

你可能感兴趣的:(Javaweb学习,java,javaweb,JSP)