为什么要学JSP?学JSP有用吗?

猿友 2021-06-17 16:56:14 浏览数 (4360)
反馈

首先先介绍一下JSP是什么,JSP全称java server pages(java服务器页面)。它是一种动态网页技术标准,说简单点就是服务器用来动态生成HTML页面的。听着是不是很熟悉?没错,还有另一门语言专门从事动态生成HTML页面,这门语言叫PHP。

没有JSP的时代

在SUN公司刚开始做java web方面的设计的时候,他们设计了servlet来作为服务器应用处理请求和响应,通过动态输出HTML代码的方式来向用户范围HTML页面,如下图所示:

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html");
        // Hello
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>W3Cschool618有课程优惠啦快来看看吧</h1>");
        out.println("</body></html>");
    }

但是这种方法并不合理。首先,做过前端开发的小伙伴都知道,一个前端页面动辄几百行代码,如果像上图一样进行输出,后端程序员就得一直复制黏贴这些前端代码,一个​doGet()​ 方法里面将会有很多这样的代码,影响代码的整洁,容易扰乱程序员的逻辑,而且有些符号会被java编译器错误识别,这样的错误需要花费时间去调教(比如HTML文本中有双引号会导致字符串输出提前结束,后面的代码编译器编译不了,会抛出一堆错误)。这种在java代码里写html代码的方式饱受程序员诟病,恰逢PHP和ASP.Net的出现,他们使用更简单的方式来输出HTML代码(在HTML代码中嵌入响应语言来引入动态数据),很多程序员因此转而使用这两种语言,java也因此流失了一部分程序员。

JSP诞生

SUN公司在看到了PHP等语言的成功经历后也搞了一个类似的技术,就是接下来要介绍的JSP。JSP的设计理念与servlet截然相反,servlet是在java代码中输出HTML页面,而JSP则是在HTML代码中嵌入java代码。使用JSP之后web开发者就不用将HTML页面复制到servlet了,这样既减少了servlet的代码量,使代码更加简洁易懂,而且也不用担心html中的符号被Java编译器错误识别了(下方代码应为​.jsp​后缀)。

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSP - Hello World</title>
</head>
<body>
<h1>  <% out.println("Hello World!");%>
</h1>
<br/>
<h2>学习jsp,就到java编程狮</h2>
</body>
</html>

相比于PHP而言,JSP可谓是背靠java这种大山,因为JSP在编译时会被编译成servlet,所以本质上它也是servlet,是解决了servlet的HTML输出的servlet。因为是servlet,所以在性能上比PHP这种动态类型语言更加优秀,也具有更高的易用性。

JSP的衰落

随着Ajax的提出,使用Ajax来进行静态页面的动态数据渲染逐渐成为主流。因为不管是PHP还是servlet,他们生成页面的速度永远没有静态的Apache服务器派发静态页面的速度快,而一个页面往往需要渲染的数据只有一小部分,这时候聪明的开发者提出了一种新想法:先让Apache服务器派发一个静态的页面,然后这个静态页面通过Ajax请求向服务器获取这部分需要渲染的数据,然后在浏览器进行渲染。以往服务器要生成一整个HTML页面,现在只需要生成这部分数据并以指定格式返回即可,大大减小了服务器的压力。然后很多小伙伴们会发现,返回指定格式的数据用servlet就能轻易做到,而HTML静态页面直接用html文件存放在静态的Apache服务器上,JSP需要做的工作,没有了。没错,这种操作促进了前后端的分离,也导致了JSP的衰落。

小结

所以呢,学JSP有用吗?在没有前后端分离的年代里,学JSP可以降低你的代码量,让你的项目有更好的结构,但是现在JSP已经被淘汰了,所以可以不学JSP,不过作为后端的一种技术,了解一下JSP也是有好处的。

点击这里前往JSP学习手册


0 人点赞