jsp
jsp编译后生成servlet,所以说jsp也是一种特殊的servlet,通常由html和java语言构成,常用做表现层。
1. 脚本的表达式
形如: <% xxx %>
2. 3个编译指令
jsp的编译指令时通知jsp引擎的消息,它不直接生成输出。编译指令都有默认值,因此开发人员无需为每个指令设置值。
page指令:
page指令通常位于jsp页面的顶端,一个jsp页面可以使用多条page指令。
page指令语法格式如下:
<%@ page
language="java"
contextType="text/html;charset=UTF-8"
pageEncoding="UTF-8"
import="java.util.Date,java.lang.String"
session="true/false"
buffer="none/8KB"
errorPage="./xx.jsp"
isErrorPage="false/false"
%>
isErrorPage: 如果此页面被用作处理异常错误的页面,则为true。在这种情况下,页面可被指定为另一页面page指令元素中errorPage属性的取值。指定此属性为true将使exception隐含变量对此页面可用。缺省值为false。
include指令
向当前页面内静态镶嵌如一个文件的内容
<%@ include file="相对路径的文件" %>
taglib指令
其实就是定义一个标签库以及自定义标签的前缀。
比如struts中支持的标签库,html标签库、bean标签库、logic标签库。
其中的具体的实现方式,我们不过多介绍,我们给大家从宏观的角度以及解决其中的疑难点,后面会大家介绍相应的学习资料。
除了struts的标签库,我们常见还有jstl标签库。
这样在界面jsp中引入其中的标签库或者标签库文件,然后才可以正常使用其中定义的标签。
代码如下:
<%@ taglib prefix ="bean" uri= "http://struts.apache.org/tags-bean" %>
<%@ taglib prefix ="logic" uri= "http://struts.apache.org/tags-logic" %>
<%@ taglib prefix ="html" uri= "http://struts.apache.org/tags-html" %>
<%@ taglib prefix ="c" uri="http://java.sun.com/jsp/jstl/core" %>
2. 7个动作指令
include动作:
向当前页面内动态包含一个文件:静态文件(txt/html)或者动态文件(jsp)。
动作中可以包含<jsp:param name="" value="" />参数。
<jsp:include page="相对路径的文件" />
或者
<jsp:include page="相对路径的文件">
<jsp:param name = "name2" value = "value2"/>
...
</jsp:include>
include指令标签与动作标签的区别:
“include指令标签”,是将静态嵌入文件作为主体文件的一部分,所以主文件和子文件其实是一体,。
指令标签在编译时就将子文件载入;它不会检查所含文件的变化,适用于包含静态页面。
“include动作标签”,是动态嵌入文件,子文件不必考虑主文件的属性。
动作标签在运行时才将子文件载入;它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。
forward动作:
用来重定向一个静态HTML文件、JSP文件或者是一个程序段。
从当前页面跳转到目标文件页面,地址栏是处理文件的地址,而不是目标文件的地址。forward动作指令后面的代码不会被执行,也不会被发送到客户端。
动作中可以包含<jsp:param name="" value="" />参数。
<jsp:forward page="目标文件"/>
或者
<jsp:forward page = "目标文件">
<jsp:param name = "name1" value = "value1"/>
...
</jsp:forward>
useBean动作
<jsp:useBean>标签用来在JSP页面中创建一个JavaBean实例,并指定其名称和作用范围。
getProperty动作
<jsp:getProperty>标签用来获取Bean的属性值(在此之前必须用<jsp:useBean>创建Bean),并将之转化为一个字符串,然后将其插入到输出的页面中。
setProperty动作
<jsp:setProperty>标签表示用来设置Bean中的属性值(在此之前必须用<jsp:useBean>创建Bean)。
<jsp:useBean id="id" scope="page|request|session|application" typeSpec />
id为大小敏感的名字,用来表示这个实例;
scope表示此对象可以使用的范围;
typeSpec可以为以下四者之一:
class="className" Bean的类路径和类名。这个class不能是抽象的,必须有一个共用的,没有参数的构造器。
class="className" type="typeName" 实例化一个Bean,同时还可以指定Bean的类型。
beanName="beanName" type="typeName"
type="typeName"
<jsp:setProperty name="beanName" propertyDetails />
name="beanName"为必选属性,其值为Bean的名字,在这之前用jsp:userBean引入的名称。
proertyDetails可以有四种不同的方法。
· property="*" 设置Bean快捷方式,在Bean中,属性的名字、类型必须和request对象中的参数名称相匹配。
· property="propertyName" param="parameterName" 将Bean中的变量和request中的参数对应起来。property为Bean的属性名,param为request中的参数名。
· property="propertyName"
· property="propertyName" value="propertyValue" 直接设置Bean的值。
setProperty代码示例
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<jsp:useBean id="user" scope="session" class="lyy.model.User" />
<jsp:setProperty name="user" property="*"/>
<!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>
<form action="login.jsp" method="post">
name: <input type="text" name="name" value="lyy"><br>
pwd: <input type="password" name="pwd" value="pwd"><br>
<input type="submit" value="submit">
<input type="reset" value="reset">
</form>
</body>
</html>
getProperty()代码示例:
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<jsp:useBean id="user" scope="page" class="lyy.model.User"/>
<html>
<body>
注册成功:<br>
<hr>
使用bean属性方法:<br>
用户名:<%=user.getName() %><br>
密码:<%=user.getPwd() %><br>
<hr>
使用getProperty:<br>
用户名:<jsp:getProperty name="user" property="name"/><br>
密码:<jsp:getProperty name="user" property="pwd"/><br>
</body>
</html>
plugin动作
<jsp:plugin> 标签用于在浏览器中播放或显示一个对象(典型为applet和Bean),这种显示需要在浏览器上安装Java插件。当JSP文件被编译后送往浏览器时,<jsp:plugin>元素将会根据浏览器的版本替换成<object>或者<embed>元素。
动作中可以包含<jsp:param name="" value="" />参数。
详见:http://blog.sina.com.cn/s/blog_53c96bd00100082t.html
param动作
<jsp:param>标签用来传递参数,必须与forward、include及plugin动作配合使用。
在目标文件中可以通过request.getParameter("name");来获得传递过来的参数.