动作元素

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. 怎么给word加底纹

  2. oracle与mysql与sqlserver的分页

    假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: 1 SELECT 2 * 3 ...

  3. BigDecimal精度问题

    介绍 1.商业计算使用BigDecimal. 2.使用参数为String的构造函数. 3.BigDecimal都是不可变的,每一步的运算时,都会产生一个新的对象.所以在做加减乘除后千万要保存操作后的值 ...

  4. 图论:KM算法

    如果,将求二分图的最大匹配的所有匹配边的权重看做1 那么用匈牙利算法求二分图的最大匹配的问题也可以看成求二分图的最大权匹配 如果边权是特例,我们就要使用KM算法来做了 这个算法其实还是比较难的,会用就 ...

  5. 从一段字符串中去除数字的shell方法

  6. [bzoj3343]教主的魔法——分块

    Brief description 给定一个数列,您需要支持一下两种操作: 给[l,r]同加一个数 询问[l,r]中有多少数字大于或等于v Algorithm analyse 这个题一时想不到什么有效 ...

  7. Nginx的主要配置参数说明

    #定义Nginx运行的用户和用户组user www www; #nginx进程数,建议设置为等于CPU总核心数.worker_processes 8; #全局错误日志定义类型,[ debug | in ...

  8. Extjs GridPanel 鼠标拖动选中单元格

    本文主要是实现了一个拖动选择单元格并计算的功能

  9. C++ 异常~一 转

    C++ 异常机制分析   阅读目录 C++异常机制概述 throw 关键字 异常对象 catch 关键字 栈展开.RAII 异常机制与构造函数 异常机制与析构函数 noexcept修饰符与noexce ...

  10. UVALIVE 3891 The Teacher's Side of Math

    One of the tasks students routinely carry out in their mathematics classes is to solve a polynomial ...