JSP详解与实例
本文将对JSP进行概述,在详细讨论JSP页面中的注释,隐式对象以及三个句法元素:指令、脚本元素、动作JSP概述:第一次请求一个JSP页面时,Servlet/JSP容器要做两件事:1.将JSP页面转换成一个JSP页面实现类2.如果转换成功,Servlet/JSP容器将会编译Servlet类。容器加载和实例化java字节码,并执行它通常对Servlet所做的生命周期
本文将对JSP进行概述,在详细讨论JSP页面中的注释,隐式对象以及三个句法元素:指令、脚本元素、动作
JSP概述:
第一次请求一个JSP页面时,Servlet/JSP容器要做两件事:
1.将JSP页面转换成一个JSP页面实现类
2.如果转换成功,Servlet/JSP容器将会编译Servlet类。容器加载和实例化java字节码,并执行它通常对Servlet所做的生命周期
一、备注
JSP页面可以使用两种备注:
1、JSP备注
以<%-- --%>为备注,JSP备注不会被发送到浏览器,也不能进行嵌套
2、HTML/XHTML备注
<!-- -->为备注,该备注不是有容器处理,而是发送到浏览器
二、隐式对象
1、pageContext 提供了有用的context信息,并通过一些方法来访问与Servlet有关的各种对象
例如:getRequest, getResponse, getServletContext, getSession, getServletConfig
pageContext中的setAttribute方法:
void setAttribute (String name,Objext value,int scope)
scope可以是PAGE_SCOPE , REQUEST_SCOPE, SESSION_SCOPE, APPLICATION_SCOPE,
page 属性只能在同一个JSP页面使用,request是指当前的ServletRequest ,session是指当前的HttpSession ,application是指ServletContext
2、out 类似与HttpServletResponse中调用getWrite方法
3、另外还有request、response,session,application、config、page、exception隐式对象
例;
</head>
<body>
<b>Http headers:</b> <br>
<%
for(Enumeration<String> e=request.getHeaderNames();e.hasMoreElements();){
String header=e.nextElement();
out.println(header+":"+request.getHeader(header)+"<br/>");
}%>
<hr/>
<%
out.println("Buffer size:"+response.getBufferSize()+"<br>");
out.println("Session id:"+session.getId()+"<br>");
out.println("Servlet name:"+config.getServletName()+"<br>");
out.println("Server info"+application.getServerInfo());
%>
</body>
</html>
三、指令
1,page指令
语法如下:
<%@page attribute1=" value1" attribute2="value2" ...%>
page指令的属性列表:
import: import=“java.util.List.*” 多个类型用逗号隔开,*通式符可以导入整个包
session:值为true时,表明这个页面参与session管理,默认是true;值为false时,不参与Session管理
buffer:指定隐式对象out的缓冲区的大小,kb为单位
autoFlush:默认值为true,表示缓冲区为满时自动刷新输出,值为false时,只有调用response隐式对象的flush方法才会刷新,溢出时抛出异常
errorPage:表示处理可能出现的错误的页面
isErrorPage:表明这个页面是否处理错误
contentType:指定该页面response对象的内容类型,默认“text/html”
pageEncoding:指定该页面的字符编码
page指令可以出现在页面任何位置,只有当包含contextType,pageEncoding类型时,必须放在模板前面
2、include指令:
语法:<%@include file="url"%> url是表示一个文件的相对路径,如果以正斜线/开头,则表示绝对路径
可以将另一个文件的内容放在当前的jsp页面中
如:<%@include file="copyright.jspf"%> 为了使该指令成功,copyright.jspf必须放在同一个目录下
按照规范,include文件的拓展名为jspf,表示JSP fragment
四、脚本元素
1、java代码块
<% %>
2、表达式
<%= %>
3、声明
<%! public String getTodaysDate(){
return new java.util.Date();
}
%>
我们可以通过声明一个jspInit方法来覆盖实现类的init方法,声明一个jspDestroy方法来覆盖实现类的destroy方法
<%!
public void jspInit(){
}
public void jspDestroy(){
}
%>
五、动作
1,useBean
<jsp: useBean id="today" class="java.util.Date"/ >
<jsp: setProperty name="today" property="firstName" value="admin">
该动作在today对象中保存一个属性
2,include
<jsp:include page="menu.jsp">
include动作动态地包含另一个资源,可以包含另一个jsp页面,一个Servlet或者一个静态的html页面
include动作与include指令的区别:
include指令使用时是发生在页面转换的时候,使用include动作时时发生在请求时,include动作相当于请求转发
使用include指令时,被包含的资源的文件拓展名并不重要,而使用include动作时,文件拓展名必须为jsp
3、forward
<jsp: forward page="login.jsp">
forward动作时将当前页面跳转到另一个资源
更多推荐
所有评论(0)