最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何深入学习JSP?JSP学习方法|教程
时间:2022-11-14 23:25:29 编辑:袖梨 来源:一聚教程网
YPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.***w3.org/TR/REC-html40/loose.dtd">
YPE web-app>
常规JSP
JSP页面最终会由容器来生成Servlet类的,比如Tomcat容器生成JSP的Servlet类放在work目录里。因此在JSP里可以用很多简化的语法供容器使用,这篇就来整理一下。
JSP语法
scriptlet:
可以在里面写Java代码,如;
指令:
可以在页面转换时向容器给出特殊的指示;它有三个指令:page、include和taglib;而指令又有很多属性如import是page的属性:;
表达式:
表达式会成为out.println()或out.print()的参数,因此等价于;
声明:
是JSP转换成Servlet类的声明,因此可以声明类变量(静态变量)、实例变量、方法等;
注释:
就像Java代码中的注释一样,在把JSP转换成Servlet时会把注释去掉;
隐式对象
JSP的隐式对象不仅仅有out,还有一些其他的:
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out;
final java.lang.Object page = this;
final javax.servlet.http.HttpServletRequest request;
final javax.servlet.http.HttpServletResponse response;
JSP生成的Servlet
在Tomcat的work目录里我们可以看到由JSP生成的Servlet类,该类继承org.apache.jasper.runtime.HttpJspBase,其中有以下三个方法
_jspInit()
_jspDestroy()
_jspService()
他们分别由父类的init()、destroy()和service()方法调用;前面都带有"_"号,表明我们不能去覆盖他们,下划线的意思是“不要碰我!”.如我用的是Tomcat7,在JSP中:
int i=5;
}%>
会报异常:
org.apache.jasper.JasperException: Unable to compile class for JSP:
初始化JSP
通常,我们会把初始化参数分配给单独的servlet或JSP页面。这个指定的servlet或者JSP页面通过ServletConfig的 getInitParameter方法来读取这些参数。但在某些情况下,需要提供系统范围内的初始化参数,任何servlet或者JSP页面可以通过 ServletContext的getInitParameter方法来读取这些初始化参数。但并不推荐这样做,通常是使用MVC架构,在C中非常合适。
为JSP配置初始化参数是在
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.s***un.com/dtd/web-app_2_3.dtd" >
而index.jsp
Hello World!
但输出
Hello World!
null
null
38602359
38602359
可见并为取到JSP的初始化参数,但如果我在web.xml设置
这是为什么呢?没明白,先留着!
JSP属性
JSP比普通的Servlet多了一个作用域,共有4个作用域

而pageContext的setAttribute和getAttribute都有重载,就多了一个int类型的作用域设置
public static final int PAGE_SCOPE = 1;
public static final int REQUEST_SCOPE = 2;
public static final int SESSION_SCOPE = 3;
public static final int APPLICATION_SCOPE = 4;
只能取到相应的作用域的属性,但pageContext还有一个方法findAttribute,它从最严格的作用域查起,逐步转向不那么严格的作用域,也就是先在请求作用域查找,再查找会话作用域,最后查找应用作用域,只要在一个作用查到就停止。例如
Hello World!
pageContext:
session:
application:
request:
find:
输出
Hello World!
pageContext: null
session: null
application: null
request: kevin
find: kevin
page指令
page指令的属性有import、contentType、isThredSafe、Sessioin、buffer、autoflush、extends、info、errorpage、isErrorPage、language、pageEncoding等。格式:
import属性指定由Servlet导入的package。
isThreadSafe属性控制从JSP页中产生的Servlet是否将实现SingleThreadModel接口。isThreadSafe属性的使用采用以下两种格式之一,前者是缺省的:
session属性控制页面是否参与HTTP会话。
–缺省值true,表明页面将加入一个HTTPsession;
–设置为false,表明不会自动使用任何会话;
buffer属性指明JspWriter的缓冲区大小。buffer属性采用以下两种格式之一:
autoFlush属性配合输出缓冲区 buffer属性使用。控制输出缓冲区在装满时是否应该清除,或者当缓冲区溢出时是否应给出异常处理。
extends属性指定为JSP页生成的Servlet的超类。
info属性定义一个通过getServletInfo方法可以从Servlet中检索到的串。
isErrorpage属性指明当前页是否能充当其他JSP页面的错误页。缺省值为false。
errorpage属性指明如果抛出一个异常,而异常没有被捕获时,此错误处理所指向的URL。
contentType属性指明字符编码和JSP响应的MIME类型。contentType属性的缺省值为text/html ;charset属性的缺省值为 ISO-8859-1
pageEncoding属性定义了页的编码字符。除非指定page指令的contentType属性,否则缺省值为 ISO-8859-1。
language属性指定将要使用的程序设计语言。
无脚本JSP
使用scriptlet、表达式和声明不仅代码混了难以维护,而且不利于页面设计人员和服务器开发人员的分工合作,因此这里介绍EL(表达式语言)、标准动作和JSTL。
标准动作
JSP动作使用格式为:
相关文章
- 天国拯救2可攻略女性角色介绍说明 10-28
- 天国拯救2米兰套装获取方法攻略分享 10-28
- 天国拯救2炼金蒸馏操作方法介绍说明 10-28
- 燕云十六声周一舟聊天对话攻略分享 10-28
- 燕云十六声裴猫儿聊天对话攻略分享 10-28
- 燕云十六声万事知长生鹿仙人任务攻略 10-28