jsp基本语法总结

一,用jsp脚本元素调用java代码

1,jsp表达式的应用

jsp表达式将值直接插入到输出中:

<%= Java Expression %>     代表一个值

隐式对象,在使用jsp表达式的时候:

<%= request.getParameter("testParam") %>

<%= session.getId() %>

<%= application.getServerInfo() %>

request,session,application都是隐式对象

XML程序设计者可以使用下列的语法替代jsp表达式

<jsp:expression>Java Expression</jsp:expression>

2,编写scriptlet(有效java代码段)

<% Java Code %>

可以完成单独使用表达式不能完成的任务,例如设置响应报头和状态,循环语句等

XML形式:

<jsp:scriptlet>Java Code</jsp:scriptlet>

1)一个示例:

<%
String bgColor = request.getParameter("bgColor");
if ((bgColor ==null) || (bgColor.trim().equals(""))) {
bgColor ="WHITE";
}
%>

2)使用scriptlet将jsp页面的某些部分条件话

//用一个随机数将输出条件话
//html语句和java代码穿插混合,java语句用<% %>包含起来!!

<%if (Math.random() <0.5) { %>
<H1>Have a <I>nice</I> day!</H1>
<% } else { %>
<H1>Have a <I>lousy</I> day!</H1>
<% } %>

可以看出,这样的使用方式不利于代码的阅读,一般只将少量java代码与html代码混合,否则可读性不好。

3,使用声明

<%! Field or Method Definition %>

jsp声明可以将方法或字段的定义放在servlet类定义之中,_jspService方法之外!!!

以下列一小段jsp片段为例,

1 <H1>Some Heading</H1>
2  //jsp声明
3  <%!
4 private String randomHeading() {
5  return("<H2>"+ Math.random() +"</H2>");
6 }
7  %>
8  <%= randomHeading() %>

这段jsp生成的servlet就可能会是下列片段:(注意jsp转化为servlet后声明的位置--servlet类定义之中,_jspService方法之外)

1 public class xxxx implements HttpJspPage {
2
3  //jsp生成servlet后声明的位置
4  private String randomHeading() {
5  return("<H2>"+ Math.random() +"</H2>");
6 }
7
8  //servlet的输出在此方法执行
9  public void _jspService(HttpServletRequest request,
10 HttpServletResponse response)
11 throws ServletException, IOException {
12 response.setContentType("text/html");
13 HttpSession session = request.getSession();
14 JspWriter out = response.getWriter();
15 out.println("<H1>Some Heading</H1>");
16 out.println(randomHeading());//可以在此调用上述声明
17  ...
18 }
19 ...
20 }

XML形式:

<jsp:declaration>Field or Method Definition</jsp:declaration>

声明的例子:

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2  <HTML>
3  <HEAD>
4  <TITLE>JSP Declarations</TITLE>
5  <LINK REL=STYLESHEET
6 HREF="JSP-Styles.css"
7 TYPE="text/css">
8  </HEAD>
9  <BODY>
10  <H1>JSP Declarations</H1>
11  <%! private int accessCount =0; %>//声明,不必声明为static
12  <H2>Accesses to page since server reboot:
13  <%=++accessCount %></H2>
14  </BODY></HTML>

客户对同一servlet的多个请求只会产生多个线程,每一个线程调用单一servlet的service方法,因此上述不用声明为static,每次访问共享变量

二,控制所生成的servlet的结构:jsp page指令

jsp指令影响由jsp页面生成的servlet的整体结构。

在jsp中,主要有三种类型的指令:page,include,taglib

page指令可以放在文档的任何地方,鱼讯我们通过类的导入,servlet超类的定制,内容类型的设定以及诸如此类的事务来控制servlet的结构。

include指令应该放置在文档中希望插入文件的地方

taglib定义自定义的标记标签,将在第二册高级技术里面讲解

这一章来看page指令:

page指定可以定义下面这些属性(按使用频度高低):import, contentType,pageEncoding, session, isELIgnored (JSP 2.0 only), buffer, autoFlush,info, errorPage, isErrorPage, isThreadSafe, language, extends

1,import属性

指定jsp页面转换成servlet应该输入的包()

<%@ page import="package.class1,...,package.classN" %>

import是page的属性中唯一可以在同一文档中多次出现的属性。

2,contentType属性和pageEncoding属性

contentType属性设置content-Type响应报头,标明发送到客户程序的文档的MIME类型

<%@ page contentType="MIME-Type" %>

例如:<%@ page contentType="application/vnd.ms-excel" %>

同样的,用下列方法也可以设置MIME类型:<% response.setContentType("application/vnd.ms-excel"); %>

两者是有区别的,前者只用到jsp语法,而后者用到明确的java代码;另外后者能够有条件的执行,而page指令不行(response.setContentType作为java语句可以放在条件中,根据条件来决定设置什么样的mime类型)

pageEncoding属性设置字符集;

3,session属性

控制页面是否参与HTTP会话:

<%@ page session="true" %>      <%-- 默认情况是参与 --%>

<%@ page session="false" %>

对于高流量网站,使用session属性可以节省大量的服务器内存。

4,isELIgnored属性

是否忽略jsp2.0表达式语言(jsp2.0 引入一种间接地表达式语言,后面将介绍)

<%@ page isELIgnored="false" %>

<%@ page isELIgnored="true" %>

5,buffer和autoFlush属性

buffer属性指定out变量使用的缓冲区大小:

<%@ page buffer="32kb" %>

<%@ page buffer="none" %>

aotoFlush属性控制当缓冲区充满之后,应该自动清空缓冲区(默认)还是在缓冲区溢出后抛出异常:

<%@ page autoFlush="true" %>     <%-- Default --%>

<%@ page autoFlush="false" %>

6,info属性

定义一个可以再servlet中通过getServletInfo方法获取的字符串:

<%@ page info="Some Message" %>

7,errorPage属性和isErrorPage属性

errorPage属性指定一个jsp页面,该页面处理当前页面抛出但未被捕获的任何异常:

<%@ page errorPage="Relative URL" %>

指定的页面可以由Exception变量访问抛出的异常

isErrorPage表示当前页是否可以作为其他jsp页面的错误页面:(默认不可以)

<%@ page isErrorPage="true" %>

<%@ page isErrorPage="false" %> <%-- Default --%>

8,isThreadSafe属性

一般不用,显式同步具体的代码段即可

9,extends属性

指定jsp页面生成的servlet的超类:

保留使用

10,language属性

指定页面使用的脚本语言

<%@ page language="java" %>

目前来说java是默认选择也是唯一选择

11,指令对应的XML语法

<jsp:directive.directiveType attribute="value" />

例如:<%@ page import="java.util.*" %>

的XML等价形式:

<jsp:directive.page import="java.util.*" />

三,在jsp页面中包含文件和applet

在jsp中,主要有3种功能可以将外部内容包含到jsp文档:

jsp:include   动作:在请求期间将其他页面的输出包含进来,它包含次级页面的输出,而非次级页面的实际代码。

include指令。  在主页面转换成servlet之前,将jsp代码插入其中。

jsp:plugin动作。将java插件的applet插入到jsp页面中。

1,在请求期间包含页面:jsp:include动作

1)假定你有一系列的页面,每一个拥有相同的导航栏,联系信息或者脚注,通常的解决防范是使用某种服务器端包含机制,在页面请求时将公共块插入到其中。

用page属性来指定jsp:include动作包含的页面的路径:

<jsp:include page="bios/cheng-yinghua.jsp" />

jsp:include动作只有上述的XML语法形式,没有对应的jsp语法

2)flush属性

jsp:include动作还有一个次级属性,指定在将页面包含进来之前是否清空主页面的输出流(默认是false)

<jsp:include page="relative-path-to-resource" flush="true" />

3)jsp:include动作的例子

例如之前做过的招办系统左侧导航目录,在每个页面中都会出现,可以写一个次级页面

4)jsp:param元素:增加请求参数

被包含的页面与最初请求的页面使用相同的请求对象,如果你想看到的请求参数与主页不同,增加或者替换原来主页中的参数,可以在 jsp:include动作中使用这个元素:

<jsp:include page="/fragments/StandardHeading.jsp">
//在次级页面中添加新的元素或者替换主页的元素
<jsp:param name="bgColor" value="YELLOW"/>
</jsp:include>

这样,如果原页面没有背景颜色,你可以在次级页面里面添加,就跟主页面得到不一样的结果了

2,在页面跳转期间包含文件:include指令

<%@ include file="Relative URL" %>

XML形式:

<jsp:directive.include file="..." />

区别部分截图:

include指令带来的维护问题---它会影响主页面,它允许包含的文件中含有影响主页面的jsp代码

一个应用,在下列例子中,我们会用include指令来代替include动作:

假定有这样一个jsp页面,它含有访问计数和对当前页面最近访问的相关信息。再次,有好几个主页面都要使用这种类型的脚注,我们希望每个使用这个脚注页面的主页面都维护各自独立的访问计数,我们不希望脚注的jsp成为一个单独的servlet,而希望它成为主页面的产生的servlet的一部分,因此需要include指令。

1 //脚注jsp
2  <%@ page import="java.util.Date"%>
3  <%-- The following become fields in each servlet that
4 results from a JSP page that includes this file. --%>
5  <%!
6 private int accessCount =0;
7 private Date accessDate =new Date();
8 private String accessHost ="<I>No previous access</I>";
9 %>
10 <P>
11 <HR>
12 This page &copy; 2003
13 <A HREF="http//www.my-company.com/">my-company.com</A>.
14 This page has been accessed <%=++accessCount %>
15 times since server reboot. It was most recently accessed from
16 <%= accessHost %> at <%= accessDate %>.
17 <% accessHost = request.getRemoteHost(); %>
18 <% accessDate =new Date(); %>

主页面:

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 <HTML>
3 <HEAD>
4 <TITLE>Some Random Page</TITLE>
5 <META NAME="author" CONTENT="J. Random Hacker">
6 <META NAME="keywords"
7 CONTENT="foo,bar,baz,quux">
8 <META NAME="description"
9 CONTENT="Some random Web page.">
10 <LINK REL=STYLESHEET
11 HREF="JSP-Styles.css"
12 TYPE="text/css">
13 </HEAD>
14 <BODY>
15 <TABLE BORDER=5 ALIGN="CENTER">
16 <TR><TH CLASS="TITLE">
17 Some Random Page</TABLE>
18 <P>
19 Information about our products and services.
20 <P>
21 Blah, blah, blah.
22 <P>
23 Yadda, yadda, yadda.
24 <%@ include file="/WEB-INF/ContactSection.jsp"%>//include指令
25 </BODY></HTML>

下面的脚注是主页面servlet的一部分,被独立维护,(如果有另一个主页面也引用这个脚注的话,互不影响)

3,包含使用java插件的applet

时间: 2024-10-24 21:39:08

jsp基本语法总结的相关文章

【MOOC笔记】JSP基础语法

JSP 全名:Java Server Pages.java服务器端页面. 本质上是一个简化的Servlet设计,实现了在java中使用HTML标签. JSP是一种动态网站开发标准,与Servlet一样,在服务器端执行. 常用动态网站开发技术: JSP:JAVA平台,安全性高,适合开发大型.企业级WEB应用程序. ASP.NET:基于可视化组件开发,安全性.跨平台性差,最好用微软配套系统. PHP:适合中小型企业WEB应用开发,黄金开发组合:Linux+Apache+MySQL+PHP JSP基础

JSP 简明教程(二):JSP基本语法

基本语法 JSP只是在html的基础上嵌入一些动态的元素.下面是HelloWorld代码: <html> <% out.println("hello world"); %> </html> 以上代码中的<% %>就是动态元素.JSP中所有的特殊语法如下: <% %>:用于表示一段Java代码.这段代码在编译之后会放在_jspService()方法中. <%! %>:多了一个叹号,也用于表示一段Java代码,但是这段

JSP基本语法总结【1】(jsp工作原理,脚本元素,指令元素,动作元素)

时隔半年,回头对jsp复习整理一下,温故而知新. jsp工作原理: jsp服务器管理jsp页面分两个阶段:转换阶段(translation phase)和执行阶段(execution phase). 客户发送请求时,服务器检验jso语法是否正确,然后转换成servlet源文件,然后调用javac工具类便宜servlet源文件生成class文件,此阶段为转换阶段. 接下来,servlet容器加载转换后的servlet类,实例化一个对象来处理客户端的请求.请求处理后,响应对象被jsp服务器接收,服务

JSP基本语法

JSP基本语法 一.JSP简介 JSP指的是Java Server Pages,它是SUN公司在1996年6月发布的用于开发动态Web应用的一项技术.JSP是基于Java Servlet的Web开发技术,由于其所具有的简单易学和跨平台等的特性,使其在各种动态Web程序的设计语言中脱颖而出,它具有一套完整的语法规范,目前已经成为Web开发中的主流选择. 二.JSP基本语法 在传统的HTML页面文件中嵌入脚本语言和JSP标签就构成了一个JSP页面文件.一个JSP页面可有5中元素组合而成. HTML页

关于jsp基本语法:第一章节

今天我学习了关于JSP基本语法的一些知识点. JSP全名是 Java server pages,其根本是一个简化的Servlet设计,实现了在java当中使用HTML标签.JSP是一种动态网页技术,标准也是Javaee的标准,jsp与servlet一样,是在服务器端执行的. 常见的动态网站开发技术对比主要分为Jsp和Asp.net以及Php.这三种开发技术各有优缺点.我们学习的Jsp是基于Java平台,安全性高,适合开发大型的,企业级的Web应用程序.JSP页面元素 由注释,声明,小脚本,表达式

JSP基本语法、3个编译指令、7个动作指令、9个内置对象

一.jsp概述 JSP是java server page的缩写,其本质是一个简化的servlet,是一种动态网页技术标准.jsp页面是在HTML页面中嵌入java程序段,使用jsp开发的应用程序可以跨平台. 二.jsp基本语法 2.1 jsp表达式 jsp表达式用于向页面输出信息,语法格式如下: <%= 表达式 %> 如:<%= 5+6 %> <%与=之间不能有空格,=与后面的表达式之间可以有空格. 2.2 jsp声明标识 声明标识用语在jsp页面中定义全局的变量或者方法,通

JSP的语法

JSP的4种基本语法: 1:jsp注释 jsp注释格式如下: <%---注释内容--%> <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <html> <head> <title>jsp基础语法</title> </head> <body> &l

01_01 JSP基础语法

JSP基础语法 一.注释 1.显式注释,客户端可见 <!--注释--> 2.隐式注释,客户端不可见 //注释单行 /*注释多行*/ <%--JSP注释--> 二.Scriptlet 1.第一种 Scriptlet: <%%> 可以用于定义局部变量.编写语句等 <%     int x = 10;     String info ="www.126.com";     out.println("<h2>x="+x+

Java Web学习(7):JSP基础语法

一个JSP页面可以被分为以下几部份: 1)静态数据,如HTML: 2)JSP指令,如include指令: 3)JSP脚本元素和变量: 4)JSP动作: 5)用户自定义标签: 一静态数据 静态数据在输入文件中的内容和输出给HTTP响应的内容完全一致.此时,该JSP输入文件会是一个没有内嵌 Java或动作的HTML页面.而且,客户端每次请求都会得到相同的响应内容. 这个静态数据的本质就是HTML文档. 二JSP指令 JSP指令控制JSP编译器如何去生成servlet,以下是可用的指令: (1)pag

JSP基础语法(章节摘要)

1,在JSP中分为3种Script,<%!%>,<%%>和<%=%>. 2,在开发中尽量使用表达式输出(<%=%>)来代替out.println()语法. 3,使用page指令可以设置一个页面的操作属性,如MIME类型,显示编码,导包操作等. 4,JSP中德包含语句分为两种,一种是静态包含,另一种是动态包含,静态包含属于先包含后处理,而动态包含属于先处理后包含. 5,使用<jsp:forward>可以执行跳转操作,跳转后的地址栏不改变,所以是服务