JSP_7_JSP指令与动作元素
---7-1 include指令------------------------------------------------------------------
include指令:<%@ include file="URL"%>
date.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%> <%@ page import="java.text.*" %> <% Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); String s = sdf.format(d); out.println(s); %>
Include_Command.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=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>My JSP 'Include_Command.jsp' starting 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> <h1>Include指令</h1> <hr> <%@ include file="date.jsp"%> </body> </html>
---7-2 include动作------------------------------------------------------------------
include动作标签
<jsp:include>动作元素用来包含静态和动态的文件。该动作把指定文件插入正在生成的页面。语法格式如下:
<jsp:include page="relative URL" flush="true" />
常用属性:
page:要包含的页面
flush:被包含的页面是否从缓冲区读取 true:使用缓冲,false不使用缓冲
<%@ page language="java" import="java.util.*" contentType="text/html; charset=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>My JSP 'Include_Command.jsp' starting 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> <h1>Include动作</h1> <hr> <jsp:include page="date.jsp" flush="false"/> </body> </html>
---7-3 include指令与include动作(标签)--------------------------------------------------
include指令与include动作(标签)比较
include指令 jsp:include动作
语法格式 :<%@ include file="URL"%> <jsp:include page="xx.jsp" flush="false"/>
发生作用的时间 :页面转换期间 请求期间
包含的内容 :文件实际内容 页面的输出
转换成的Servlet:主页面和包含页面转换为一个Servlet 主页面和包含页面转换为独立的Servlet
编译时间 : 较慢-资源必须被解析 较快
执行时间 : 稍快 较慢-每次资源必须被解析
观察Tomcat work directory里生成的servlet文件
---7-4 forward动作-----------------------------------------------------------------
语法:
<jsp:forward page="URL" />
等同于:
request.getRequestDispatcher("/url").forward(request,response);
login.jsp:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=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>My JSP 'login.jsp' starting 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> <h1>系统登录</h1> <hr> <form name="loginForm" action="forward_action.jsp" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" name="username"/></td> </tr> <tr> <td>密码:</td> <td><input type="password" name="password"/></td> </tr> <tr> <td colspan="2"><input type="submit" value="登录"/></td> </tr> </table> </form> </body> </html>
forward_action.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=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>My JSP 'Include_Command.jsp' starting 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> <h1>Forward动作</h1> <hr> <!--<jsp:forward page="user.jsp"/>--> <% request.getRequestDispatcher("user.jsp").forward(request, response); %> </body> </html>
user.jsp:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=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>My JSP 'user.jsp' starting 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> <h1>用户资料</h1> <hr> <% request.setCharacterEncoding("utf-8"); String username = ""; String password = ""; String email = ""; if(request.getParameter("username")!=null) { username = request.getParameter("username"); } if(request.getParameter("password")!=null) { password = request.getParameter("password"); }%> 用户名:<%=username %><br> 密码:<%=password %><br> </body> </html>
---7-5 param动作-------------------------------------------------------------------
语法:
<jsp:param name="param Name" value="value">
常常与<jsp:forward>一起使用,座位起子标签
login.jsp:
<form name="loginForm" action="doLogin.jsp" method="post">
dologin.jsp:
<jsp:forward page="user.jsp">
//添加参数email
<jsp:param value="admin@123.net" name="email"/>
//覆盖参数password的值
<jsp:param value="888888" name="password"/>
</jsp:forward>
<%@ page language="java" import="java.util.*" contentType="text/html; charset=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>My JSP 'dologin.jsp' starting 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:forward page="user.jsp"> <jsp:param value="admin@123.net" name="email"/> <jsp:param value="888888" name="password"/> </jsp:forward> </body> </html>
user.jsp:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=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>My JSP 'user.jsp' starting 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> <h1>用户资料</h1> <hr> <% request.setCharacterEncoding("utf-8"); String username = ""; String password = ""; String email = ""; if(request.getParameter("username")!=null) { username = request.getParameter("username"); } if(request.getParameter("password")!=null) { password = request.getParameter("password"); } if(request.getParameter("email")!=null) { email = request.getParameter("email"); } %> 用户名:<%=username %><br> 密码:<%=password %><br> 电子邮箱:<%=email %><br> </body> </html>