JSP动作
文章目录
JSP 动作用于执行插入文件、重用 bean、将用户转到其他页面及将对象实例化等任务。在 JSP 页 面中使用 JSP 动作的语法为:
<jsp:attribute>
使用 JSP 动作时需要提供属性值。下表列出了各种 JSP 动作标记及其描述、支持的属性和属性的描述:
JSP动作 | 描述 | 属性 | 属性描述 |
---|---|---|---|
< jsp:plugin> | 执行 Java applet 或 JavaBean。 | type ,code ,codebase | 与属性相对应定义要纳入的插件的类型。 定义将由插件执行的类。 定义代码的路径。 |
<jsp:getProperty > | 检索bean的属性 | name,property | 定义 bean 的名称。 定义要从中检索值的属性。 |
<jsp:setProperty > | 用于设置bean的属性 | name ,property ,value ,param | 指定 bean 的名称。 定义要设置值的属性。 为 bean 属性定义一个显式值。 定义要使用的请求参数的名称。 |
< jsp:useBean> | 调用并查找现有 bean。 | Id class scope beanName | 唯一地标识 bean 的实例。 识别要从中实现 bean 对象的类。 定义 bean 的范围。 定义 bean 的参考名。 |
< jsp:forward> | 用于向目标页面 转发请求。 | page | 指定目标页面的 URL。 |
< jsp:include> | 在当前 JSP 页 面中包括一个文 件 | page,flush | 指定要包含的资源的URL。指定是否应刷新缓冲区。flush 值可 以是 true 或 false。 |
< jsp:param> | 定义将要传送给待纳入或转发页面的参数。 | name,value | 定义引用参数的名称。 定义指定参数的值。 |
1.1< jsp:include>动作标记
用于将一个JSP页面的输出纳入另一个JSP页面,也可用于向当前JSP页面添加文件。使用< jsp:include>动作标记需要提供文件的路径和刷新参数的值。
使用举例:使用< jsp:include>动作标记在网页上输出系统日期。
准备两个JSP文件:
- IncludeDatePage.jsp:使用动作标记包含JSP 文件 DatePage.jsp 的输出。
- DatePage.jsp:使用 JSP 脚本表达式显示当前系统日期。
IncludeDatePage.jsp
<body>
<%--使用include动作标记引入DatePage.jsp文件--%>
<h4>今天的日期是:<jsp:include page="DatePage.jsp" flush="true"></jsp:include> </h4>
<p>上面时间是DatePage.jsp的输出</p>
</body>
DatePage.jsp
<body>
<%--获取系统日期数据--%>
<%=new java.util.Date()%>
</body>
效果
1.2**< jsp:useBean>**
该动作标记用于调用并查找现有 bean。基本语法如下
<jsp:useBean id="类对象名称" class="类名例如:com.user" scope="范围">
使用该语句时,如果存在对应的实体类对象,则返回对象的引用,此时可以操作对象里的值.如果不存在该对象,则会实例化一个对象同时存储到指定的范围.
scope范围
scope可取4个值,分别对应4个范围
- application,web应用程序,每个web项目只能有一个,在对应网站中的所有用户都共用一个application,同时在项目的各个页面都可以读取它(在整个项目的生命周期内有效).
- session,在当前的会话中有效.
- request,在用户本次的请求中有效.
- page:scope的默认值,只在当前界面有效.
jsp操作bean方法
- getProperty,获取bean的值
- setProperty,设置bean的值
1.3setProperty方法
用于设置bean的属性
使用方法一
<jsp:setProperty name="类对象名称" property="*"></jsp:setProperty>
使用这种方法时,前端表单的标签的name将与类对象所含变量名一一进行对比,如果标签的name与变量名相同,则name封装的值将赋给对象中同名的变量.
举个例子,input输出框name值为username,同时在用户实体类中也存在变量username,则前端username封装的值将赋给用户实体类中的username.
使用方法二
<jsp:setProperty name="类对象名称" property="username"/>
这里指定了具体属性username,则用户实体类中只会有username被赋值.password等其他属性值将为空.
使用方法三
<jsp:setProperty name="类对象名称" property="username" value="值"/>
直接给username属性赋值,此时前端的username值将不会赋给用户实体类的username.
1.4getProperty方法
检索bean的属性。
使用语法
<jsp:getProperty name="类对象名" property="属性名/>
上面的对象名,如果bean用的是useBean创建,则对应使用useBean动作创建bean时的id。
案例:通过useBean实例化bean,获取用户名和密码
login.html,登录界面
<form action="useBean.jsp" method="post">
<table>
<tr>
<td><label>username</label></td>
<td><input type="text"name="username" id="username"></td>
</tr>
<tr>
<td><label>password</label></td>
<td> <input type="password" name="password" id="password"> </td>
</tr>
</table>
<button>登录</button>
</form>
用户实体类
package com.user;
public class User {
private String username;
private String password;
public User(){
super();
}
public void setPassword(String password) {
this.password = password;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsername(){
return this.username;
}
public String getPassword() {
return this.password;
}
public User(String username, String password){
super();
this.password=password;
this.username=username;
}
}
useBean.jsp
<body>
<jsp:useBean id="user" class="com.user.User"></jsp:useBean>
<jsp:setProperty name="user" property="*"></jsp:setProperty>
用户名为:<jsp:getProperty name="user" property="username"/>
密码为:<jsp:getProperty name="user" property="password"/>
</body>
输出(输入为用户名Huang,密码12345)
点击登录
1.5<jsp: plugin >
用于在jsp页面嵌入java插件,例如java applet,以下介绍它的几个属性:
- type:类型,bean或者applet
- name:applet名称
- code:对应的是所执行的java类名。
- codebase:插件将运行的java类目录,空则为该JSP文件的路径
使用举例
<jsp:plugin type="applet" code="User" codebase="com.user"/>
插件类型为applet,运行的java类名为user
1.6<jsp: param>
定义将要传送给转发页面的参数。语法为
<jsp:param name="参数名" value="参数值"/>
下面会有配合forward使用的例子.
1.7 < jsp:forward>
用于向目标页面转发请求。简单的例子就是登录成功后跳转到欢迎界面。forward是请求转发,不是重定向,这意味着它可以携带request对象中封装的数据到新的页面中。
使用的语法为
< jsp:forword page="目标页面的相对路径"/>
这里需要注意几点
- 路径是相对路径,当使用"/"开头时,则从web应用程序的根目录开始寻找。
- 这里的路径也可以在请求时通过计算得出.
- 只能转发请求到内部资源,不能是外部文件
使用举例
<form actioo="#" method="post">
<table>
<tr>
<td><label>username</label></td>
<td><input type="text"name="username" id="username"></td>
</tr>
<tr>
<td><label>password</label></td>
<td> <input type="password" name="password" id="password"> </td>
</tr>
</table>
<button>登录</button>
</form>
<%
String username=request.getParameter("username");
String password=request.getParameter("password");
%>
<jsp:forward page="welcome.jsp">
<jsp:param name="username" value="<%=username%>"/>
<jsp:param name="password" value="<%=password%>"></jsp:param>
</jsp:forward>
点击登录按钮后,会携带参数username和password将请求转发到目标页面.