1.2(学习笔记) JSP动作元素
动作元素
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动作元素的更多相关文章
- 重温JSP学习笔记--JSP动作标签
上一篇笔记写的是jsp的三个指令九个内置对象,这篇随笔开始写jsp的动作标签,动作标签是由服务器(Tomcat)来解释执行,与java代码一样,都是在服务器端执行的,jsp动作标签有十几多个,这里只写 ...
- 【Head First Servlets and JSP】笔记19:JavaBeans与JSP动作元素(<jsp:setProperty.....>、<jsp:getProperty.....>)
内容来自imooc. 1.什么是JSP动作元素 2.在JSP页面中如何使用Javabeans <jsp:......>表示这是一个JSP动作元素 3.使用JSP动作元素创建JavaBean ...
- JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象
Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...
- 学习笔记|JSP教程|菜鸟教程
学习笔记|JSP教程|菜鸟教程 ------------------------------------------------------------------------------------ ...
- JSP动作元素——————理论篇
JSP动作元素的组成及作用 JSP使用Action来控制Servlet引擎的行为,可重复使用JavaBean组件. 常用Action: jsp:param 在 jsp:include.js ...
- JSP动作元素
JSP动作元素分类 <jsp:include page="content.jsp"></jsp:include> 使用<%@ include%> ...
- JSP 动作元素
JSP动作元素 1. 动作元素分类 用来动态的包含文件.网页跳转及使用JavaBean组件等. 语法:<jsp:XXX />或者<jsp:XXX></jsp:XXX&g ...
- Java学习-038-JavaWeb_007 -- JSP 动作标识 - plugin
plugin 动作时用来在 JSP 页面中加载 Java Applet 或者 JavaBean 组件,语法格式如下所示: <jsp:plugin type="bean|applet&q ...
- Java学习-037-JavaWeb_006 -- JSP 动作标识 - include
这个动作是指在当前的页面中包含一个或多个 JSP 页面或者 HTML 文件,语法:<jsp:include file="../jsp/login.jsp" flush=&qu ...
随机推荐
- Exponial~(欧拉函数)~(发呆题)
Description Everybody loves big numbers (if you do not, you might want to stop reading at this point ...
- PHP正则替换preg_replace函数的使用
<?php $str="as2223adfsf0s4df0sdfsdf"; echo preg_replace("/0/","",$s ...
- DOM操作的一个小坑
最近在苦读<JavaScript高级程序教程>,真不愧是前端圣经,学到了很多东西. nodeList.NameNodeMap.HTMLCollection这三个集合是动态的!每当文档发生变 ...
- Python 入门学习笔记
安装和运行 官网下载安装包https://www.python.org/downloads/mac-osx/下载完直接安装即可 运行打开 terminal,输入命令 python,进入 python ...
- 动态规划:划分DP
划分型动态规划之数的划分 先贴上2014年10月31日的那份代码,甚至怀念当时在机房YY这道题的场面 高中最快乐的时候.. #include<iostream> using namespa ...
- [bzoj2427][HAOI2010]软件安装——强连通分量+树形DP
题目大意 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和最大). 但是 ...
- 转:js中javascript:void(0) 真正含义
from:http://www.jb51.net/article/71532.htm 在Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值. 我想使用过ajax的都常 ...
- Python selenium.webdriver.chrome.options.Options() Examples
The following are 27 code examples for showing how to use selenium.webdriver.chrome.options.Options( ...
- linux tomcat 乱码
使用vi编辑器编辑长文件时,常常是头昏眼花,也找不到需要更改的内容. 这时,使用查找功能尤为重要. 方法如下: 1.命令模式下输入“/字符串”,例如“/Section 3”. 2.如果查找下一个,按“ ...
- 搜索引擎--范例:新浪微博API获取最近的微博--statuses/public_timeline
新浪微博平台跟新浪SAE一样,都是一个字“坑”,好了,不再吐槽,直入主题 1:直接登录新浪,添加网站,就直接添加我们在新浪SAE上创建的应用即可 2:填写信息,ICP备案信息号填写sinaapp.co ...