千锋教育-做有情怀、有良心、有品质的IT职业教育机构

400-811-9990
当前位置:首页 > 关于学院 > 技术论坛  >  正文

Java零基础学习之掌握JSP技术

时间:2018年03月21日 14:27:48     来源:千锋教育 作者:千锋

   一、Java初级开发之jsp概述

  1.关于jsp

  JavaServer Pages简称jsp,从“server”这个词可以看出,这其实也是一门java服务端技术,其实可以简单的把jsp认为是servlet,一点错也没有。Jsp的实质,就是客户端需要的资源是通过jsp技术动态生成的。

  2.jsp的技术原理

  1)当客户端在访问一个jsp资源时,服务器上有相应的servlet来负责jsp资源,那么该servlet将会把jsp页面翻译成一个servlet,然后执行该servlet的service方法。

  2)服务器将jsp翻译成java程序(就是一个Servlet),然后执行该Servlet的service方法,在方法内部动态地向客户端写html代码。

  因此jsp就是一个servlet,也就是jsp页面将被翻译成servlet

  3.jsp与servlet的选择

  jsp就是servlet,那么如果碰到需要写繁多的html代码,建议使用jsp,如果需要写繁多的java代码,建议使用servlet。

  二、JSP技术详解

  1.JSP脚本

  ​ 就是怎样在jsp页面中使用java代码,使用了脚本的地方,就不会作为输出流的内容,而是作为java代码来执行。使用方式有三种:

  1) <% java代码 %>

  jav代码会被作为程序的一部分来执行,而不会被翻译成out.write(),这是常用的。

  2) <% java代码 %>

  会被翻译成 out.print(java代码)

  3) <% java代码 %>

  声明成员变量。

  4)jsp的注释方式

  · html的注释:

  用户看得到,程序员也看得到

  · java的注释:// 单行注释 /多行注释/

  ​用户看不到,但是会被翻译

  · jsp的注释:

  ​用户看不到,不会被翻译,只有程序员在写jsp页面时才看得到。

  2.三大指令

  1)page指令

  page指令是用于告诉服务器该如何翻译此jsp页面。通过page指令的属性来指明翻译的效果。

  · language: 指的是jsp页面支持哪种语言,只支持java,所以该属性可以省略

  · pageEncoding和contentType写一个就行,建议使用pageEncoding,更加简单

  · session:默认值是true,默认情况下服务器会为该页面开辟一个session空间

  · import:用于导入该页面中的java类需要用到的包

  · errorPage:当发生错误时跳转到的资源,注意,该地址是一个服务器地址。

  · isErrorPage:默认值是false。当在web.xml中配置错误页面时,需要将该jsp页面的isErrorPage设为true.

  404

  /error.jsp

  ​

  总结:一般情况下,page指令就这么写即可:

  2)include指令:静态包含,file属性使用的是服务器地址。

  include指令是用于在一个jsp页面中包含另一个jsp页面,两个页面组合成一个页面发送给客户端。

  所谓的静态包含,在翻译时是把被包含的jsp页面写给客户端。那么此时客户端拿到的是两套html标签。

  3)taglib指令:标签库

  taglib指令用于引入第三方标签库,通过taglib指令中的prefix指明前缀,通过前缀来使用第三方标签库中的标签

  3.四大域对象 (jsp有四个,servlet有三个(request,session,servletContext))

  1) pageContext

  (1)pageContext作为域对象

  · 描述当前page的上下文。那么pageContext对象是一个域对象,所谓域对象,就是提供了一个区域,用来存储数据。因此当前的page就能向pageContext对象中存储数据.

  pageContext域对象的作用范围:当前page(页面)

  setAttribute(String key,Object value);

  getAttribute(String key);

  removeAttribute(String key);

  · 向其他域对象中操作数据.

  pageContext.setAttribute(String key,Object value, int scope);向其他域对象中存值

  pageContext.getAttribute(String key, int scope);向其他域对象中取值

  pageContext.removeAttribute(String key, int scope);向其他域对象中移除值

  int scope来自于PageContext类的常量

  REQUEST_SCOPE: 表示request域

  SESSION_SCOPE: 表示session域

  APPLICATION_SCOPE: 表示application域

  · findAttribute(String key):Object :这是通过键,向所有域中搜索数据。

  搜索的顺序:

  pageContext->request->session->application

  (2)可以通过pageContext对象来获取其他八个内置对象

  通过pageContext的get*()来获得。

  2)request

  作用范围:一次请求

  3)session

  作用范围:一次会话

  4)application

  作用范围:当前web应用

  4.九大内置对象

  所谓的内置对象,即在jsp页面的脚本中能直接使用的java对象。

  · out: 输出流

  当通过out的write()写内容时,实际是往out的缓冲区(默认大小是8kb)中去写,有两种情况导致缓冲区的内容会冲刷进底层的输出流中

  1)out对象被销毁

  2)out的缓冲区不够用了。其实我们可以设置out缓冲区的大小。如果缓冲区是0kb,那么out就把内容直接写到response缓冲区中。

  · page:this,表示当前的Servlet对象

  · pageContext:重点,表示当前page的上下文对象,也是一个域对象

  · session:当jsp页面的page指令的session属性为true时,才会有session对象

  · request:

  · response

  · exception 当jsp页面的page指令的isErrorPage属性为true时,才会有exception对象

  · application: 实际就是ServletContext对象

  · config:实际就是ServletConfig对象

  5.Jsp标签

  1) jsp:include

  动态包含:在一个页面中包含另一个页面的内容

  和静态的区别:

  ​ 静态包含会在翻译的过程中直接翻译被包含的页面,被包含的页面不会产生java文件。

  ​ 而动态包含会在翻译的过程中只翻译自己页面的内容,被包含的页面的翻译交给相应的类来完成,被包含的页面会产生java文件,实际开发中更加常用动态包含。

  2)jsp:forward

  请求转发,与servlet中的请求转发的效果一致。

  千锋java编程培训课程的授课模式采用全程面授,讲师成本虽高,但是效果却是显著的,和学员面对面沟通,了解到学员在学习过程中遇到的问题,动态地调整授课方式。及时有效地帮助学员解决疑难问题,提高学员的学习积极性。千锋官网每日更新最java基础知识内容,巩固日常学习中的基础技能。

相关文章

无相关信息
  • 北京天丰利校区(总部):北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术学院广场服务楼2层、南区服务楼2层
    咨询电话:400-186-9990 010-82790226-801
    面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、大数据开发培训、VR/AR混合现实培训、Python培训、Linux云计算培训、软件测试培训、Android培训、iOS培训、好程序员
  • 深圳西部硅谷校区地址:深圳市宝安区宝安大道5010号深圳西部硅谷A区B座605-619
    深圳大学城校区地址:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
    咨询电话:0755-33582485-801(硅谷校区)0755-86660670-801(大学城校区)
    面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、Android培训、iOS培训
  • 上海校区地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-627-7899 021-56166283/56166279
    面授课程:全栈HTML5+培训、UI交互设计培训、JavaEE+云数据培训、Android课程培训、iOS课程培训、好程序员
  • 郑州校区地址:郑州市二七区航海中路60号海为科技园C区10层、12层
    咨询电话:0371-55191750 400-186-9990
    面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 广州校区地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207 400-186-9990
    面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 大连校区地址:辽宁省大连市甘井子区软件园路2号东软信息学院B5座一楼
    咨询电话:0411-39026086 400-186-9990
    面授课程:全栈HTML5+培训、JavaEE+云数据培训、UI交互设计培训、Android课程培训、iOS课程培训
  • 武汉校区地址:武汉市光谷大道61号智慧园21号楼2层
    咨询电话:027-65523826
    面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 成都校区地址:成都市武侯区科华北路62号力宝大厦N(北楼)18楼
    咨询电话:028-83178771
    面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 西安校区地址:西安市雁塔区高新六路52号立人科技C座西区4楼
    咨询电话:029-85260160
    面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训
  • 杭州校区地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:0571-86893632 010-82790226-801
    面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 青岛校区地址:青岛市市北区龙城路卓越世纪中心3号楼8层
    咨询电话:0532-80911190 010-82790226-801
    面授课程:全栈HTML5+培训、UI交互设计培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 重庆校区地址:重庆市高新区科园一路2号大西洋国际12-1
    咨询电话:023-68883009
    面授课程:JavaEE+云数据课程培训
  • 长沙校区地址:湖南省长沙市岳麓区麓谷企业广场A2栋三单元306号
    咨询电话:400-186-9990
    面授课程:JavaEE+云数据课程培训
  • 哈尔滨校区地址:哈尔滨市松北区创新一路699号科技创新城19号楼五楼
    咨询电话:15663846969
    面授课程:全栈HTML5+培训
  • 千锋教育服务号

    了解千锋动态
    关注千锋教育服务号

  • 千锋教育移动站

    扫一扫快速进入
    千锋移动端页面

  • 千锋互联服务号

    扫码匿名提建议
    直达CEO信箱