JSP学习笔记
项目创建与执行
在eclipse中,选择File–>New–>Dynamic Web Project 创建项目
配置完成后即可创建,注意勾选Generate web.xml deployment descriptor选项
各目录的含义是:
- deployment descriptor:部署的描述
- Web App Libraries: 放自己的包
- build: 放编译之后的文件
- WebContent: 放进写入的页面
运行一个hello world 文件的过程:
在WebContent下创建一个JSP文件,名为hello:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% out.println("hello world!"); %> </body> </html>
然后修改浏览器选项:
最后运行即可:
JSP语法
脚本程序
脚本程序可以包含任何Java语句、变量、方法或表达式:
<% 代码 %>
与其等价的XML语句:
<jsp:scriptlet>代码</jsp:scriptlet>
示例:
<html>
<head><title>Hello World</title></head>
<body>
Hello World!<br/>
<%
out.println("Your IP address is " + request.getRemoteAddr());
%>
</body>
</html>
JSP声明
一个声明语句可以声明一个或者多个变量、方法,在JSP文件中必须先声明这些变量后才能使用它们:
<%! declaration %>
等价的XML语句:
<jsp:declaration>
代码片段
</jsp:declaration>
示例:
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
JSP表达式
表达式中的值会先转化为String,然后插入到表达式出现的地方:
<%= 表达式 %>
等价的XML语句:
<jsp:expression>
表达式
</jsp:expression>
示例:
<p>今天的日期是: <%= (new java.util.Date()).toLocaleString()%></p>
JSP注释
注释不会被发到浏览器所以从浏览器中看不到内容:
<%-- 注释 --%>
JSP指令
指令用来设置与整个页面的相关性:
<%@ 指令 %>
指令标签种类:
- Page指令
Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令。它的语法格式:
<%@ page attribute="value" %>
等价的XML格式:
<jsp:directive.page attribute="value" />
属性有: buffer: 指定out对象使用缓冲区的大小 autoFlush: 控制out对象的 缓存区 contentType: 指定当前JSP页面的MIME类型和字符编码 errorPage: 指定当JSP页面发生异常时需要转向的错误处理页面 isErrorPage: 指定当前页面是否可以作为另一个JSP页面的错误处理页面 extends: 指定servlet从哪一个类继承 import: 导入要使用的Java类 info: 定义JSP页面的描述信息 isThreadSafe: 指定对JSP页面的访问是否为线程安全 language: 定义JSP页面所用的脚本语言,默认是Java session: 指定JSP页面是否使用session isELIgnored: 指定是否执行EL表达式 isScriptingEnabled: 确定脚本元素能否被使用
- Include指令
JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件,语法格式如下:
<%@ include file="文件相对 url 地址" %>
- Taglib指令
JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合,语法格式:
<%@ taglib uri="uri" prefix="prefixOfTag" %>
uri属性确定标签库的位置,prefix属性指定标签库的前缀。
JSP行为
JSP行为标签使用XML语法结构来控制servlet引擎。行为标签只有一种语法格式,它严格遵守XML标准:
<jsp:action_name attribute="value" />
JSP隐含对象
- request: HttpServletRequest类的实例response
- out: PrintWriter类的实例,用于把结果输出至网页上
- session: HttpSession类的实例
- application: ServletContext类的实例,与应用上下文有关
- config: ServletConfig类的实例
- pageContext: PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
- page: 类似于Java类中的this关键字
- Exception: Exception类的对象,代表发生错误的JSP页面中对应的异常对象
控制流语句
- 判断:
<body> <h3>IF...ELSE 实例</h3> <% if (day == 1 | day == 7) { %> <p>今天是周末</p> <% } else { %> <p>今天不是周末</p> <% } %> </body>
- 选择:
<body> <h3>SWITCH...CASE 实例</h3> <% switch(day) { case 0: out.println("星期天"); break; case 1: out.println("星期一"); break; case 2: out.println("星期二"); break; case 3: out.println("星期三"); break; } %> </body>
- for 循环:
<% for ( fontSize = 1; fontSize <= 3; fontSize++){ %> <font color="green" size="<%= fontSize %>"> content </font><br /> <% } %>
- while 循环:
<% while ( fontSize <= 3){ %> <font color="green" size="<%= fontSize %>"> 菜鸟教程 </font><br /> <% fontSize++; %>