java–JSP

本文介绍了JSP的基本概念,包括JSP元素、输出、注释、方法及指令等内容,并详细讲解了page指令的各种属性,还涉及了JSP标签、内置对象及其配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


======================================================
注:本文源代码点此下载
======================================================

jsp看起来像html,其中html代码叫做模板数据,java scriptlet代码叫做jsp元素。

 

jsp是一种servlet,但与httpservlet的工作方式又不太一样。第一次访问jsp时,tomcat会先将jsp转为标准的java代码,然后将java代码编译为class文件,最后运行class,以后访问时,jsp不该动的情况下,会一直调用这个class。

 

看看转化过的jsp java类文件源码,可以发现,jsp和servlet基本没啥区别。

 

 

jsp标签

jsp脚本必须使用 括起来,语句必须遵循java语法。

 

jsp输出

在servlet中,输出语句是 out.println(),这里jsp中的等效语法是。

数字的乘阶是:

 

jsp注释

在jsp元素中,可以使用java的标准注释,也可以使用注释标

 

jsp方法

所有标签都会被原封不动的翻译为servlet中doget这样的方法中,在方法中是无法定义方法的。

而标签,可以方便的定义自己的方法,它会被翻译在默认方法外。

数字

 

jsp指令

jsp指令用来声明jsp页面的一些属性等,例如编码方式,文档类型。。。格式

 

    page指令

用来声明jsp页面的属性。

 

page指令的常见属性( jsp 2.1规范)

属 性 名 称

取 值 范 围

描        述

language

java

指明解释该jsp文件时采用的语言。一般为java,默认为java。

extends

任何类的全名

指明编译该jsp文件时继承哪个类。jsp为servlet,因此当指明继承普通类时需要实现servlet的init、destroy等方法。

import

任何包名,类名

引入包或类。与java中的import作用相同。一个import语句也可以引入多个类:

jsp中,以下四个包里的类可以直接使用:

java.lang.*;javax.servlet.*;javax.servlet.jsp.*;javax.servlet.http.*

session

true , false

指明该jsp是否内置session对象。默认为true,存储session对象

autoflush

true , false

是否运行缓存,默认为true,使用out.println()输出字符串,并不是立刻到达客户端,暂时存在缓存里,等待程序执行完毕或者out.flus(),字符才发送到客户端。

buffer

none 或者

xx(数字)kb

当autoflush为true时,制定缓存大小。例如:

isthreadsafe

true , false

是否线程安全。默认为false,如果为ture,则运行多个线程同时运行该jsp程序,否则只一个线程运行,其它线程等待。

iserrorpage

true , false

指定本jsp是否为错误处理页面。默认为false,如果为true,内置了一个exception对象exception,可以直接使用

errorpage

某个jsp页面的

相对路径

指明一个错误显示页面。如果该jsp抛出了一个未被捕捉的异常,则转到指定的页面。指定的页面通常iserrorpage为true。

contenttype

有效地文档类型

客户端浏览器根据该属性判断文档类型。例如:

html : text/html

纯文本格式 : text/plain

jpg : image/jpeg

gif : image/gif

word : application/msword

info

任意字符串

指明jsp信息。该信息可以通过 servlet.getservletinfo()方法得到。

trimdirective

whitespaces

true , false

是否去掉指令前后的空白字符。默认为false。

输出xml时,尽量设置为true吧。

 

    include指令

包含页面。

这里的include是静态引入,也就是说,tomcat会把引入的jsp编译为一个class,最后运行的事整合后的servlet。

            被引入的文件必须遵循jsp语法。

            被引入的文件可以使用任意的扩展名,即使其扩展名是html,jsp引擎也会按照处理jsp页面的方式处理它里面的内容,为了见明知意,jsp规范建议使用.jspf(jsp fragments)作为静态引入文件的扩展名。

            由于使用include指令将会涉及到2个jsp页面,并会把2个jsp翻译成一个servlet,所以这2个jsp页面的指令不能冲突(除了pageencoding和导包除外)。

 

jsp标签

jsp actions,有人叫标签,有人叫动作,有人叫行为,都是一回事。jsp标签就是对常用的jsp功能的抽象的封装,优点就是代码少,方便维护,代码美观。jsp标签有内置的标准标签,也可以自定义标签。这里只说说默认的标签。

 

    标签

不同于,属于动态包含,也就是不编译为一个class,而是在运行时分别获取运行结果然后包含,等同于页面包含了html,这段html这样跳转过去 request.getrequestdispatcher(“url”).forward(request,response) 。

//flush指明,在插入其他资源的输出内容时,是否先将当前jsp页面的已输出的内容刷新到客户端。

这里是正文

 

    标签

        标签

页面跳转,等同于 request.getrequestdispatcher(“url”).forward(request,response) 。是转发时携带的地址栏参数。

注意的是,转发前不能向浏览器输出内容,否则抛出illegalstateexception

 

    标签

        标签

        标签

顾名思义,使用javabean。格式是这样的:

id就是javabean的变量名,class是完整类名,scope是作用域,有四个作用域:

page    该jsp内有效

request   当前request内有效

session  当前会话(用户)有效

application   web应用内有效

setproperty就是设置属性

  beanid就是以声明的bean的变量名,property为属性,value是值。

  这里,是把request提交内容填充至bean,前提是这个bean必须有对应的属性。

getproperty是获取属性值

这个就不解释了。

 

jsp九大隐藏对象

out                --javax.servlet.jsp.jspwriter

request          --javax.servlet.servletrequest

response        --javax.servlet.servletresponse

config           --javax.servlet.servletconfig

session          --javax.servlet.http.httpsession

application     --javax.servlet.servletcontext

page              --javax.servlet.jsp.httpjsppage  这个就等于 this

pagecontext   --javax.servlet.jsp.pagecontext  这个很重要,它代表了jsp的运行环境,可以获得这上面所有对象

exception       --java.lang.exception

 

jsp配置

simplejspservlet

/jsp/simple.jsp

simplejspservlet

/xxx/yyy.html


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值