从零开始学习Java Web(八):JSP脚本、指令

    首先,我们要了解,JSP最终会编译成为一个Servlet,可以这么理解:它每一行HTML代码编译后都会在response.getWriter().write("......")中。和Servlet一样,只实例化一次。生命周期方法为:jspInit()、_jspService()、jspDestroy()   


    JSP脚本一共有三种:

1、JSP 声明(<%! ... %>):用于定义实例变量或者实例方法,每个语句后面需要加分号

2、JSP Scriptlet(<% ...%>):用于定义局部变量。每个语句后面需要加分号

3、JSP 表达式(<%= ... %>):用于打印值,语句后面不能加分号

    例如:<%=user.getName();%>会转换成out.write(user.getName(););,无法通过编译。


    JSP指令也有三种:

1、page指令:

<%@page import="com.xxx.xxx"%>

2、taglib指令:用于引入标记库,这个放后面再详细说明

<%@ taglib tagdir="/WEB-INF/tags/xxx"%>

3、include指令:引入一个重复使用的JSP片段

<%@ include file="xxx.jsp"%>

这里主要讲page指令属性(13个)

常用的属性:

import:导包。默认有java.lang、javax.servlet、javax.serlvlet.http和javax.serlvet.jsp

contentType:就是设置response.setContentType的MIME类型值

errorPage:指向一个jsp URL,如果该jsp出现异常则会访问到指向的jsp

isErrorPage:默认值为false,如果其他的jsp使用errorPage指向当前的jsp,并且isErrorPage为true,则可以使用JSP exception隐式对象。

isELIgnored:默认为false,如果设置为true则表示忽略EL表达式

pageEncoding:定义编码格式。默认ISO-8859-1,除非contentType已经定义了编码格式。

不常用的属性:

language:目前可取值只有"java"

session:设置页面是否有隐式对象session。默认为true,包含。

buffer:指定缓存大小

autoFlush:是否自动刷新输出,默认为true

info:暂时没搞清楚这是干嘛的

谨慎使用的属性:

isThreadSafe:默认值为true,表明我这个jsp就是线程安全的,你别搞事情。如果设置为false,则该jsp生成的servlet每个请求都会将其实例化一次,很影响性能。

extends:JSP最终会变成servlet,这里就相当于继承。


最后说一句,在JSP开发过程中,一律不允许用JSP脚本,尽管使用脚本能实现我们想要的效果,但是,请使用标准动作或者是EL表达式代替它。当然,如果不是什么特殊的情况,EL是最好的选择了。


禁用脚本的方法:在web.xml中进行如下设置

<jsp-config>
	<jsp-property-group>
		<url-pattern>*.jsp</url-pattern>
		<scripting-invalid>true</scripting-invalid>
	</jsp-property-group>
</jsp-config>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值