背后的魔术师----jsp

作为一名对技术充满热情的学习者,我一直以来都深刻地体会到知识的广度和深度。在这个不断演变的数字时代,我远非专家,而是一位不断追求进步的旅行者。通过这篇博客,我想分享我在某个领域的学习经验,与大家共同探讨、共同成长。请大家以开放的心态阅读,相信你们也会在这段知识之旅中找到启示。

文章目录

  • 前言
  • 一、什么是JSP?
  • 二、如何学习jsp:
  • 三.JSP基础知识
    • JSP脚本元素
    • 四.简单的基于jsp的小项目
    • 总结

      前言

      想象一下,你在一家餐厅(网站),有很多工作人员(不同的技术和组件)共同协作,以便为顾客(用户)提供一顿美妙的用餐体验。在这个餐厅中,JSP(JavaServerPages)就像是那些在厨房里做出美食的厨师。顾客通过菜单(浏览器)下单(发送请求),然后厨师根据菜单上的食物项(网页),使用各种食材和调料(数据),通过一系列烹饪步骤(服务器端处理)来准备食物(生成动态内容)。

      顾客坐在餐桌旁,不需要知道厨房里究竟发生了什么,他们只需要看到最终端上来的菜肴(最终的HTML页面)。厨师们使用各种烹饪工具(JSTL标签、自定义标签)来更高效地准备食物,这样做既保证了食物(网页内容)的质量,又简化了烹饪过程。厨师们的秘诀在于,他们不会在顾客面前准备这些食物,而是在厨房(服务器端)里完成这些工作,保持饭店(网站)的整洁和专业形象。

      各种精心制作的烹饪秘方(EL表达式)可以帮助厨师们更快地准备食物,例如,直接告诉他们:“给我一份牛排,附带蔬菜和土豆泥”来代替传统的食谱说明。这样,厨师们就可以避免繁杂的步骤,直接从仓库(应用程序数据)中获取原料,然后制作出顾客所需的菜肴。

      因此,JSP就像是背后的魔术师,让所有的请求像拉动魔法师的帽子一样,神奇地转换为含有丰富内容和功能的网页,而顾客无需知道其中的秘密,他们只需要享受这些按需定制的、即时呈现的网络“美食”。


      那就开始介绍一下这个几年前非常火爆的魔术师吧

      一、什么是JSP?

      JSP 是 JavaServer Pages 的缩写,它是一种用于开发动态网页的服务器端技术。JSP 允许开发人员在 HTML 页面中嵌入 Java 代码,通过使用特殊的 JSP 标签来实现,特别是 <% %> 脚本元素。

      当客户端(比如一个网络浏览器)请求 JSP 页面时,服务器处理这个 JSP 文件,执行其中嵌入的 Java 代码,并将结果转换成普通的 HTML,然后发送回客户端。JSP 使得网页内容可以动态地根据用户请求或数据源的数据而更改,而不是静态不变。

      二、如何学习jsp:

      对于新手小白来说,如何入门是个难题,对于jsp还是非常迷茫,不知道从哪里开始,那我就帮大家整理一下学习思路:

      1.学习Java基础:因为JSP基于Java语言,所以先要具备Java语言的基本知识,包括了解面向对象的概念以及Java的基本语法。

      2.学习HTML和CSS:因为JSP用于生成网页,所以需要了解如何编写HTML代码和使用CSS来进行网页布局和样式设计。

      3.学习Servlet:JSP在服务端运行,并且与Servlet技术紧密关联。学习Servlet将帮助你更好地理解JSP页面是如何运行的。

      4.直接学习JSP:

      • 学习JSP的基础知识,理解JSP的生命周期。
      • 学习在JSP页面中使用Java代码的基本规则。
      • 学习JSP标签库(Tag Library),这是JSP开发中常用的一个特性。

        5.学习JSP标准标签库(JSTL):JSTL是一个非常流行的标签库,它提供了一套用于常见任务的自定义标签,使得JSP代码更加简洁和易于维护。

        6.学习JSP表达式语言(EL):EL允许简化访问数据和其他的Java EE平台功能。

        三.JSP基础知识

        1.JSP概念和原理:

        • JSP是一种动态网页技术,它允许将Java代码嵌入到HTML页面中。
        • 了解JSP的工作原理,它是如何被编译为Servlet,以及如何处理客户端的请求和生成响应。

          2.JSP生命周期:

          • 初始化阶段:加载JSP并调用jspInit()方法进行初始化。
          • 处理请求阶段:对每个请求调用_jspService()方法处理请求并生成响应。
          • 销毁阶段:调用jspDestroy()方法进行清理工作.

            3.JSP指令(Directives):

            • <%@ page … %>:定义与整个页面相关的属性,如脚本语言、缓存需求、错误处理页面等。
            • <%@ include … %>:包含其他文件到当前JSP页面。
            • <%@ taglib … %>:声明使用的标签库,如JSTL。

              4.JSP脚本元素:

              • 脚本片断:<% … %>,用于声明变量和方法或编写任意Java代码。
              • 表达式:<%= … %>,用于输出变量或表达式到页面上。
              • 声明:<%! … %>,用于声明JSP页面中的变量和方法。

                5.JSP内置对象:

                • request:代表客户端的请求。
                • response:代表对客户端的响应。
                • session:代表用户的会话。
                • application:代表整个Web应用的环境。
                • 其他对象,如 out(用于输出响应到客户端),config,pageContext 等。

                  6.JSP注释:使用<%-- … --%>来添加不在客户端显示的注释。

                  7.JSP动作(Actions):

                  • jsp:include:在当前页面包含另一个页面的内容,与指令include的区别在于它是在请求时处理的。
                  • jsp:forward:将请求转发到另一个页面。
                  • jsp:param:用于给jsp:include和jsp:forward等动作标签传递参数。

                    8.错误处理:

                    • 创建错误页面,并使用page指令中的 errorPage 和 isErrorPage 属性来配置。

                      9.JSP表达式语言(EL)和JSTL:

                      • 学习使用EL简化对JavaBean属性、集合的访问。
                      • 使用JSTL标签库来实现循环、条件判断、国际化等。

                        10.JSP自定义标签:

                        • 创建自定义标签库并使用标签来简化JSP页面上的代码。

                          JSP脚本元素

                          JSP(JavaServer Pages)中的脚本元素主要有三种类型,它们提供了将Java代码嵌入到HTML页面中的能力。

                          1.脚本片断(Scriptlets):

                          语法:<% code %>

                          描述:脚本片断用于在JSP页面中嵌入任何有效的Java代码。这些代码在请求被处理时执行,并且可以访问JSP内置对象。

                          示例:

                          <% 
                                 String name = "张三";
                                 // 在页面中进行逻辑处理
                                 if(name != null) { out.println("Hello, " + name);
                                 }
                             %>

                          2.表达式(Expressions):

                          语法:<%= expression %>

                          描述:表达式用于在JSP页面中输出一个Java表达式的值。当页面请求处理到这一点时,表达式的结果被转换成字符串并直接嵌入到生成的HTML页面中。表达式中不需要包含分号。

                          示例:

                           Hello, <%= name %>!
                          

                          3.声明(Declarations):

                          语法:<%! declaration %>

                          描述:声明用于在JSP页面中定义变量或者方法。声明的代码被放置在转换后的Servlet类的类级别,因此在声明中定义的变量和方法可以被脚本片断和其他JSP页面结构所使用。

                          示例:

                           <%!
                                 // 声明一个方法
                                 public String getGreeting(String name) { return "Hello, " + name;
                                 }
                             %>

                          四.简单的基于jsp的小项目

                          例如:一个小型的个人博客系统,在这里用户可以查看博客列表。下面是如何用JSP和Servlet来实现这个功能的大致代码和结构说明

                          步骤1:创建项目结构

                          一个典型的JSP项目会包含至少两个主要的组件:JSP文件和一个Servlet。结构可能看起来像这样:

                          BlogProject
                          │
                          └───src
                          │   └───com
                          │       └───myblog
                          │           └───servlets
                          │               │   BlogServlet.java
                          │               
                          └───WebContent
                              │   index.jsp
                              └───WEB-INF
                                  │   web.xml
                          

                          步骤2:写Servlet处理逻辑 (BlogServlet.java)

                          package com.myblog.servlets;
                          import java.io.IOException;
                          import java.util.ArrayList;
                          import java.util.List;
                          import javax.servlet.ServletException;
                          import javax.servlet.http.HttpServlet;
                          import javax.servlet.http.HttpServletRequest;
                          import javax.servlet.http.HttpServletResponse;
                          // 这个Servlet用于模拟后端业务逻辑,它会把博客文章列表发送给JSP页面进行显示
                          public class BlogServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 模拟从数据库中获取数据
                                  List blogs = new ArrayList<>();
                                  blogs.add("欢迎来到我的博客!");
                                  blogs.add("JSP项目简介");
                                  blogs.add("今日技术分享");
                                  // 把获取的博客列表数据添加到请求中
                                  request.setAttribute("blogList", blogs);
                                  // 请求转发给JSP页面处理
                                  request.getRequestDispatcher("/index.jsp").forward(request, response);
                              }
                          }
                          

                          步骤3:编写web.xml配置Servlet (web.xml)

                            BlogServlet com.myblog.servlets.BlogServlet   BlogServlet /blog 

                          步骤4:创建JSP页面 (index.jsp)

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

                          个人博客列表

                            <%-- 使用JSP标准标签库(JSTL)来遍历显示博客列表 --%>
                          • ${blog}

                          在这个例子中,用户访问/blog URL时,BlogServlet会被触发。Servlet从模拟数据库中获取博客文章列表,然后把列表作为属性设置到请求对象中,并将请求转发给index.jsp页面。index.jsp页面使用JSP标准标签库(JSTL)来遍历列表,并显示每篇博客的标题。这里只是一个非常简单的示例,实际项目中通常会涉及到更复杂的逻辑和结构。


                          总结

                          关于jsp的知识我们介绍到这里,还有很多有关的问题我们后面会继续学习.希望大家可以从本篇博客中学会如何入门,对小白来说可能有了学习地方向不会害怕去接受新事物.

                          感谢大家抽出宝贵的时间来阅读博主的博客,新人博主,感谢大家关注点赞,祝大家未来的学习工作生活一帆风顺,加油!!!