Jsp的执行过程
客户端
Servlet容器(服务器)
*.jsp
Jsp常用标签
Jsp指令
指令格式
使用<%@ %>标记
常用指令
page指令用来定义一个JSP页面的相关属性
//脚本语言 language="java" //字符集编码 contentType="text/html; charset=UTF-8" // pageEncoding="UTF-8" //自动刷新 autoFlush="true" //错误页面 errorPage="index_err.jsp" //导包 import="java.util.Date" //过滤注释信息 trimDirectiveWhitespaces="true"
web.xml里指定错误页面
<jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <page-encoding> UTF-8 </page-encoding> <trim-directive-whitespaces> true </trim-directive-whitespaces> </jsp-property-group> </jsp-config>
include指令用于在JSP中静态包含一个文件(包含的内容和jsp页面翻译成一个java文件)
<%@ include file="includeURL" %>
taglib指令在JSP页面中使用标签时使用
<%@ taglib prefix="prefix_name" url="tag_uri" tagdir="tag_dir"%>
JSP脚本
声明(类似于在java类中定义字段)
<%! int age=23; %>
小脚本
<% for(int i=0;i<age;i++){%> <li><%=i+1%></li> <%}%>
表达式
<%=age%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%! int count=0; int add(int a,int b){ return a+b; } %> <!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>JSP脚本</title> </head> <body> <% int result=add(5,12); %> count:<%=count %> <br> result:<%=result %> </body> </html>
Jsp隐式对象
不能在声明中使用
out 通过page指令指定其缓冲区大小
config 获取JSP初始化数据
exception 对JSP页面产生的异常进行处理 错误页面中使用
response
page 当前jsp转换成Servlet的实例
(作用域对象)
pageContext 提供获取其他隐式对象的方法(getRequest,getOut) 作用域为page时,数据保存在pageContext中(setAttribute) 生命周期最短
request 作用域为Request,数据保存在request中
session 作用域为session,数据保存在session中
Application 作用域为Application,数据保存在Application中(整个运用共享)
Jsp动作
Include
<%@ include file="url"%> | 当前文件 | 翻译(转换) |
<jsp:include page="url"/> | 当前页面 | 请求处理 |
forward
<jsp:forward page="url"/>
param
<jsp:param name="name" value="value"/>
通过request的getParameter或getParameterValues获取
JSP useBean动作
javaBean
必须是一个public的java类
必须包含一个默认(无参)的构造方法
属性名称第二个字母不能大小(getter,setter方法)
useBean
创建一个由id代表的class指定的类的示例并保存至scope指定的作用域
<jsp:useBean class="com.tanlei.User" id="user" scope="page"/>
setProperty
配合useBean使用request对象获取的用户数据为属性赋值
<jsp:setProperty name="user" property="*"/> <jsp:setProperty name="user" param="name" property="pname"/>
控制流语句
JSP提供对Java语言的全面支持。您可以在JSP程序中使用Java API甚至建立Java代码块,包括判断语句和循环语句等等。
判断语句
If…else块
<% if (day == 1 | day == 7) { %> <p>今天是周末</p> <% } else { %> <p>今天不是周末</p> <% } %>
switch…case块,与if…else块有很大的不同,它使用out.println(),并且整个都装在脚本程序的标签中
<% switch(day) { case 0: out.println("星期天"); break; case 1: out.println("星期一"); break; case 2: out.println("星期二"); break; case 3: out.println("星期三"); break; case 4: out.println("星期四"); break; case 5: out.println("星期五"); break; default: out.println("星期六"); } %>
循环语句
在JSP程序中可以使用Java的三个基本循环类型:for,while,和 do…while。
<%for ( fontSize = 1; fontSize <= 3; fontSize++){ %> <font color="green" size="<%= fontSize %>"> 菜鸟教程 </font><br /> <%}%>
将上例改用 while 循环来写:
<%while ( fontSize <= 3){ %> <font color="green" size="<%= fontSize %>"> 菜鸟教程 </font><br /> <%fontSize++;%> <%}%>
JSP 读取表单数据
-
getParameter(): 使用 request.getParameter() 方法来获取表单参数的值。
-
getParameterValues(): 获得如checkbox类(名字相同,但值有多个)的数据。 接收数组变量 ,如checkbox类型
-
getParameterNames():该方法可以取得所有变量的名称,该方法返回一个 Enumeration。
-
getInputStream():调用此方法来读取来自客户端的二进制数据流。
读取所有表单参数
<% Enumeration paramNames = request.getParameterNames(); while(paramNames.hasMoreElements()) { String paramName = (String)paramNames.nextElement(); out.print("<tr><td>" + paramName + "</td> "); String paramValue = request.getParameter(paramName); out.println("<td> " + paramValue + "</td></tr> "); } %>