01_JSP的概述&入门案例
JSP概述
全称是Java Server Pages,他和Servlet一样,也是Java所提供的一门用于开发动态WEB资源的技术,
JSP也是JavaEE的规范之一,JSP的底层其实就是Servlet。
JSP的特点
编写JSP就像编写HTML一样
JSP和HTML的区别
HTML只能向客户端提供静态数据
JSP技术允许我们在页面中嵌套Java代码,从而可以向客户端提供动态的数据

Servlet本身的缺点
1,每一个Servlet都需在web.xml进行配置
2,显示html元素的时候非常麻烦

jsp = html + java + jsp自身的东西 本质Servlet
   很久以前基本上开发全部都是用jsp 可读性非常(html里面加了java代码)
单纯的jsp页面不适合做这种大型项目

02_JSP的原理
一个JSP文件第一次被客户端访问时(也包括JSP文件修改后的第一次被访问),WEB服务器会把JSP文件翻译成一个Servlet,
客户端访问JSP文件,其实访问的就是JSP文件翻译后的Servlet,
JSP的底层原理其实就是Servlet。

谈谈对Servlet和jsp理解
jsp本质是一个Servlet,他的运行也需要容器(tomcat)支持
在jsp和Servlet文件中都可以编写java和html代码,不同的是
Servlet虽然可以动态的生成页面内容,但是更加偏向于逻辑的控制
jsp最终被转换成 Servlet 在jvm里面执行,在jsp里面虽然可以编写java代码,但是他更加偏向于页面内容的展示
在MVC架构模式中,C通常是由Servlet充当,V通常是由jsp充当

03_JSP默认编码设置
  window - preference -搜索jsp  把Encoding改成UTF-8
  
  <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
  是jsp本身的编码设置,contentType服务器端发给客户端的内容编码的设置(与response.setContentType("")作用是相同)
  pageEncoding 当前jsp页面本身的编码 
 
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  是告诉浏览器 生成的页面(这个页面是用来展示服务器发来的数据) 所使用的格式和编码,浏览器会根据此来调用相应的
字符集来显示网页内容
http-equiv类似我们http的头部协议,他回应浏览器一些有用的信息,以帮助浏览器正确和精确的显示网页内容

建议: 工作空间 项目 外加jsp页面 都设置成UTF-8

04_模版元素&脚本片段
模版元素
JSP页面中的HTML标签,CSS样式,以及JS都称之为JSP的模版元素,模版元素定义了页面的结构和外观,
JSP翻译后的Servlet中,模版元素会被输出流对象直接发送到客户端。
脚本片段
JSP页面中可以嵌套Java代码,Java代码要定义在JSP的脚本片段中,也就是<%%>里面,
JSP页面中可以有多个脚本片段,
多个脚本片段之间,可以嵌套文本,嵌套HTML的标签,嵌套其他的JSP元素。

注意: 不能在脚本片段里面定义方法,因为方法不能嵌套定义

模板元素其实就是页面上一堆的html代码
在html中添加java代码,java代码就是脚本片段

//两种方式
if(4>0){ 
<form>
用户名:<input type="text"/>
密码:<input type="password"/>
</form>

}

05_声明
在JSP页面里定义方法,定义成员变量等,<%! %>
 
注意:不能在声明里面写语句

平时也很少去定义成员变量 ,他是有线程安全问题 用处不大

06_脚本表达式
在JSP页面中将数据发送到客户端,替代JSP页面里的输出语句,
格式:<%=变量/常量/表达式%> //1 + 1

注意:在脚本表达式中不可以写分号

总结: 用syso输出的语句,都可以用脚本表达式输出

07_注释
HTML的注释:<!-- -->
Java代码的注释://,/**/
脚本片段的注释:<%-- --%>

注意:
HTML的注释:被注释的文本和代码,会翻译到Servlet中,然后发送到客户端
java的注释:被注释的文本和代码,会翻译到Servlet中,不会发送到客户端
jsp的注释: 被注释的文本和代码,不会翻译到Servlet中,不会发送到客户端

建议使用第三个 功能最强大 什么都可以注释,也不会翻译最后html中

语法:
模板元素: Html + css + js 对于模板元素,会被翻译到out.println(参数);
脚本片段;java 原样复制到翻译后的java文件里面,复制到service方法   <% %>
java声明;翻译到类中,方法外,成员的位置上,可以用来定义成员变量,成员方法<%! %>
脚本表达式:翻译到out.println(参数),注意不能有分号    <%= %>
注释:HTML的注释  java的注释 jsp的注释  <%-- --%>

08_指令的概述
指令概念
指令并不会直接产生任何可见的输出,作用是告诉WEB服务器如何处理JSP页面的其他部分。

指令的分类
page include taglib

基本格式
<%@ 指令名称 属性="值" %>分类
<%@ page contentType="text/html;charset=UTF-8" %>

如果一个指令有多个属性,可以把多个属性写在同一个指令中,也可以把多个属性分开来写
<%@ page contentType="text/html;charset=UTF-8" import="java.util.Date" %>

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page import="java.util.Date" %>

09_page指令的属性
page
用于定义JSP页面的各种属性,无论定义在JSP页面的哪个位置,所影响的都是整个JSP页面,
建议:将page指令定义在JSP页面的起始位置

属性:
contentType:设置响应的类型和编码
pageEncoding:设置JSP页面的编码,也设置JSP页面翻译成Servlet源文件的编码
import:导入JSP页面所需要使用的Java类
默认已经导入的类
java.lang.*;
javax.servlet.*;
javax.servlet.jsp.*;
javax.servlet.http.*;

导包 Alt + /  用 ctrl + shift + O 没有用的

10_page指令的其他属性
session:设置是否自动创建内置对象session,默认值是true
buffer:设置内置对象out的缓冲区大小,默认值是8k
autoFlush:设置内置对象out是否会自动刷新,默认值是true
extends:设置JSP翻译后的Servlet要继承哪个类,默认值是HttpJspBase
language:设置脚本语言,只有一个值就是java,java也是默认值
isThreadSafe:设置JSP是否是多线程,默认值是true SingleThreadModel

一个软件的默认值的设置,考经验得来的
刚开始,靠项目经理的经验设置
之后,通过压力测试,试运行,通过真实的用户数据 分析之后再做出优化 才去调整
贸然去改 会对系统造成很大的影响

页面输出4-5k
缓冲区设置成64K 占用的内存多,浪费资源
缓冲区设置成1k 一次缓冲不够存,就会频繁的刷新,效率比较低

注意:
默认是多线程 也就是jsp可以同时被多个客户端访问

11_JSP的异常处理机制
分类设置 
<error-page>
<exception-type>java.lang.ArithmeticException</exception-type>
<location>/error.jsp</location>
</error-page>

统一设置
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>

第一步: 在web.xml下增加一个error-page标签
第二步: 创建错误提示页面

404-我们正在加紧建设中!  
500-服务器忙,请稍后再试!

12_include指令&taglib指令
include (静态包含指令)
用于在JSP页面中包含其他的WEB资源,把多个WEB资源一起翻译到了一个Servlet中
属性:
file:设置要包含的WEB资源的路径
taglib
引入标签库
属性:
uri:设置引入标签库的路径
prefix:设置引入标签库的别名

13_JSP的九大内置对象
HttpServletRequest request 请求对象
HttpServletResponse response 响应对象
JspWriter out 输出流对象
HttpSession session 会话对象
Throwable exception 异常对象
ServletContext application 代表了整个WEB应用
ServletConfig config 配置参数,用于获取Servlet的配置参数
Object page Servlet的对象,方法中的this对象
PageContext pageContext JSP页面的上下文对象

好处:提高开发效率

14_PageContext的概述和测试
PageContext是JSP技术中最重要的一个对象,他代表了JSP页面的运行环境,
PageContext封装了其他八个内置对象,
PageContext也是一个域对象,可以用来保存数据,范围是当前页面,
PageContext提供了一些WEB开发的常用功能,比如转发和包含,还可以操作检索其他域对象中的数据。

注意:
一定要放对位置,把对象放到session里面 在 Context里面是找不到的

pageContext.findAttribute("username");会在4个域对象当中查找数据,顺序pageContext,request,session,application

pageContext 页面上下文 他其实就是相当于大管家
他包含所有的对象,但是他自己功能很弱
1,获取其他八个对象(用的很少,但是重要)
2,作为域对象存储数据(鸡肋)
  setAttribute(key,value);
  getAttribute();
  removeAttribute();
3,进行转发和包含(用的不多)
4,获取所有的4个域对象的数据(重要)
  setAttribute(key,value,int scope);
  getAttribute(key,int scope);
  removeAttribute(key,int scope);
  findAttribute(key )
  依次 pageContext,request,session,application查找

15_JSP的四大域对象
pageContext 当前页面
request 当前请求
session 整个会话
application 整个应用

------补充-----

16_jsp的动作标签
 作用: 简化<% %>的写法 
 常用的动作标签
<jsp:forward />:请求转发
<jsp:include />:页面包含(动态包含)

区别
动态包含是两个文件先编译执行,然后把执行结果包含在一起
静态包含是先将2个文件合并成为一个java文件,然后在编译,执行

动态包含只能包含jsp文件,静态包含可以包含任何文件(html,txt)

Jsp jsp实现原理相关推荐

  1. JSP/Servlet 工作原理

    Servlet Servlet Servlet 没有 main 方法,不能够独立的运行,它的运行需要容器的支持,Tomcat 是最常用的 JSP/Servlet 容器. Servlet 运行在 Ser ...

  2. 使用 sitemesh/decorator装饰器装饰jsp页面(原理及详细配置)

    摘要:首先这个Decorator解释一下这个单词:"装饰器",我觉得其实可以这样理解,他就像我们用到的Frame,他把每个页面共有的东西提炼了出来,也可能我们也会用各种各样的inc ...

  3. 什么是JSP,JSP的运行原理是什么?

    在动态Web项目的开发中,经常需要动态生成HTML.内容(如系统中的当前在线人数需要动态生成).如果使用Servlet实现HTML页面数据的统计,则需要使用大量的输出语句.同时,如果静态内容和动态内容 ...

  4. JSP起源、JSP的运行原理、JSP的执行过程

    JSP起源 在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变. 如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有的静态内容也需要程序员用Java程序 ...

  5. JSP/Servlet工作原理

    当客户端浏览器向服务器请求一个 Servlet 时,服务器收到该请求后,首先到容器中检索与请求匹配的 Servlet 实例是否已经存在. 若不存在,则 Servlet 容器负责加载并实例化出该类 Se ...

  6. JSP[jsp文件]

    目录 JSP介绍 JSP内置对象 JSP文件运行原理 EL表达式 JSP介绍 JSP文件不仅可以写HTML/CSS/JS语言,还可以写java命令 语法格式第一行:<%@ page conten ...

  7. java 进度条jsp,jsp进度条_jsp技巧

    开始页面:start.jsp 状态页面:status.jsp JSP进度条 setTimeout("location=status.jsp", 1000); JSP进度条 结果: ...

  8. JSP (一) ---[什么是JSP,JSP 与 Servlet 有什么区别]

    目录 什么是JSP JSP 与 servlet 有什么区别 早期的动态页面从servlet中输出的;(这里的动态页面指的是数据可以动态地从数据库中获取); 但是由于服务器响应页面编辑比较复杂; 所以引 ...

  9. 金蝶中间件AAS部署JSP项目报错: jsp: JSP编译错误: Invalid escape sequence (valid ones are \b \t \n \f \r \“

    问题现象如下图: 然后访问项目时,就会提示服务器内部错误. 具体报错信息: 2022-06-14 17:40:41 错误 [apusic.jsp.parser-HTTPHandler-5-47] Fi ...

  10. JSP的概念||原理||JSP的脚本||JSP的内置对象||response.getWriter()和out.write()的区别||案例:改造Cookie案例

    1. 概念 * Java Server Pages: java服务器端页面         * 可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码         * ...

最新文章

  1. 【swjtu】数据结构实验课程设计_图的关键路径
  2. 计算机在材料科学中的应用电子版,计算机在材料科学中的应用技术
  3. 【机器学习基础】数学推导+纯Python实现机器学习算法13:Lasso回归
  4. 探索.NET平台中的SIMD内在函数Vector
  5. 前端的c语言面试题,前端工程师面试题汇总(选择题)
  6. softlayer virtual machine vhd磁盘镜像导入shell脚本
  7. logistic regression一点理解
  8. Struts hibernate Spring 框架原理
  9. 批量添加后缀_掌握这 6 个批量处理技巧,少做 80% 的无用功!
  10. Integer 与 int 中的 ==
  11. Linux下俄罗斯方块程序设计(c++)-转
  12. node2vec: 图数据的嵌入方法
  13. 强化学习学习总结(二)——QLearning算法更新和思维决策
  14. 2010-03-24 网络驱动
  15. 计算机无法安装hp网络打印机,hp打印机驱动安装失败怎么办 hp打印机驱动安装失败的解决办法...
  16. 京东供应商协同平台 客户评价数据导出python
  17. 作用域和作用域链 精解
  18. 【数据处理与分析】matplotlib快速入门
  19. 刚才先入为主到了令人发指的地步
  20. 猫猫回收站教程:在线撸猫~

热门文章

  1. cocos2d 物理平抛,斜抛运动
  2. LFS8.0完全安装搭建制作教程
  3. Java图书管理系统登陆界面
  4. c# 通过查看注册表的方式来判断电脑安装office的版本
  5. 中标麒麟V7系统开启日志服务器收集日志
  6. SpringBoot 检索篇 - 整合 Elasticsearch7.6.2
  7. Apache与Tomcat有什么关系和区别
  8. Linux安装Tomcat完整步骤
  9. 透明OLED显示器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. sha1 file ‘<stdout>‘ write error: Broken pipe