JSP是什么

简介: JSP是什么

一.JSP简介:

  • JSP(全称JavaServer Pages),JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。
  • 简单来说:JSP是一个模版引擎,它简化了开发,封装了servlet响应html标签的繁琐代码。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
    JSP就是一种特殊的servlet.

二.tomcat响应jsp给客户端的原理

tomcat服务器与客户端是两个不同的程序,端口号也不一样,服务器响应请求之后发送数据到客户端只能通过response对象去处理。response对象是servlet中方法的参数。

服务器自动做了一些事情:

  1. 为每个jsp生成一个servlet(即生成xxx_jsp.java文件,并把java文件编译为字节码文件xxx_jsp.class).
  2. 在生成的servlet中会有一个response对象,默默的用response.getWriter().write(“html标签”)方法生成html标签。
    证明上述说法:
    如下图的jsp文件:
    在这里插入图片描述
    在这里插入图片描述
    服务器会在tomcat目录下的work/Catalina/localhost/ROOT/org/apache/jsp/中生成.java文件(本人使用mac):
    在这里插入图片描述
    查看index_jsp.java文件部分代码:

      out.write("deployer-howto.html\">Deployer</a></li>\n");
      out.write("                        </ul>\n");
      out.write("                    </div>\n");
      out.write("                </div>\n");
      out.write("                <div class=\"col20\">\n");
      out.write("                    <div class=\"container\">\n");
      out.write("                        <h4>Get Involved</h4>\n");
      out.write("                        <ul>\n");
      out.write("                            <li><a href=\"");
      out.write((String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${tomcatUrl}", String.class, (PageContext)_jspx_page_context, null));
      out.write("getinvolved.html\">Overview</a></li>\n");
      out.write("                            <li><a href=\"");
      out.write((String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${tomcatUrl}", String.class, (PageContext)_jspx_page_context, null));
      out.write("source.html\">Source Repositories</a></li>\n");
      out.write("                            <li><a href=\"");
      out.write((String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${tomcatUrl}", String.class, (PageContext)_jspx_page_context, null));
      out.write("lists.html\">Mailing Lists</a></li>\n");
      out.write("                            <li><a href=\"https://wiki.apache.org/tomcat/FrontPage\">Wiki</a></li>\n");
      out.write("                        </ul>\n");
      out.write("                    </div>\n");
      out.write("                </div>\n");
      out.write("                <div class=\"col20\">\n");
      out.write("                    <div class=\"container\">\n");
      out.write("                        <h4>Miscellaneous</h4>\n");
      out.write("                        <ul>\n");
      out.write("                            <li><a href=\"");
      out.write((String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${tomcatUrl}", String.class, (PageContext)_jspx_page_context, null));
      out.write("contact.html\">Contact</a></li>\n");
      out.write("                            <li><a href=\"");
      out.write((String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${tomcatUrl}", String.class, (PageContext)_jspx_page_context, null));
     

可以看到部分代码段中有很多地方使用write方法向客户端传输html标签。
证毕

三.JSP三大指令

page 用于声明jsp : jsp=html+page指令 contentType=“text/html;charset=UTF-8” 指定jsp文件的mime类型和字符集import=“java.util.*” 为jsp的脚本中的Java代码去导包errorPage=“500.jsp” 如果当前页面发生异常,就跳转到500.jsp中isErrorPage=“true” 承认自己是不是错误处理页面,如果为true就可以使用exception内置对象
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="error.jsp" %>
include 静态包含,一个jsp页面可以包含另一个jsp页面 静态包含 – 两个jsp之间使用静态包含,会被tomcat服务器编译成一个servlet,可以实现脚本互通
<%@ include file = "a.jsp" %>
taglib 用于导入外部资源标签库,jstl 引入外部标签库,通常用于引入jstl标签

四.九个内置对象

1.域对象(4个)

pageContextrequestsessionapplication
//最小的域对象,仅限于当前页面
pageContext.setAttribute("name","李白");
//request域对象,使用范围限于转发之间的页面
request.setAttribute("name","韩信");
//session域对象,范围是一次会话,浏览器或服务器不关闭称为一次会话,该工程下的任何jsp页面都可以取到
session.setAttribute("name","孙尚香");
//application域对象,范围最大,只要服务器不关,那么存的值一直有效
application.setAttribute("name","马可波罗");

2.其它对象

responseoutpageexceptionconfig

五.JSP发展史和mvc

JavaWeb发展史

只有servlet,如果响应动态资源,必须使用response.writer()去输出大量的标签jsp出生和繁荣,完全依赖jsp,省略了servlet,优点:便于开发,缺点:耦合度高,代码非常不清晰mvc模式,jsp和servlet共存,jsp中只有少量的java代码,主要还是用于页面展示,核心功能放在servlet中

MVC

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

m:model 模型层,泛指service层,dao层和javaBean实体类v:view 视图层,使用jsp展示数据c:controller 控制层,使用servlet处理请求和响应
目录
相关文章
|
6月前
|
JavaScript Java
jsp使用
jsp使用
|
6月前
|
前端开发 JavaScript Java
jsp简单了解
JSP(Java Server Pages)是一种用于开发动态Web应用程序的Java技术。它允许将Java代码嵌入到HTML页面中,以生成动态内容。在服务器上运行时,JSP会被编译成Java Servlet,并在每个请求时动态生成页面内容。JSP提供了丰富的标签和API,用于访问数据库、处理表单数据、进行条件判断和循环等常见操作。它是Java EE(现在被称为Jakarta EE)的一部分,可以与Java Servlet、JavaBeans、Java标准标签库(JSTL)等一起使用。
42 2
 jsp简单了解
|
11月前
|
存储 Java Apache
Jsp相关介绍
Jsp相关介绍
80 0
|
11月前
|
Java 数据库
Jsp应用
Jsp应用
53 0
|
存储 Java 应用服务中间件
JSP详解
JSP详解
【jsp】为什么出现JSP?
【jsp】为什么出现JSP?
【JSP】jsp的组成
在上一篇博客【jsp】为什么出现JSP?,讲了jsp出现的原因,接下来这篇博客,将向大家讲述jsp中都有哪些内容。
|
Java 应用服务中间件 Apache
JSP
JSP
75 0
|
Java
jsp处理
jsp处理
110 0
|
Java 数据库连接 API
使用jsp
使用jsp
125 0