JSP-概念

一、引子

很多读者可能听过JSP,并且知道这是一门过时的技术了。在Spring,SpringBoot已经成为主流的今天,笔者为什么还要介绍JSP的相关内容呢?笔者常常提到一个概念:理解一门技术,要理解这个技术为什么产生,是解决了当时的什么问题,这样能帮助我们将不断迭代的技术连贯起来。那么,JSP是为什么产生的呢,我们一直使用Servlet来完成JavaWeb的开发有何不妥?JSP又是为何过时的,或者说JSP又存在哪些缺陷?阅读完笔者这几篇关于JSP的文章,读者将会更加明白JavaWeb的技术更迭历程,对全局有一个更深的理解。让我们正式开始。

二、概念

JSP:Java Server Pages,Java服务端页面。是一种动态的网页技术,其中既可以定义HTML,JS,CSS等静态内容,又可以定义Java代码的动态内容。简单而言:JSP = HTML + Java。

三、再理解

为什么会产生JSP这门技术呢?我们知道,在JSP产生之前,我们一直使用原生的Servlet来进行Java Web的开发。(请读者阅读前置知识Servlet基本概念及相关文章。) 当我们需要展示一个HTML页面时,我们需要在Servlet页面中用PrintWriter不断写标签来达到拼成一个HTML页面的效果:

writer.write("")
writer.write("")
writer.write(username)
writer.write("")
writer.write("")

毫无疑问,这会使我们的代码可读性非常之差,而且难以维护。而JSP文件允许我们在文件中直接使用HTML标签,也可以直接使用Java代码,大大简化了开发。

四、快速使用

JSP的使用非常简单:

  1. 导入JSP坐标
  2. 编写HTML标签和Java代码

        
            javax.servlet.jsp
            jsp-api
            2.2
            provided
        


    hello jsp!


    

hello jsp~

<% out.println("hello jsp~"); %>

我们启动项目访问该jsp(放在webapp目录下,可以直接访问),页面上将会展示前端标签元素,控制台将会打印out.println里的话。

五、JSP原理

JSP的本质就是一个Servlet。JSP被访问时,由JSP容器(Tomcat)将其转换为Servlet类(Java文件),转换成的类最终是继承了HttpServlet抽象类的一个子类,类中包含一个_jspService()方法,这个可以理解成Servlet接口中定义的service()方法,是一个Servlet的主要逻辑方法。

六、JSP脚本

JSP脚本是指用于在JSP页面内定义的Java代码。脚本有以下几类:

  1. <%...%> 内容会放到_ jspService()方法内;
  2. <%=...%> 内容会放到out.println()中,会打印在客户端页面;
  3. <%!...%> 内容会放到_jspService()方法之外,直接被类包含,作为成员变量或成员方法。
七、使用JSP脚本实例
<%@ page import="com.byhuang.pojo.Brand" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>

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


    hello jsp!



    

hello jsp~

<% List brands = new ArrayList<>(); out.println("hello jsp~"); brands.add(new Brand("三只松鼠", "三只松鼠", 100, "三只松鼠,好吃不上火", 1)); brands.add(new Brand("优衣库", "优衣库", 10, "优衣库,舒服", 0)); brands.add(new Brand("小米", "小米", 1000, "小米", 1)); for (int i = 0; i < brands.size(); i++) { Brand brand = brands.get(i); %> <% if (brand.getStatus() == 1) { %> <% } else { %> <% } %> <% } %>
序号 品牌名称 企业名称 排序 状态 操作
<%=brand.getName()%> <%=brand.getEntName()%> <%=brand.getOrder()%> <%=brand.getRemark()%><%="启用"%><%="禁用"%>修改删除

展示结果如下:

JSP-概念_第1张图片

八、总结

从上面的示例代码中我们可以看出JSP的使用有诸多缺点:

  1. 书写麻烦,我们写一个简单的列表展示已经废了很大的力气了;
  2. 阅读困难,后期难以维护;
  3. 占用内存,由于.jsp文件会转换为.java文件与.class文件,占用磁盘;
  4. 不利于团队协作,前后端没有分离

针对以上问题,我们是否有解决手段呢?又是否会有新的技术迭代产生?请读者关注接下来的Java Web开发文章~

你可能感兴趣的:(java,开发语言)