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脚本元素
JSP动作元素
本小节讲这三个。
1、JSP注释:
1、JSP注释有两种,一种是可以在客户端显示的注释,称为HTML注释。
表示形式:
2、一种是发送到服务器端,在客户端不能显示的注释,称为JSP注释。
表示形式: <%--注释内容--%>
2、JSP指令:
JSP指令用来向JSP引擎提供编译信息。可以设置全局变量,如声明类、要实现的方法和输出内容的类型。一般的,JSP指令在整个页面范围内有效,且并不向客户端产生任何输出。所有的JSP指令都只在当前的整个页面中有效。与其书写的位置无关,一般写在最前面。
JSP指令有3类,分别是:
page指令
include指令
taglib指令
1、 page指令称为页面指令,用来定义JSP页面的全局属性,该配置会作用于整个JSP页面。page指令用来指定所使用的脚本语言、导入指定的类及软件包等。
<%@ page language="java" contentType="text/html;charest=GBK"%>
<%@ page import="java.util.*, java.io.*, java.awt.*"%>
2、include指令是文件加载指令,用于在JSP文件中插入一个包含文本或代码的文件。它把文件插入后与原来的JSP文件合并成一个新的JSP页面。还需要注意的是,如果被插入的文件发生了变化,则包含这个文件的JSP文件需要被重新编译。
<%@ include file="baozi.txt"%>
<%@ include file="baozi.html"%>
<%@ include file="baozi.jsp"%>
3、taglib指令用来引用标签库并设置标签库的前缀。这个指令允许JSP页面使用用户自定义的标签,它也可以为标签库命名,标签在这个库中定义。
taglib有2个属性,uri用来指定标签文件或标签库的存放位置,prefix用来指定该标签库所使用的前缀。
<%@ pagelanguage="java" contentType="text/html"pageEncoding="UTF-8"%>
<%--声明要引用的标签库--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
taglib标签
<%--使用JSTL标签输出--%>
3、JSP脚本元素:
脚本元素是JSP中使用最频繁的元素,通过JSP脚本可以将Java代码嵌入到HTML页面中,所有可执行的Java代码,都可以通过JSP脚本来实现。
JSP脚本元素主要包含如下三种类型:
JSP声明语句
JSP表达式
JSP Scriptlets
1、JSP声明语句用于声明变量和方法。使用JSP声明语句声明变量时需要在”<%!”和”%>”标记之间放置Java变量的声明语句。变量的类型可以是Java语言中所提供的任意数据类型。使用JSP声明语句声明的变量将来会转换成Servlet类中的成员变量,这些变量在整个JSP页面中都有效,因此也被称为JSP页面的成员变量。声明的方法在整个JSP页面有效,方法内声明的变量只在方法内有效。
<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
JSP声明语句示例
<%!
public int a; //声明整型变量a
public String printStr(){ //声明方法printStr
return "JSP method";
}
%>
<%
out.println("a="+a); //输出a值
a++; //a自增
%>
<%
out.println(printStr()); //调用printStr()方法,输出其返回值
%>
实际上,JSP页面最终会编译成Servlet类,而在容器中只会存在一个Servlet类的实例。在JSP中声明的变量时成员变量,它只在创建Servlet实例时被初始化一次,此后该变量一直保存,直到Servlet实例被销毁掉。
2、JSP表达式,即在”<%=”和”%>”标记之间插入一个表达式,这个表达式必须能够求值,并且计算结果以字符串的形式发送到客户端显示出来。JSP表达式的值会作为HTML页面的内容。
如果表达式的值是一个字符串,则将表达式的值直接显示在页面上,否则会先将表达式转换为字符串。
<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
JSP 表达式
<%!
String str="JSP expression"; //声明变量str
%>
<%=str%>
3、JSPScriptlet是一段Java代码。当需要使用Java实现一些复杂的操作或控制时,JSP表达式往往不能满足要求,此时就需要用到JSP Scriptlet。
在JSP Scriptlet里声明的变量是局部变量,调用JSP Scriptlet时,会为局部变量分配内存空间,调用结束便释放变量占有的空间。
<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
JSP Scriptlet
<%
String str="JSP Scriptlet"; //声明字符串
out.println(str); //输出字符串的值
%>
三、JSP动作元素
JSP动作元素用来控制JSP的行为,执行一些常用的JSP页面动作。通过动作元素可以实现使用多行Java代码能够实现的效果,如动态插入文件、重用JavaBean组件、自定义标签等。
JSP中的动作元素主要包含下面7个:
1、
include.jsp:
<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
jsp:include
hello.jsp:
<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%=(newDate()).toString() %>
2、
forward.jsp:
<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
jsp:forward
<%--这里会执行 --%>
<%--这里不会执行 --%>
to_forward.jsp
<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
to_forward
该页面为jsp:forward跳转的页面
3、
1、
param_include.jsp 代码:
<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
jparam_include
param_sum代码:
<%@ page language="java"contentType="text/html" pageEncoding="UTF-8"%>
param_num
<%
String str=request.getParameter("number"); //获取要累加的次数
int n=Integer.parseInt(str); //将字符串解析成带符号整数
int sum=0; //存放;累加和
for(int i=1;i<=n;i++){
sum+=i;
}
%>
整数和为:
<%=sum %>
2、
param_forward.jsp代码:
<%@ page language="java"contentType="text/html" pageEncoding="utf-8"%>
jsp:forward
userinfo.jsp代码:
<%@ page language="java"contentType="text/html" pageEncoding="utf-8"%>
用户信息
<%
String name=request.getParameter("userName"); //获取名字
String age=request.getParameter("userAge"); //获取年龄
%>
<%="用户信息如下"%>
<%="用户名字:"+name%>
<%="用户年龄:"+age%>
4、
5、
jspBean.jsp代码:
<%@ page language="java"contentType="text/html" pageEncoding="utf-8"%>
JavaBean Test
用户信息:
用户名:
年龄:
User.java代码:
package jsp;
public class User {
private StringuserName;
private int age;
//setter和getter方法
public StringgetUserName() {
returnuserName;
}
public void setUserName(String userName) {
this.userName= userName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age =age;
}
}