曾经风光无限的 JSP,为什么现在很少有人使用了?


曾经风光无限的 JSP,为什么现在很少有人使用了?

文章插图
来源 | 愚公要移山(ID:fdd_sxu_nwpu)
jsp技术作为曾经一度火爆的技术,在最近几年确实使用率越来越低了,这篇文章带你一块探究一下jsp的从生到死 。
jsp技术的诞生在很久很久以前,那时候我们的开发都是通过servlet来完成的,这个servlet是什么呢?我们先来认识一下:
servlet用JAVA语言编写的服务器端程序 。主要功能是和浏览器进行交互,生成页面展示 。
长下面这个样子:
public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter; out.println("<html>"); out.println("<head>"); out.println("<title>Hello World</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } }我们可以看到前端所展示的页面,需要我们servlet去一个标签一个标签去生成,如果一个页面超级复杂,动不动几千行代码,那这个servlet效率也就太低了 。而且整个servlet代码也会十分臃肿而且可读性非常差 。
这时候怎么办呢?sun公司很早就意识到了这个问题,于是便倡导很多公司一块来创建了一种能够动态生成html的新技术,不久之后jsp便诞生了 。有效率的解决了上面servlet所出现的问题 。
 
jsp的发展既然jsp技术能够解决刚刚servlet代码里面所出现的技术,我们来看一下是如何解决的:在这里我们举一个小例子,就是前端jsp向服务器servlet发送请求图书页面的功能 。
首先我们看一下servlet:
public class List_book extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //声明一个ArrayList.用来存放Book类中的数据 ArrayList<Book> list = new ArrayList<Book>; for(int i=0;i<10;i++){ Book book = new Book; book.setName(res.getString("name"+i)); book.setAuthor(res.getString("author"+i)); list.add(book); } //将list数据发送到.jap文件中 request.getRequestDispatcher("ListBook.jsp").forward(request, response); } }我们会发现,现在的servlet没有一点html代码了 。我们只需要把数据交给jsp 。此时我们的页面展示就交给jsp来做了 。现在我们来看一下jsp长什么样子:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath;%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="description" content="This is my page"> <script></script> </head> <body> <% ArrayList list = (ArrayList) request.getAttribute("list"); %> <h2 align = "center">图书列表</h2> <table border = 1px align = "center"> <tr><th>图书名称</th><th>图书作者</th></tr> <!-- 继续使用jsp语句 循环放入存放于list中的Book实体类中的数据 --> <% for(int i = 0;i<list.size;i++){ Book book =(Book) list.get(i);%> <tr><th><%=book.getName %></th><th><%=book.getAuthor%></th><tr> } %> </table> </body> </html>这就是jsp,我们可以在html页面中写一些java代码 。对于我们程序员来说,在开发当中静态的页面我们只需要用html和css写一些标签来展示即可,对于那些动态的部分我们就可以使用java代码 。
那么jsp和servlet是不是就是这种协作的关系,本质上有什么区别呢?
其实jsp只是servlet的一种特殊形式,每一个jsp页面就是一个servlet实例,通俗一点的话来说:jsp就是servlet,只不过servlet把一些业务功能剥离开来交给了或者是形成了jsp 。明白了吧 。在我们的项目编译的时候就是把jsp编译成了servlet 。


推荐阅读