JSP详解与实例

来源:互联网 发布:少儿编程 比尔盖茨 编辑:程序博客网 时间:2024/05/22 13:43

本文将对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动作时将当前页面跳转到另一个资源



1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 光盘放进电脑没反应怎么办 不服省高院裁定维持原判怎么办 咖啡和酒一起喝怎么办 跟法官联系不上怎么办 四维没有预约到怎么办 钥匙锁在车里怎么办 如果孩子很叛逆骂人打人怎么办 错过了今年规培怎么办 枣木怎么办才能搞直了 高中生和家里闹意见离家出走怎么办 校长信箱实名举报了怎么办 枣子吃多了胀气怎么办 红枣吃多了会怎么办 宁波南苑e家会员卡怎么办 宁波社保卡丢了怎么办 奶茶汉堡店经营不好改怎么办 军人保障卡丢了怎么办 军人保障卡丢失了怎么办 军人保障卡掉了怎么办 椎基底动脉供血不足怎么办 颈椎压迫神经脑供血不足怎么办 脑部基底动脉轻度狭窄怎么办 胸壁疼痛我该怎么办 厂房面积小于泄压面积怎么办 江苏海门农村自建房房产证怎么办 颈总动脉斑块形成怎么办 颈椎引起腔梗头晕怎么办 魅族手机变成英文怎么办 员工失去了工作乐趣怎么办 古墓丽影9出bug怎么办 气炉子打不着火怎么办 下面人员不参加公司拓展怎么办 重点班的差生怎么办 江苏考生选修考d怎么办 眼睛里有虫子该怎么办 屋里毛絮特别多怎么办 信用卡人员核核查单位地址怎么办 红米note电源键失灵怎么办 红米note4x跳屏怎么办 红米开机键坏了怎么办 红米note2开关键不灵敏怎么办