JSP技术

来源:互联网 发布:好用的相机软件 编辑:程序博客网 时间:2024/05/03 04:55

JSP文件在用户第一次请求时,会被编译成Servlet,后由这个Servlet处理用户的请求,所以JSP可看成是 运行时的Servlet,JSP与Servlet的区别如下:

Servlet主要在服务器上执行和解释浏览器的请求,承担客户端和其他应用程序之间的中间层的角色,将动态的内容混合到静态的内容中以产生HTML.

JSP页面在HTML元素中嵌入Java脚本代码和JSP标记,且把静态和动态的内容分离开来,实现了内容与表示的分离.

使用JSP,不需要单独配置没一个文件,只要扩展名为.jsp,JSP容器(同时也是Servlet容器)就会自动识别,将其转换为Servlet并为客户端提供服务.

1.JSP的运行机制:

step1.客户端请求JSP页面jsp-name.jsp

step2.JSP文件转换(translation)为Servlet的Java文件(jsp-name_jsp.java),转换阶段(translation phase)

step3.经过编译(javac)生成(jsp-name_jsp.class)class文件

step4.JSP容器(Servlet容器)执行请求,生成Servlet实例

step5.服务器返回响应结果

2.JSP的语法

指令元素(directive elements):page,include,taglib

指令元素主要用于为转换阶段提供这个JSP页面的相关信息,一般不产生任何输出.

<%@page contentType="text/html;charset=gb2312" language="java" import="importList" extends="className" session="true|false" buffer="none|sizekb" autoFlush="true|false" isThreadSafe="true|false" info="info_text" errorPage="error_url" isErrorPage="true|false" pageEncoding="peinfo" isELIgnored="true|false" %>

<%@include file="relativeURLspec"%>

<%@taglib uri="tagLibraryURI"|tagdir="tagDir" prefix="tagPrefix"%>

脚本元素(scripting elements)

脚本元素包括三个部分:声明,脚本段,表达式.JSP2.0新增加了EL表达式.

<%!this is a declaration%>//声明,例如<%!int i;%>

<%this is a scriptlet%>//脚本段,例如

<%

if(Calendar.getInstance().get(Calendar.AM_PM)==Calendar.AM)

{

%>

Good Morning!

<%

else{

%>

Good Afternoon!

<%

}

%>

<%=this is an expression%>//直接输入到页面中,例如<%=I love JSP very much!%>

动作元素(action elements)

动作元素为请求处理阶段提供信息,JSP2.0规范定义了一些标准的动作,标准动作是一些标签,它们影响JSP运行时的行为和对客户端请求的响应,这些动作由JSP容器来实现.

<jsp:useBean id="instance name" class="full package"/>

<jsp:setProperty name="instance" property="*">

<jsp:getProperty name="instance" property="property name">

<jsp:param name="name" value="value"/>

<jsp:include page="urlSpec" flush="true|false"/>

<jsp:forward page="relativeURLspec"/>

<jsp:plugin><jsp:params><jsp:fallback>

<jsp:element><jsp:attribute><jsp:body><jsp:text><jsp:output>

<jsp:invoke><jsp:doBody>

注释<!--HTML comments-->或者<%--JSP comments--%>

3.JSP的隐含对象

隐含对象           JSP隐含对象的类型

request              javax.servlet.http.HttpServletRequest

response          javax.servlet.http.HttpServletResponse

pageContext     javax.servlet.jsp.PageContext

session             javax.servlet.http.HttpSession

application        javax.servlet.ServletContext

out                      javax.servlet.jsp.JspWriter

config                javax.servlet.ServletConfig

page                  java.lang.Object

exception          java.lang.Throwable

经常用到pageContext对象,request对象,session对象及application对象的getAttribute()与setAttribute()来设置和获得对象的属性值,其作用范围由小到大.