JSP动作标识
1、JSP动作标识在请求处理阶段按照页面中出现的顺序来执行的,分为操作JavaBean、包含其他文件、执行请求转发等。
2、操作JavaBean的动作标识:创建JavaBean实例的动作标识<jsp:useBean>,读取JavaBean属性值的<jsp:getProperty>和设置JavaBean的属性值的<jsp:setProperty>。读取JavaBean属性值的动作标识用于创建并给属性赋值,如果在指定范围内没有JavaBean,则新建一个JavaBean,如果有则直接使用JavaBean。
3、操作JavaBean的动作标识可以分为两种情况,一种是有体的,另一种是不存在体的。两者的区别是在第一次实例化JavaBean时,前者如果存在JavaBean实例则不再执行其内容,后者不论存在JavaBean实例与否都会执行。
4、<jsp:useBean>常用属性:id,scope,class,type,beanName。scope属性的可选值是page,request,session和application。
5、操作JavaBean的动作标识练习代码
index.jsp如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>首页</title> </head> <body> <form name="form1" method="post" action="deal.jsp" > 用户名:<input type="text" name="username"> <br> 密码:<input type="password" name="password"> <input type="submit" name="submit1" value="提交"> </form> </body> </html>
deal.jsp如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <jsp:useBean id="user" scope="page" class="javaBeanTest.UserBean" type="javaBeanTest.UserBean" /> <jsp:setProperty name="user" property="*" /> <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>显示用户登录信息</title> </head> <body> 用户名:<%=user.getName() %><br> 密码:<%=user.getPassword() %> </body> </html>
JavaBean代码如下:
1 package javaBeanTest; 2 //创建UserBean类 3 public class UserBean 4 { 5 private String username=""; 6 private String password=""; 7 public void setusername(String username) 8 { 9 this.username=username; 10 } 11 public String getName() 12 { 13 return username; 14 } 15 public void setPassword(String password) 16 { 17 this.password=password; 18 } 19 public String getPassword() 20 { 21 return password; 22 } 23 }
6、包含外部文件的动作标识<jsp:include page="url" flush="true/false">,可以包含动态和静态的文件,包含动态文件的时候,会先用jsp解释器编译被包含的文件。有两种写法,一种是包含体的并且体有参数传递的内容,另一种是不包含体的。
7、包含有两种写法,一种是指令标识写法,另一种是动作标识写法。前者总共生成一个页面,被包含的页面修改后需要重新编译该文件;后者不用,因为后者被包含的文件是分编译执行的,对于变量也不会和主页面有冲突,一般用于包含动态页面。
8、执行请求转发的动作标识<jsp:forward >。他让一个页面转向另一个页面,可以是JSP页面,也可以是HTML页面和Servlet页面。格式一般也是包含体的和不包含体的。包含体的内容可以求参数传递。
9、设置参数的子动作标识:<jsp:param name="参数名" value="参数值">,最终其传递的是“参数名=参数值”,等价于文件名后面加“?参数名=参数值”。
10、动态添加人年龄段称谓,并查询
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% //定义一个字符串数组,存放人的不同年龄段名称 String[] str={"婴儿","儿童","少年","青年","中年","老年"}; %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>动态添加下拉列表</title> </head> <body> <!-- 动态添加下拉列表的列表项 --> <h2>人的查询</h2> 姓名:<input type="text" name="name" id="name"> 年龄:<input type="text" name="text" id="text"> 年龄段称谓: <select> <%for(int i=0;i<6;i++){%> <option value="<%=str[i] %>"><%=str[i] %></option> <%}%> </select> <input type="button" value="查询"> </body> </html>