四、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>
程序效果: