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处理请求和响应
目录
相关文章
|
2月前
|
JavaScript Java
jsp使用
jsp使用
|
2月前
|
前端开发 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)等一起使用。
26 2
 jsp简单了解
|
7月前
|
Java 数据库
Jsp应用
Jsp应用
30 0
|
9月前
|
Java 容器
15JavaWeb基础 - JSP介绍
15JavaWeb基础 - JSP介绍
34 0
|
11月前
|
Java 应用服务中间件
jsp1
jsp1
27 0
【JSP】jsp的组成
在上一篇博客【jsp】为什么出现JSP?,讲了jsp出现的原因,接下来这篇博客,将向大家讲述jsp中都有哪些内容。
|
Java 数据库连接 API
使用jsp
使用jsp
110 0
|
Java
JSP 处理
JSP 处理
76 0
|
安全 Java 应用服务中间件
jsp
jsp
158 0
jsp
|
XML 开发框架 Java
jsp初识-2
jsp初识-2
96 0

热门文章

最新文章

  • 1
    流量控制系统,用正则表达式提取汉字
    25
  • 2
    Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
    26
  • 3
    Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
    26
  • 4
    Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
    27
  • 5
    S外部函数可以访问函数内部的变量的闭包-闭包最简单的用不了,闭包是内层函数+外层函数的变量,简称为函数套函数,外部函数可以访问函数内部的变量,存在函数套函数
    24
  • 6
    Redis06-Redis常用的命令,模糊的搜索查询往往会对服务器产生很大的压力,MSET k1 v1 k2 v2 k3 v3 添加,DEL是删除的意思,EXISTS age 可以用来查询是否有存在1
    30
  • 7
    Redis05数据结构介绍,数据结构介绍,官方网站中看到
    22
  • 8
    JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
    20
  • 9
    JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
    20
  • 10
    定义好变量,${age}模版字符串,对象可以放null,检验数据类型console.log(typeof str)
    19
  • 相关课程

    更多