JSP为什么会出现?出现的原因?

  ①因为在开发web网站时候,返现servlet做界面比较麻烦,于是出现了jsp。

  运行在服务端(Java server pages)基于servlet,对servlet进行包装。综合技术。

  原理:

  jsp其实是一种特殊的Servlet

    • 当jsp页面第一次被访问时,服务器会把jsp编译成java文件
    • 然后再把java编译成.class
    • 然后创建该类对象
    • 最后调用它的service()方法
    • 第二次请求同一jsp时,直接调用service()方法。

  组成:

  • sp = html + java脚本 + jsp标签(指令)
  • jsp中可直接使用的对象一共有9个,被称之为9大内置对象

  3种java脚本:

  <%! %>里声明的变量和方法都是作为类的属性和方法存在的 

<%! String name = "zjc"; %>
<%! public void show() {
System.out.print(name);
}%>

  <% %>里声明的变量则是作为_jspService这个方法的内部属性

  

<%if (count > 0){%>
<jsp:include page="test.jsp"></jsp:include>
<%}%>

  

  <%=…%>:用于输出,用于输出一条表达式(或变量)的结果。 

  

<div id="divtop">
<jsp:include page="<%=port.getF_link().trim() %>">
<jsp:param name="id" value="<%=id %>" />
<jsp:param name="skinid" value="<%=skinidStr %>"/>
<jsp:param name="width" value="<%=widthStr %>"/>
</jsp:include>
</div>

  

  jsp三大指令

  <%@ %>:这表示指令,主要用来提供整个jsp页面相关的信息,并且用来设定jsp页面的相关属性,例如网页的编码格式、语法、信息等。目前有三种指令:page、include、taglib。page指令是最复杂的jsp指令,它的主要功能为设定整个jsp页面的的属性和相关功能。include指令表示在jsp编译时引入一个文件包,这个引入过程是静态的,而引入的文件可以是jsp页面、html页面、文本文件或是一段java程序。taglib能让用户自定义新的标签。

  一:page指令:
  

1.指定页面编码.例:
 

 <%@ page language="java" contentType="text/html;charset=gbk" pageEncoding="gbk" %>
 

 2.导入包,例: https://blog.csdn.net/yeiweilan/article/details/69948491
 

 <%@ page import="java.util.*,java.text.*" %>.
 

 二:include 指令
 

 静态包含(统一编译):<%@ include file="included.jsp"%>
 

 三:taglib

  JSP 九大内置對象及四個作用域

  

  

舍弃原因:

1.无法做到真正的动静分离:动态资源和静态资源全部耦合在一起,服务器压力大,因为服务器会收到各种http请求,例如css的http请求,js的,图片的,动态代码的等等。一旦服务器出现状况,前后台一起玩完,用户体验极差。

2.出错率较高(因为页面中经常会出现大量的js代码),修改问题时需要双方协同开发,效率低下。

3.jsp必须要在支持java的web服务器里运行(例如tomcat等),无法使用nginx等(nginx据说单实例http并发高达5w,这个优势要用上),性能提不上来。

4.第一次请求jsp,必须要在web服务器中编译成servlet,第一次运行会较慢。

5.每次请求jsp都是访问servlet再用输出流输出的html页面,效率没有直接使用html高。

6.jsp内有较多标签和表达式,前端工程师在修改页面时会捉襟见肘,遇到很多痛点。

7.如果jsp中的内容很多,页面响应会很慢,因为是同步加载。

JSP从选择到放弃的更多相关文章

  1. 选择或者放弃MySQL的理由

    MySQL 作为一个开源数据库,自从被 Oracle 接管后,其发展前景就一直受到开发社区的关注,其中也有质疑,最近,两位开发者分别发表了选择和放弃MySQL 的理由,值得数据库相关人员参考. And ...

  2. jsp页面选择文件上传,获取不到绝对路径问题

    选择"D:\\temp\file\test.txt"文件,alert(filename)却是"C:\\fakepath\test.txt" 出现D:\\temp ...

  3. Servlet&jsp基础:第五部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. 如何设置jsp默认的编码为utf-8

    方法一: 文件里写: <%@ page contentType="text/html; charset=UTF-8"  %> 方法二: 选择window –> P ...

  5. 马士兵 Servlet_JSP(2) JSP源代码)

    1.最简单的JSP HelloWorld.jsp <html>     <head>         <title>Hello</title>     ...

  6. JavaWeb核心编程之(四.1)JSP

    JSP简介: JSP是简化Servlet编写的一种技术, 它将Java代码和HTML语句混合在一个文件中编写, 只对网页中药动态产生的内容采用Java代码来编写, 而对固定不变的静态内容采用普通的静态 ...

  7. JSP的学习(4)——中文乱码的解决

    本篇将以JSP页面中可能存在的中文乱码问题进行分析和解决. 中文乱码的问题一直是国人在编程过程中的一大头疼问题,这点上在JSP.Servlet或Tomcat上随处可见.比如我们在写一个Servlet时 ...

  8. jsp、freemarker、velocity区别详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt172 在java领域,表现层技术主要有三种:jsp.freemarker.v ...

  9. java 表现层:jsp、freemarker、velocity

    在java领域,表现层技术主要有三种:jsp.freemarker.velocity. jsp是大家最熟悉的技术 优点: 1.功能强大,可以写java代码 2.支持jsp标签(jsp tag) 3.支 ...

随机推荐

  1. Django和Flask相对总结目录

    Django中文文档官网:https://yiyibooks.cn/xx/Django_1.11.6/index.html Flask中文文档官网:https://dormousehole.readt ...

  2. KafkaProducer的整体逻辑

    概述 KafkaProducer是用户向kafka servers发送消息的客户端.官网上对producer的记载如下: Kafka所有的节点都可以应答metadata的请求,这些metadata中包 ...

  3. #p-complete原来比np更难

    转载一下豆瓣的一个不知名的朋友的介绍: NP是指多项式时间内验证其解是否正确.比如: 我们给一个0-1背包的解,就可以在多项式时间内验证是否满足条件.至于是否能找到 满足条件的解,这在NP复杂度里没有 ...

  4. 51Nod 和为k的连续区间

    一整数数列a1, a2, ... , an(有正有负),以及另一个整数k,求一个区间[i, j],(1 <= i <= j <= n),使得a[i] + ... + a[j] = k ...

  5. sys.path

    sys.path.append() 和 sys.path.insert() python程序中使用 import XXX 时,python解析器会在当前目录.已安装和第三方模块中搜索 xxx,如果都搜 ...

  6. 学习Go语言之使用channel避免竞态问题

    // 使用channel避免竞态问题 package main import ( "fmt" "sync" ) var ( i int wg sync.Wait ...

  7. win2003系统同步Linux ntp server批处理

    最后更新时间: 2018/12/15 一般windows配置时间服务器,只需要在windows系统右下角,点时间,里面配置好对应NTP服务器地址就行, 至多再修改一下注册表 HKEY_LOCAL_MA ...

  8. HttpService解析

    HttpServlet容器响应Web客户请求流程如下: 1)Web客户向Servlet容器发出Http请求: 2)Servlet容器解析Web客户的Http请求: 3)Servlet容器创建一个Htt ...

  9. Spring 容器(一)

    Source null instanceof Object 语法是正确的 Source定义得到输入流的方法 Resource继承Source,定义判断流是否存在.是否打开等方法 BaseResourc ...

  10. hdu 1695 GCD (欧拉函数、容斥原理)

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...