一、jsp:useBean的基本用法
jsp:useBean是一个JSP动作指令,表示装载一个将在JSP页面中使用的JavaBean。jsp:useBean的最基本语法如下:
<jsp:useBean id="name" class="package.class" />
其中id表示定义的JavaBean的唯一标识,class表示定义的JavaBean的类。定义了一个JavaBean就可以为其属性赋值了,可以使用jsp:setProperty动作为JavaBean的属性赋值,也可以使用jsp:getProperty动作来获取属性的值。
二、jsp:getProperty
可以使用jsp:getProperty来获取指定的JavaBean的值,基本语法如下:
其中name就是在定义JavaBean实例时使用的id,property就是需要获取值的属性名。
三、jsp:setProperty
可以使用jsp:setProperty为已经实例化的JavaBean的属性赋值,而jsp:setProperty共有四种使用方式。
1、
这种方法与表单元素相关联,就是将表单中所有元素与JavaBean属性进行对应,如果元素名与属性名相同,则将表单元素的值赋给对应的属性。可以通过一个实例来解释一下这个用法,现有一个登录的界面如下,表单中有两个元素用户名userName和密码password,表单提交后将由dologin.jsp进行处理。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
登录
请登录
接着现有一个JavaBean,名为User,也有两个属性userName和password。
public class User {
private String userName;
private String password;
public User() {
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
现在在dologin.jsp中将表单提交的用户名与密码全部获取到,这时就可以使用
跟表单关联,设置所有的属性值
用户名:
密码:
运行项目,先进入login.jsp页面,输入用户名zhangsan,密码123456,点击登录。
登录后可以看到用户名为zhangsan密码为123456。
2、
这个方法也与表单相关联,不同的是这里的属性不再是全部的属性都与表单关联,而是指定相应的属性与表单关联,未指定的属性将不被赋值。修改dologin.jsp代码如下:
跟表单关联,设置对应元素的属性值
用户名:
密码:
只指定userName与表单元素关联,运行程序,仍输入用户名zhangsan密码123456,点击登录后,运行结果如下:
因为指定了userName与表单元素关联,所以获取到了userName的值,password没有关联,所以获取到的password元素为空。
3、
使用这个方法可以直接为JavaBean的相应属性赋value里的值,再次修改dologin.jsp的代码。
直接给指定的属性赋值
用户名:
密码:
在这里直接给userName赋值lisi,运行程序,尽管在登录页面输入了用户名zhangsan,但是点击登陆后给userName赋的值为lisi。
4、
使用这个方法通过获取request的参数来为相应的属性赋值,其中param为参数名。修改login.jsp的代码,在form里的action中添加一个参数myUserName,值为wangwu。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
登录
请登录
然后在dologin.jsp中获取这个myUserName的值并为userName赋值,运行程序。
与request的参数关联,为指定的属性赋值
用户名:
密码:
运行程序,在登录页面输入用户名zhangsan密码123456,点击提交后获取到的用户名为wangwu。
四、JavaBean的四个作用域
在使用jsp:useBean时可以使用scope属性为JavaBean指定作用域,scope的值有四个:page(默认),request,session,application。下面来分别介绍这四个作用域。
1、application作用域
当指定JavaBean的作用域为application表示在整个项目的生命周期中都有效,服务器重启后失效。
2、session作用域
session作用域表示在当前会话周期内有效,只要仍在当前的会话生命周期内,就可以获取到相应的属性值。
3、request作用域
request作用域表示在当前用户的请求内有效,如果超过了当前请求,则获取不到相应的JavaBean的值。
4、page作用域
page作用域表示只在当前的页面有效,所以不管是请求重定向还是服务器内部转发,当发生页面跳转时都不能获取到JavaBean的属性值信息。page作用域是jsp:useBean的默认作用域。
五、请求重定向与请求转发的区别
1、请求重定向
使用responce.sendRedirect(“xx.jsp”)来进行重定向。是客户端的行为:即客户端会访问两次,第一次访问后会立即跳转到第二个重定向页面上,从本质上讲等于两次请求,而前一次的请求封装的request对象不会保存,地址栏的URL地址会改变。
2、请求转发
使用request.getRequestDispatcher(“xx.jsp”).forward(request,response)请求转发。forward(request,response)用于保存内置对象request和response。是服务器的行为:服务器会代替客户端去访问转发页面,从本质是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变。
转载自:https://blog.csdn.net/chickenbro_/article/details/80829343