JSP:全名是Java Server Pages,它是建立在Servlet规范之上的动态网页开发技术.在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示,Java代码用来实现网页中动态

内容的显示.JSP文件的扩展名为.JSP;

JSP技术所开发的Web应用程序是基于Java的,它可以用一种简捷而快速的方法从Java程序生成Web页面,使用上具有如下特征:

1:跨平台:由于JSP是基于Java语音的,它可以使用JavaAPI,所有它也是跨平台的,可以应用于不同的系统中,如Windows,Linux等.

2:业务代码相分离:在使用JSP技术开发Web应用时,可以将界面的开发与应用程序的开发分离开.

3:组件重用:JSP中可以使用JavaBean编写业务组件,也就是使用一个JavaBean类封装业务处理代码或者作为一个数据存储模型,在JSP页面中,甚至在整个项目中,都可以

重复使用这个JavaBean,同时,JavaBean也可以应用到其他Java应用程序中.

4.预编译:预编译就是在用户第一次通过浏览器访问JSP页面时,服务器将对JSP页面代码进行编译,并且仅执行一次编译.编译好的代码将被保存,在用户下一次访问时,

会直接执行编译好的代码.这样不仅节约了服务器的CPU资源,还大大的提升了客户端的访问速度.

原理解释:

1.jsp文件访问服务器的时候,就是访问服务器tomcat下的web.xml.

2.执行一个Servletorg.apache.jasper.servlet.jspServlet

3.这个Servlet将会把jsp转换成java文件.

4.在tomcat的\work\Catalina\localhost\e66_day38\org\apache\jsp 产生一个java文件.

5.将java文件编译成class.

6.相当于访问a_hello.jsp执行了一个class文件.

总结:jsp就是一个Servlet.

因为:1.jsp生成的类 ,继承extends prg.apache.jasper.runtime.HttpJspBase.

2.extends org.apache.jasper.runtime.HttpJspBase又继承了extends HttpServlet.

为什么有servlet还需要有jsp?

Servlet:可以在java里嵌套html代码(以java代码为主);

例如:response.getWriter().print();

Jsp:可以在html中嵌套java代码(主体是html);

例如:.

分工明确:各自实现自己的特点,业务代码相分离.

脚本元素:

作用:主要就是在jsp中嵌套java代码.

Java一共分为三类:

1.成员变量 声明方式 类体中.

2.局部变量 for循环 方法体中

3.参数 方法体中 并且 某一共括号中 service.findAll(username,password);

脚本 允许 方法体中的代码 最后被编译到service方法中.

输出 允许写参数 out.print(getUsername());

声明 成员变量 在类体中

例题:九九乘法表用表格的形式表示出来:

for(int x = 1 ; x <= 9 ; x++) {

out.print("

");

String s = "";

for(int y = 1 ; y <= x; y++) {

s = x + " * " + y + " = " + x*y + " ";

out.print("

");

out.print(s);

out.print("

");

}

out.print("

");

}

%>

脚本元素面试题:

2.输出5

3.成员变量+1 --> this.i=6

4.定义局部变量 i=10

5.输出成员变量 --> this.i

1.声明成员变量 --> this.i = 5

6.局部变量 +1 i=10;

7.输出 i=11

在java文件中是这样显示的.

public class test {

private i = 5;

public void show() {

System.out.println(this.i);

this.i++;

i = 10;

System.out.println(this.i);

i++;

System.out.println(i);

}

}

注释:

以后在写页面时,只用jsp注释.

语法:

page指令:是jsp转换成servlet的依据.

编码组:(重要)

pageEncoding:设置当前页面的编码(源文件);

contentType:设置响应流的编码;

缓存:(了解)

buffer:缓存的大小.

autoFlush : 是否自动刷新(如果缓存满了 刷新给浏览器)

out.print(任何数据类型)和System.out.println(任何数据类型");//都是输出的是一个字符串.所以一个字符占一个字节.

jsp的错误处理机制(了解) 每一个jsp都需要配置

errorPage: 指向一个专门处理错误的页面.

isErrorPage: 表示是不是错误处理页面.

Web中错误处理机制(扩展重要)

错误的代码 404

/404.jsp

异常的类型

/类型.jsp

其他:(了解)

session="true" 表示jsp页面可以直接使用session对象,只要是jsp需要支持session,第一次调用getSession.

第一次访问jsp的时候,底层会调用getSession()这个方法,session被创建.

language="java";

表示:jsp支持的语音.

impost=""

导入bao,alt+/

lnclude:静态包含.可以将另外一个页面引入进来

例如:

静态包含:在服务编译的时候,将两个页面生成一个Servlet,输出给浏览器.

动态包含(动态元素) : 在服务器编译的时候,生成两个Servlet,最后输出给浏览器时,会合并输出.

使用时:动态和静态没有区别,要注意,变量声明和使用问题.

Taglib:

导入标签库:将一些规范导入到jsp页面,uri指的是规范的路径,prefix:指的是别名.

在JSP页面中,有一些对象需要频繁使用,如果每次都重新创建这些对象则会非常麻烦.为了简化Web应用程序的开发,JSP2.0规范中提供了9个隐式(内置)对象,

它们是JSP默认创建的,可以直接在JSP页面中使用.

九大内置对象:

1.page 类型是Object 就是java中this对象.

2.config 类型ServletConfig.

3.application 类型ServletContext.

4.request

5.response

6.session

7.out ==>> getWriter()

8.exception

9.pageContext : 页面上下文根对象

九大内置对象-out:

//以后的开发 不能混搭使用

//out表示的jsp的输出流

out.print("a");

//手动刷新

//out.flush();

//response.getWriter().print("x");//Servlet的输出流

out.print("b");

//字符流和字节流不可以同时使用.

response.getOutputStream().print("xxxx");

九大内置对象--pageContext

pageContext:当前页面的上下文根对象.

作用:

1:可以获得其他八个内置对象,传递参数有用,调用一个方法(pageContext);

pageContext.getXxx()

2:简化四个操作

默认情况下 往page域中操作.

setAttribute(name,value);

getAttribute(name);

removeAttribute(name) 特殊记忆,默认没有指定域,删除所有域数据.

统一api

pageContext.setAttribute(name,value,int scope) 常量,写死不会发生变化的,人家可以直接调用

pageContext.getAttribute(name,scope);

pageContext.removeAttribuet(name,scope);

依次从四个域中获得数据:

pageContext.findAttribute("name");

取值的顺序:从小到大 page request session application.

以后在往域中放数据时,一般不会取相同的name名称.

域:

Servlet三个域对象:

Request Session ServletContext;

API:

SetAttribute(String name,Object value);

getAttribute(String name);

removeAttribute();

jsp的四个域对象:

pageContext request session application;

page域和page对象 没有关系:

SetAttribute(String name,Object value);

getAttribute(String name);

removeAttribute();

数据共享:

Page:只能当前页面共享数据(相当于成员变量);

Request:当前请求共享数据;

Session:当前会话共享数据;

Application:当前项目共享数据;

//表示设置value的值

Document.getElementById("id的值").value = "";

//表示

Document.getElementById("id的值").value = "";

//表示获得了所有的以"input"为标签开头的数组里面第一个索引的标签对象,并把这个标签设置成了"#ffo"颜色的背景色.

Document.getElementsByTagName("input")[0].style.backgroundColor="#ffo";

//表示获得了所有的属性name为"username"的数组里面的第一个索引的标签对象,并把这个标签对象设置成了"#ffo"

Document.getElementsByName("username")[0].style.backgroundColor="#ffo";

EL表达式:是一门语言,主要是用来获得域中数据.

EL表达式中内置了十一个对象,这些对象其实就是字符串.

四大域 4 表示四个域而不是表示page request ..对象

pageScope requestScope sessionScope applicationScope

${对象.key}用的很少

重点记${key} 以后开发中不会往每个域中设置相同的名称,底层对应的是pageContext.findAttribute()

请求参数 2

param paramValues

可以获得请求的参数,对应的api getParameter() getParameterValues()

请求头 2

header headerValues

可以获得请求头中的参数

初始化参数 1

initParam

可以获得web.xml中全局初始化参数

PageContext 1

对应的就是jsp中的pageContext对象

很重要:例如:${pageContext.request.contextPath}

(重要)Cookie 1

原始代码:new Cookie(name,value);

获得request.getCookies(),获得的是数组

再次请求的cookie以map形式保存,map的key是cookie名称,cookie的值=cookie的对象

案例:

${cookie}

${cookie.ns}

${cookie.ns.name }

${cookie.ns.value }

十一个对象,可以从不同的位置获得数据:

语法:

${对象.key} 或者${对象['key']} 主要用来处理特殊字符串.

例如:${param.username},${header['accept-encoding']}

{key=value,key=value} map集合

[L.......是数组 [........]list集合

算数运算符

${1}

${"1" + 1}

${'1' + 1}

\${"a" + 1}

${a + 1 }

pageContext.setAttribute("a", 18);

%>

${a + 1 }

${10/5}

${10/3}

${10 / 3}

逻辑运算符

${true && false}

${true || false}

${!true}

${not true}

关系运算符

${3 gt 2}

${3 lt 2}

${3 eq 2}

${3 == 2}

三元(目)运算符

三元的本质就是if

${3>2 ?"真的" : "假的"}

empty 关键字

1.字符串是否为空字符串 ""

2.集合的大小是否为0

3.对象是否为null(重点)

以后登陆是 数据存放到session中 目的:多个页面 在同一个会话可以共享数据

--%>

案例:

欢迎您,${user.username}登陆成功;

请登陆;

//模拟用户登陆数据

pageContext.setAttribute("user", new Person("jack","18","男"));

%>

${empty user} 为null

${not empty user} 不为null

if(登陆){

欢迎您xxx

}else{

游客你好 请登陆

}

varStatus:表示当前对象状态.

index表示:索引

count:表示计算,当前遍历的个数.

案例:

数组

String[] arr = {"a","b","c"};

pageContext.setAttribute("arr",arr);

%>

${xxx.index} @@ ${xxx.count} @@ ${a}

insert into 数据库底层其实用的都是字符串

所以:例如用date时,在JavaBean中改用String

普通遍历

for(int i = 1 ; i<=9 ; i++){

}

begin: 表示循环开始

end:表示循环结束

step:步进

var : 临时变量 但会将临时变量存到page域中

--%>

${i}*${j} =${i*j}

*/

ClassNotFoundException:表示找不到类,或者对类的操作有问题.

java jsp eq_javaWeb核心技术第九篇之JSP相关推荐

  1. JAVA WEB篇3——JSP

    JAVA WEB篇3--JSP 1.JSP是什么 JSP是Java Server Pages的简称,跟Servlet一样可以动态生成HTML响应, JSP文件命名为 xxx.jsp 与Servlet不 ...

  2. 名师讲坛——Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax)

    [书名]<名师讲坛--Java Web开发实战经典基础篇(JSP.Servlet.Struts.Ajax)> [作者]李兴华.王月清 [ISBN]9787302231585 ­}:YKf: ...

  3. JAVA知识积累 JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】...

    什么是JSP JSP全名为Java Server Pages,java服务器页面.JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在! 为什么需要JSP JSP是为了简化Servle ...

  4. JavaWeb核心技术系列教程(23)——JSP标签

    C语言自学完备手册(33篇) Android多分辨率适配框架 JavaWeb核心技术系列教程 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往--自定义View ...

  5. 今天给在家介绍一篇基于jsp的旅游网站设计与实现

    项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等.这里根据疫情当下,你 ...

  6. java web项目为什么我们要放弃jsp?

    前戏: 以前的项目大多数都是java程序猿又当爹又当妈,又搞前端(ajax/jquery/js/html/css等等),又搞后端(java/mysql/Oracle等等). 随着时代的发展,渐渐的许多 ...

  7. Java Web学习总结(13)——JSP入门

    2019独角兽企业重金招聘Python工程师标准>>> 一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发 ...

  8. Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之14.Servlet请求头信息

    –典型的请求头信息 –读取HTTP请求头 –使用表格显示所有请求头信息 –理解各种请求头的含义 –区分不同的浏览器类型 ##############Michael分割线################ ...

  9. java城市公交查询系统案例_013JAVA.JSP城市公交查询系统.zip

    [实例简介] 本人上传的资源大多是工作学习时的积累, 大部分上传的资源具有 源码+论文+答辩PPT+运行视频 四部分组成. 仅供学习参考,不得用于商业途径,希望能够帮助到大家,谢谢. [实例截图] [ ...

最新文章

  1. Caused by: java.lang.ClassNotFoundException: Didn't find class android.support.v4.view.ViewPager
  2. python解包操作_Python编程使用*解包和itertools.product()求笛卡尔积的方法
  3. Day4 python基础
  4. Linux学习:vim 的 3 种命令模式及基本操作
  5. 解决Maven工程中报 Missing artifact jdk.tools:jdk.tools
  6. 视觉里程计07 Qt的一些bug修改记录
  7. 没想到,这么简单的线程池用法,深藏这么多坑!
  8. 网页嵌入视频播放器代码大全
  9. 软件开发人员的能力模型
  10. 白云市场高仿包值不值得买?
  11. 计算机网络-什么是计算机网络?
  12. 利用matlab求解常数e,利用matlab软件求解常数e和欧拉常数γ.docx
  13. Moss 2007 入门(1) - 功能概述
  14. 数据库考试内容(MYSQL)
  15. tp5html的if判断,TP5 判断方法
  16. 第一周礼拜五 神借着祂的众仆人行事(下)
  17. 飞塔防火墙HA详解与配置
  18. 富士胶片3月底完成日立影像诊断业务收购;中国癌症早筛第一股诺辉健康登陆港交所 | 美通企业日报...
  19. Linux必学的60个命令(文字整理版)
  20. android 编程词典,基于Android的英文词典的实现方法

热门文章

  1. 北京工商大学计算机专业校友评价,北京工商大学英语校友返校聚会
  2. seo要学什么东西?
  3. 微型计算机系统实验总结(学习性实验:IO地址译码,可编程并行接口8255,交通灯控制实验 + 自主设计实验:汽车信号灯控制系统,电风扇控制器,洗衣机控制系统,霓虹灯,电梯控制系统)
  4. we8iso8859p1 java_jdbc连oracle数据库,输出到页面上是乱码,请问怎么解决?
  5. 手机点餐系统概述_电子菜谱点菜系统的系统概述
  6. Spark项目实战:飞机延误预测项目
  7. 在华为HG255D路由器上刷了OpenWRT,实现了多拨,下载速度超快
  8. 多伦多计算机科学排名,Times公布的计算机和工程专业排名,多伦多大学占两大榜首,最抢眼!...
  9. Lync Server 2013视频会议架构
  10. 【Linux项目】 --P2P下载器的详细介绍