四、JSP动作元素
1、<jsp:include>动作元素:提供了一种在JSP中包含页面的方式。
<jsp:include>动作元素与include指令的区别:
include动作元素是在执行时对包含文件进行处理的,JSP页面与它所包含的文件在逻辑上和语法上都是独立的。当被包含的 文件内容发生变化时,JSP页面运行时可以看到所包含文件变化后的显示结果。
include指令包含的文件是静态文件,如果被包含的文件内容发生变化,则JSP页面运行时看到的仍然是变化前文件的内容, 想看到变化后的文件内容,则需要重新保存该JSP页面,然后再访问它(需要重新将JSP页面转译成Java文件)
其中,包含两个属性:
page属性:指定被包含文件的URL地址,是一个相对路径。
flush属性:指定当缓冲区满时,是否将其清空,其默认值为false
2、<jsp:forward>动作元素:用于页面重定向的动作元素
语法格式:
<jsp:forward page="转向页面的URL地址"/>
3、<jsp:param>动作元素:提供参数的附属动作元素
语法格式:
<jsp:param name="参数名称" value="指定给param的参数值">
(1)、与<jsp:include>动作元素一起使用
include.jsp:
<body>
<jsp:include page="sum.jsp">
<jsp:param value="5" name="num"/>
</jsp:include>
</body>
sum.jsp:
<body>
<%
String number = request.getParameter("num");
int num=Integer.parseInt(number);
int sum=0;
//累加求和
for(int i=1;i<=num;i++){
sum+=i;
}
%>
<p>
从1到<%=num %>之和:
<%=sum %>
</p>
</body>
(2)、与<jsp:forward>动作元素一起使用
forward.jsp:
<body>
<%
request.setCharacterEncoding("UTF-8" );//设置request编码格式
%>
<!-- 通过jsp动作元素,进行页面转发 -->
<jsp:forward page="userinfo.jsp">
<jsp:param value="张三" name="username"/>
<jsp:param value="24" name="age"/>
</jsp:forward>
</body>
userinfo.jsp:
<body>
<%
//request.setCharacterEncoding("UTF-8" );
//获取request上的参数
String username = request.getParameter("username");
String age= request.getParameter("age");
%>
<!-- 输出用户信息 -->
<%="用户名:"+username %>
</br>
<%="年龄:"+age %>
</body>
4、<jsp:plugin>动作元素:将服务器端的JavaBean或Applet下载到客户端执行。
5、<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>动作元素
(1)、<jsp:useBean>动作元素:用来装载一个将在JSP页面中使用的JavaBean
语法格式:
<jsp:useBean id ="beanInstanceName" class = "classname" scope="page | request | session | application"/>
属性说明如下:
id:指定JavaBean的实例名。
class:指定JavaBean的全限定类名。
scope:指定引入的JavaBean实例的作用域,默认为当然页(page、request、session、application)。
(2)、<jsp:setProperty>动作元素:为Bean实例设置或修改Bean中的属性值。
语法格式:
<jsp:setProperty name ="beanInstanceName" property="propertyName" value="value" />
属性说明如下:
name:指定要进行设置的JavaBean的实例名。
property:指定需要设置的JavaBean实例中的属性名。
value:指定要将property中指定的属性设置为该属性值。
(3)、<jsp:getProperty>动作元素:用来提取指定Bean属性的值
语法格式:
<jsp:getProperty name="beanInstanceName" property="propertyName" />
属性说明如下:
name:指定要输出的JavaBean的实例名。
property:指定需要输出的JavaBean实例中的属性名。
案例:展示用户信息
User.java
package com.imooc.po;
public class User {
private String username;
private int age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public User(String username, int age) {
super();
this.username = username;
this.age = age;
}
public User() {
}
}
userinfo.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>userinfo page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<jsp:useBean id="user" class="com.imooc.po.User" scope="page" />
<jsp:setProperty name="user" property="username" value="张三" />
<jsp:setProperty property="age" name="user" value="27"/>
<!-- 输出用户信息 -->
用户名:
<jsp:getProperty property="username" name="user" />
</br>
年龄:
<jsp:getProperty name="user" property="age"/>
</body>
</html>
程序效果: