概念:
什么是JavaBean?
答:其实就是一个简单Java类。不过在这个简单Java类结构是这样子的:
1、所有属性为private
2、提供默认构造方法(无参构造方法)
3、提供getter和setter
4、实现serializable接口
使用JavaBean有什么好处?
答:提高代码的重用率,代码的封装,提高安全性,易于程序开发以及维护,JSP+JavaBean可以使用Html与java代码很好分离开。体现面向对象编程思想,一切都是对象。比如,一个JavaBean对应数据库中一张表格,查询数据库返回数据可以直接封装到JavaBean中(一行数据对应一个JavaBean)。
示例:
一个简单JavaBean类示范:
package com.kinglong.javabean; public class Register { private String username; private String password; private String age; private String email; 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; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
JavaBean在JSP中使用示范:
使用JSP标签引入JavaBean:
<jsp:useBean id="register" scope="request" class="com.kinglong.vo.Register"></jsp:useBean>
id:JavaBean实例标识
scope:作用范围(JSP四大作用范围:request,page,session,application)
class:当前JavaBean所在包.类
使用JSP给JspBean设置属性值:
<jsp:setProperty property="*" name="register"/>
property:属性名。
1、使用*号表示,自动对应JavaBean中属性进行赋值操作,其中会进行自动类型转换操作。举个例子:比如在一个页面中设置了一个表单,表单中蕴含了一个JavaBean中属性名称,需要注意的是,表单中标签名字必须与JavaBean中定义属性名称一致,才能自动对应上进行赋值。其实不难发现,这其中就是使用了Java反射机制完成操作的。这样一来,在表单所提交Jsp页面直接使用上面方式就可以完成自动对应属性赋值操作。2、直接指定属性进行赋值。<jsp:setProperty property="username" name="register" value="xxx"/>
name:当前引入JavaBeanid
使用JSP给JspBean取得属性值:
<jsp:getProperty property="username" name="register"/>
property:属性名。name:当前引入JavaBeanid删除JspBean:
直接使用removeAttribute()。其实javaBean也就是使用setAttribute()设置进去的。如,scope是request,则是使用request.setAttribute()设置的,所以删除就直接使用request.romveAttribute()就可以了。
JSP+JavaBean注册验证实例:
JavaBean:
package com.kinglong.vo; import java.util.HashMap; import java.util.Map; public class Register { private String username; private String password; private String age; private String email; private Map<String, String> errors; public Register() { this.username = ""; this.password = ""; this.age = ""; this.email = ""; this.errors = new HashMap<String, String>(); //表单填写错误信息 } //校验数据有效性 public boolean isValidate() { boolean flag = true; if (!this.username.matches("\\w{6,15}")) { flag = false; errors.put("errUsername", "username error"); } if (!this.password.matches("\\w{8,11}")) { flag = false; errors.put("errPassword", "password error"); } if (!this.age.matches("\\d+")) { flag = false; errors.put("errAge", "age error"); } if (!this.email.matches("\\w+@\\w+\\.\\w+\\.?\\w*")) { flag = false; errors.put("errEmail", "email error"); } return flag; } //获取错误信息 public String getErrMsg(String key) { String errMsg = this.errors.get(key); return errMsg == null ? "" : errMsg; } 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; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
注册页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <% request.setCharacterEncoding("utf-8"); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>Register</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <jsp:useBean id="register" scope="request" class="com.kinglong.vo.Register"></jsp:useBean> <body> <form action="Check.jsp" method="post"> username:<input type="text" name="username" value=<jsp:getProperty property="username" name="register"/>><%=register.getErrMsg("errUsername") %><br><br> password:<input type="password" name="password" value=<jsp:getProperty property="password" name="register"/>><%=register.getErrMsg("errPassword") %><br><br> age:<input type="text" name="age" value=<jsp:getProperty property="age" name="register"/>><%=register.getErrMsg("errAge") %><br><br> email:<input type="text" name="email" value=<jsp:getProperty property="email" name="register"/>><%=register.getErrMsg("errEmail") %><br><br> <input type="submit" value="login"> <input type="reset" value="reset"> </form> </body> </html>注册成功跳转页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <% request.setCharacterEncoding("utf-8"); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>Register Sucess</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <jsp:useBean id="register" scope="request" class="com.kinglong.vo.Register"></jsp:useBean> <body> <h1>Register Sucess</h1> <h3>username:<jsp:getProperty property="username" name="register"/><%=register.getErrMsg("errUsername") %></h3> <h3>password:<jsp:getProperty property="password" name="register"/><%=register.getErrMsg("errPassword") %></h3> <h3> age:<jsp:getProperty property="age" name="register"/><%=register.getErrMsg("errAge") %></h3> <h3> email:<jsp:getProperty property="email" name="register"/><%=register.getErrMsg("errEmail") %></h3> </body> </html>
注册失败页面:
直接跳转会注册页面,并且在页面上面提示错误信息。web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <servlet> <servlet-name>Register.jsp</servlet-name> <jsp-file>/WEB-INF/Register.jsp</jsp-file> </servlet> <servlet> <servlet-name>Check.jsp</servlet-name> <jsp-file>/WEB-INF/Check.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>Register.jsp</servlet-name> <url-pattern>/Register.jsp</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Check.jsp</servlet-name> <url-pattern>/Check.jsp</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>代码目录结构:
本文介绍了JavaBean的概念,包括其定义特点和使用JavaBean的优势。通过一个实际的JSP+JavaBean注册验证示例,详细展示了如何创建JavaBean、在JSP中引入并设置、获取属性值,以及实现注册功能的各个页面和配置。通过这个例子,强调了JavaBean在提高代码复用性和维护性方面的价值。
225

被折叠的 条评论
为什么被折叠?



