动作元素

jsp:useBean:根据指定类实例化一个对象,类似Preson per = new Preson();

<jsp:useBean id="对象名" class = "类" scope = "对象生命周期"></jsp:useBean>

jsp:setProperty:设置对象的属性的值,相当于setXXX()方法。

<jsp:setProperty name = "对象名" property = "属性名" value = "属性值"></jsp:setProperty> 

jap:getProperty:获取对象的属性值,相当于getXXX()方法。

<jsp:getProperty name = "对象名" property = "属性名"></jsp:getProperty>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "com.myclass.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body> <%
Person per = new Person();//实例化对象 per.setName("hcf");//设置值
per.setSex("man");
per.setAge(20); out.println(per.getName());//获取值
out.println(per.getSex());
out.println(per.getAge());
%> <br>
<!-- 实例化对象-->
<jsp:useBean id="per1" class = "com.myclass.Person" scope = "session"></jsp:useBean>
<!-- 设置值 -->
<jsp:setProperty name = "per1" property = "name" value = "hcf1"></jsp:setProperty>
<jsp:setProperty name = "per1" property = "sex" value = "man"></jsp:setProperty>
<jsp:setProperty name = "per1" property = "age" value = "21"></jsp:setProperty>
<!-- 获取值-->
<jsp:getProperty name = "per1" property = "name"></jsp:getProperty>
<jsp:getProperty name = "per1" property = "sex"></jsp:getProperty>
<jsp:getProperty name = "per1" property = "age"></jsp:getProperty> </body>
</html>

<jsp:useBean>中的id属性为动作元素的唯一标识符

<jsp:userBean>中有一个属性scope代表对象的生命周期,

scope属性值所代表的生命周期从小到大依次为:

(a) page,  (b)request, (c)session, 和 (d) application。

此处设置为session代表与session有同样的生命周期。

<jsp:setProperty>还有简便的设置

<jsp:setProperty name = "per1" property = "*"></jsp:setProperty> 

这样设置代表,对象属性的值会按照表单元素的值进行自动填充,

其中表单元素的name属性的值要与对象属性的名称一致,如果名称不一致则无法填充。

下面看个例子

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "com.myclass.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body> <%
Person per = new Person(); per.setName("hcf");
per.setSex("man");
per.setAge(20); out.println(per.getName());
out.println(per.getSex());
out.println(per.getAge());
%> <br>
<!-- -->
<jsp:useBean id="per1" class = "com.myclass.Person" scope = "session"></jsp:useBean> <form action = "action.jsp">
name:<input type = "text" name = "name"/><br>
sex :<input type = "text" name = "sex"/><br>
<!-- 此处name属性的值与对象属性的名称不一致,故无法填充(a,age) -->
age :<input type = "text" name = "a"/><br>
<input type = "submit" value = "submit"/><br>
</form> <!-- 表单name属性的值要和对象属性名一致 -->
<jsp:setProperty name = "per1" property = "*"></jsp:setProperty>
<jsp:getProperty name = "per1" property = "name"></jsp:getProperty>
<jsp:getProperty name = "per1" property = "sex"></jsp:getProperty>
<jsp:getProperty name = "per1" property = "age"></jsp:getProperty> </body>
</html>

可以看到,name,sex都可以正常设置值,而age却设置失败。

这是因为表单中name属性的值是“a”不是“age”,所以per1.age的值无法自动填充。

表单name属性值与对象属性值相同的部分自动填充,不相同的不能填充。

jsp:forward

将请求转发到其他页面。

<jsp:forward page = "转发的页面" ></jsp:forward>

forward.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
  <!-- 访问该页面是,将请求转发到menu.jsp页面-->
<jsp:forward page = "menu.jsp" ></jsp:forward>
</body>
</html>

menu.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href = "">随笔 </a>
<a href = "">文章 </a>
<a href = "">日记 </a>
<a href = "">评论 </a>
<a href = "">...</a>
</body>
</html>

jsp:include

将静态或动态的文件包含进当前页面。

getDate.jsp

<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=(new SimpleDateFormat("yyyy-MM-dd hh-mm-ss")).format(new Date())%>
</body>
</html>

include.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:include page= "getDate.jsp" ></jsp:include><br>
this is my index
</body>
</html>

<%@ include%>指令和 <jsp:include>的区别

jsp:include翻译成Servlet是在_jspServlet方法中,请求后才将包含界面的处理结果包含进来。

<jsp:includ>生成的Servlet中对应代码:

而<%@ include%> 在静态代码块中

在编译时就将包含的界面和当前界面合并成一个Servelt。

我们把两种包含写在一个界面中看下生成的Servlet中对应的显示:

可以看到,<%inclue%>是在编译时将当前文件和被包含文件交织在一起,然后生成一个Servlet,

而<jsp:include>是在运行时才执行被包含界面,然后将响应结果包含进来。

下面来看一个小例子:

使用动作元素编写简易网页计算器的例子。

Calculator.java

public class Calculator {
private double x;
private double y;
private String o;
private double result; public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public String getO() {
return o;
}
public void setO(String o) {
this.o = o;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
} //获取resule值的时候进行计算
public double getResult() {
if("+".equals(o))
result = x+y;
else if("-".equals(o))
result = x-y;
else if("*".equals(o))
result = x*y;
else if("/".equals(o))
result = x/y;
return result;
}
public void setResult(double result) {
this.result = result;
}
}

Calculator.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id = "cal" class = "com.myclass.Calculator" scope = "session"></jsp:useBean>
<jsp:setProperty name = "cal" property = "*"/>
<jsp:getProperty name = "cal" property = "x"/>
<jsp:getProperty name = "cal" property = "o"/>
<jsp:getProperty name = "cal" property = "y"/>=
<!-- 计算放在getResult方法中 -->
<jsp:getProperty name = "cal" property = "result"/> <form action = "calculator.jsp">
x:<input type = "text" name = "x"/>
<select name = "o">
<option value = "+">+</option>
<option value = "-">-</option>
<option value = "*">*</option>
<option value = "/">/</option>
</select>
y:<input type = "text" name = "y"/>
<input type = "submit" value = "calculator"/>
</form> </body>
</html>

先实例化对象,提交表单的参数设置对应的运算数和运算符,

最后通过<jsp:getProperty>调用计算getResutl方法中的计算步骤,并获取计算值即可。

1.2(学习笔记) JSP动作元素的更多相关文章

  1. 重温JSP学习笔记--JSP动作标签

    上一篇笔记写的是jsp的三个指令九个内置对象,这篇随笔开始写jsp的动作标签,动作标签是由服务器(Tomcat)来解释执行,与java代码一样,都是在服务器端执行的,jsp动作标签有十几多个,这里只写 ...

  2. 【Head First Servlets and JSP】笔记19:JavaBeans与JSP动作元素(<jsp:setProperty.....>、<jsp:getProperty.....>)

    内容来自imooc. 1.什么是JSP动作元素 2.在JSP页面中如何使用Javabeans <jsp:......>表示这是一个JSP动作元素 3.使用JSP动作元素创建JavaBean ...

  3. JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象

    Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...

  4. 学习笔记|JSP教程|菜鸟教程

    学习笔记|JSP教程|菜鸟教程 ------------------------------------------------------------------------------------ ...

  5. JSP动作元素——————理论篇

    JSP动作元素的组成及作用 JSP使用Action来控制Servlet引擎的行为,可重复使用JavaBean组件. 常用Action: jsp:param       在 jsp:include.js ...

  6. JSP动作元素

    JSP动作元素分类 <jsp:include page="content.jsp"></jsp:include> 使用<%@ include%> ...

  7. JSP 动作元素

    JSP动作元素 1.  动作元素分类 用来动态的包含文件.网页跳转及使用JavaBean组件等. 语法:<jsp:XXX />或者<jsp:XXX></jsp:XXX&g ...

  8. Java学习-038-JavaWeb_007 -- JSP 动作标识 - plugin

    plugin 动作时用来在 JSP 页面中加载 Java Applet 或者 JavaBean 组件,语法格式如下所示: <jsp:plugin type="bean|applet&q ...

  9. Java学习-037-JavaWeb_006 -- JSP 动作标识 - include

    这个动作是指在当前的页面中包含一个或多个 JSP 页面或者 HTML 文件,语法:<jsp:include file="../jsp/login.jsp" flush=&qu ...

随机推荐

  1. Codeforces Round #525 (Div. 2) F. Ehab and a weird weight formula

    F. Ehab and a weird weight formula 题目链接:https://codeforces.com/contest/1088/problem/F 题意: 给出一颗点有权值的树 ...

  2. 如何在plsql/developer的命令窗口执行sql脚本

    在plsql/developer的命令窗口执行sql脚本的命令是@+路径 示例如下: 第一步:在C:\Users\linsenq\Desktop目录下新建一个脚本文件: test.sql test.s ...

  3. sperman系数

    https://baike.baidu.com/item/spearman%E7%9B%B8%E5%85%B3%E7%B3%BB%E6%95%B0/7977847?fr=aladdin https:/ ...

  4. springboot部署多个vue项目

    在springboot下部署多个vue项目,只需要将vue打包成静态文件后,将其放在resources的静态文件夹下即可. 如下图:static目录下有三个vue的静态文件夹,分别为运营后台(admi ...

  5. cmd常用命令行

    新建文件夹或文件 打开磁盘     F: 退出cmd     exit 返回上一级     cd.. 创建文件夹     md 文件夹名 在d盘创建文件夹     md d:\文件夹名 在当前目录打开 ...

  6. L2-001. 紧急救援---(Dijkstra,记录路径)

    https://www.patest.cn/contests/gplt/L2-001 L2-001. 紧急救援 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 ...

  7. 汕头市队赛 SRM 06 A 撕书

    A 撕书 SRM 06 背景&&描述 游行寺汀正在杀书.         书总共有n页,每页都可以看作是一个小写英文字母,所以我们可以把书看成长度为n的字符串s.         琉璃 ...

  8. bzoj1008 矩乘递推

    2013-11-17 10:38 原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1008 比较水的题,直接矩阵乘法+递推就OK了 w[i,0 ...

  9. LCD实验学习笔记(四):系统时钟

    一般CPU频率(FCLK)高于内存.网卡等设备频率(HCLK),而串口.USB.I2C等设备频率(PCLK)更低. 系统时钟: 系统时钟源为晶振,初始频率12MHz. 通过设置MPLLCON寄存器的M ...

  10. Atos cannot get symbols from dSYM of archived application

    http://stackoverflow.com/questions/7675863/atos-cannot-get-symbols-from-dsym-of-archived-application ...