一:Javabean就是一个类,但是遵循特定的设计原则
1):是公有类 2):属性私有 3):无参的公有构造函数 4):getter和setter方法
二:什么是jsp动作元素
动作元素为请求处理阶段提供信息。动作元素遵循XML元素的语法,有一个包含元素名的开始标签,可以有属性,可选的内容,与开始元素配置的结束标签。
第一类是与存取Javabean有关的,包括<jsp:useBean>,<jsp:serProperty>,<jsp:getProperty>
第二类是JSP1.2就开始有的基本元素,包含六个动作元素:<jsp:include>,<jsp:params>,<jsp:fallback>,<jsp:plugin>,<jsp:forward>,<jsp:param>
第三类是JSP2.0新增的元素,与JSP Document有关,包括六个元素:<jsp:text>,<jsp:output>,<jsp:root>,<jsp:declaration>,<jsp:scriptlet>,<jsp:expression>
第四类是JSP2.0新增的元素,主要是用来动态生成XML元素标签的值,包括三个动作:<jsp:attribute>,<jsp:body>,<jsp:element>
第五类是JSP新增的元素,主要是用在Tag File中,有两个元素:<jsp:invoke>,<jsp:dobody>
三:使用javabean的方法
1:用普通的方法创建javabean
1):首先编写一个javabean
public class User {
private String username;
private int age;
public User() {}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2):在index.jsp中导入User类,然后通过new的方法创建一个User的对象
<%@ page import="com.swpu.User" %>
<html>
<%
User user=new User();
user.setUsername("admin");
user.setAge(12);
%>
<head>
<title>使用普通方式创建Javabean</title>
<hr>
用户名:<%=user.getUsername()%><br>
年龄:<%=user.getAge()%>
</head>
<body>
</body>
</html>
2:在Jsp页面中通常使用jsp动作标签使用javabean
<jsp:useBeans>:在jsp页面中实例化或者在指定范围内使用javabean <jsp:useBean id="标识符" class="java类名" scope="作用范围" />
<jsp:setProperty>:给已经实例化的javabean对象的属性赋值,一共有四种形式:
<jsp:setProperty name="javabean实例名" property="*" />(跟表单关联)
<jsp:setProperty name="javabean实例名" property="javabean属性名" />(跟表单关联)
<jsp:setProperty name="javabean实例名" property="javabean属性名" value="BeanVlaue" />(手工设置)
<jsp:setProperty name="javabean实例名" property="propertyName" param="request对象中的参数名">(跟request关联)
login.jsp页面
<html>
<head>
<title>用户信息填写页面</title>
</head>
<body>
<form name="loginForm" action="doLogin.jsp" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username" value=""></td>
</tr>
<tr>
<td>年龄:</td>
<td><input type="text" name="age" value=""></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="提交"></td>
</tr>
</table>
</form>
</body>
</html>
dologin.jsp页面
<body>
<jsp:useBean id="user" class="com.swpu.User" scope="request"></jsp:useBean>
<!-- 第一种使用方法-->
<jsp:setProperty name="user" property="*"/>
用户名:<jsp:getProperty name="user" property="username"/><br>
年龄:<jsp:getProperty name="user" property="age"/><br>
<a href="testScope.jsp">测试javabean的作用域</a>
<hr>
<!--第二种使用方法-->
<jsp:setProperty name="user" property="username"/>
用户名:<%= user.getUsername()%><br>
<jsp:setProperty name="user" property="age"/>
年龄:<%=user.getAge()%>
<hr>
<!--第三种使用方法-->
<jsp:setProperty name="user" property="username" value="tttt" />
用户名:<%=user.getUsername()%><br>
<jsp:setProperty name="user" property="age" value="15"/>
年龄:<%=user.getAge()%>
</body>
第四种方法是根据request 来传参的,所以
<form name="loginForm" action="doLogin.jsp?name="ttt"&age=12" method="post">
<jsp:setProperty name="user" property="username" param="name"/>
<jsp:setProperty name="user" property="age" param="age"/>
<jsp:getProperty >:获取指定javabean对象的属性值 <jsp:getProperty name="javabean实例" property="属性名" />
四:javabean的四个作用域范围
1:page :仅在当前页面有效
2:request:可以通过HttpRequest.getAttribute()方法取的javabean的对象,超链接表示一次新的请求,所以超链接之后的页面跟原页面不在同一个请求当中,可以用服务器跳转来解决这个问题。request.getRequestDispatcher().forward(req,resp)
3:session :可以通过HttpSession.getAttribute()方法取的javabean的对象
4:application:可以通过application.getAttribute()方法取得javabean的对象
用application来举例说明
<html>
<head>
<title>setProperty的使用</title>
</head>
<body>
<jsp:useBean id="user" class="com.swpu.User" scope="application"></jsp:useBean> //测试application
<!-- 第一种使用方法-->
<jsp:setProperty name="user" property="*"/>
用户名:<jsp:getProperty name="user" property="username"/><br>
年龄:<jsp:getProperty name="user" property="age"/><br>
<a href="testScope.jsp">测试javabean的作用域</a>
</body>
</html>
<%@page import="com.swpu.User" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<jsp:useBean id="user" class="com.swpu.User" scope="application"/>
<h1>测试javabean的四个作用域</h1>
用户名:<jsp:getProperty name="user" property="username"/><br>
年龄: <jsp:getProperty name="user" property="age"/>
<hr>
使用内置对象来获取
用户名:<%= ((User)application.getAttribute("user")).getUsername()%><br>
年龄:<%=((User)application.getAttribute("user")).getAge()%>
</body>
</html>