JSP从选择到放弃
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从选择到放弃的更多相关文章
- 选择或者放弃MySQL的理由
		MySQL 作为一个开源数据库,自从被 Oracle 接管后,其发展前景就一直受到开发社区的关注,其中也有质疑,最近,两位开发者分别发表了选择和放弃MySQL 的理由,值得数据库相关人员参考. And ... 
- jsp页面选择文件上传,获取不到绝对路径问题
		选择"D:\\temp\file\test.txt"文件,alert(filename)却是"C:\\fakepath\test.txt" 出现D:\\temp ... 
- Servlet&jsp基础:第五部分
		声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ... 
- 如何设置jsp默认的编码为utf-8
		方法一: 文件里写: <%@ page contentType="text/html; charset=UTF-8" %> 方法二: 选择window –> P ... 
- 马士兵 Servlet_JSP(2) JSP源代码)
		1.最简单的JSP HelloWorld.jsp <html> <head> <title>Hello</title> ... 
- JavaWeb核心编程之(四.1)JSP
		JSP简介: JSP是简化Servlet编写的一种技术, 它将Java代码和HTML语句混合在一个文件中编写, 只对网页中药动态产生的内容采用Java代码来编写, 而对固定不变的静态内容采用普通的静态 ... 
- JSP的学习(4)——中文乱码的解决
		本篇将以JSP页面中可能存在的中文乱码问题进行分析和解决. 中文乱码的问题一直是国人在编程过程中的一大头疼问题,这点上在JSP.Servlet或Tomcat上随处可见.比如我们在写一个Servlet时 ... 
- jsp、freemarker、velocity区别详解
		详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt172 在java领域,表现层技术主要有三种:jsp.freemarker.v ... 
- java 表现层:jsp、freemarker、velocity
		在java领域,表现层技术主要有三种:jsp.freemarker.velocity. jsp是大家最熟悉的技术 优点: 1.功能强大,可以写java代码 2.支持jsp标签(jsp tag) 3.支 ... 
随机推荐
- python 3.x 学习笔记5  (装饰器)
			1.装饰器: 本质是函数,(装饰其他函数)就是为其他函数添加附加功能 原则: 1)不能修改被装饰的函数的源代码 2)不能修改被装饰的函数的调用方式 2.实现装饰器知识储备: 1)函数即“变量” 2)高 ... 
- svn回到某个历史版本的做法
			作者:朱金灿 来源:http://blog.csdn.net/clever101 一.在选中的文件上弹出svn的右键菜单,单击"Updateto revision"菜单项,如下图: ... 
- unbuntu禁用ipv6
			ubuntu禁用ipv6cat /proc/sys/net/ipv6/conf/all/disable_ipv6 显示0说明ipv6开启,1说明关闭 在 /etc/sysctl.conf 增加下面几行 ... 
- df 显示 100%的问题
			问题: 使用 df 命令查看,某个分区使用率已经达到100%,但是用du 命令统计该分区,发现该分区空间剩余10G可用. 实例: 分析: ... 
- ES6学习笔记(十三)Iterator遍历器和for...of循环
			1.概念 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有 ... 
- AtCoderBeginner091-C 2D Plane 2N Points 模拟问题
			题目链接:https://abc091.contest.atcoder.jp/tasks/arc092_a 题意 On a two-dimensional plane, there are N red ... 
- 【Codeforces Round #421 (Div. 2) A】Mister B and Book Reading
			[题目链接]:http://codeforces.com/contest/820/problem/A [题意] 每天看书能看v页; 且这个v每天能增加a; 但是v有上限v1; 然后每天还必须往回看t页 ... 
- docker安装cloudera manager,切换cloudera-scm用户报错can not open session
			在root帐号下su - cloudera-scm报错can not open session 在网上搜,大概是说ulimit超过限制之类,搞了很久才找到/etc/security/limits.d/ ... 
- [Python] Use a Python Generator to Crawl the Star Wars API
			In this lesson, you will be introduced to Python generators. You will see how a generator can replac ... 
- [Python] Pandas load DataFrames
			Create an empty Data frame with date index: import pandas as pd def test_run(): start_date='2017-11- ... 
