天天看点

彻底搞明白JavaBean啦

概述

该技术已过时

jsp 已经过时,是因为代码杂糅在一起,没有做到完美的分离.不利于后期的维护

java bean 过时的原因在于面条代码的存在,即,各种代码杂乱的糅合在一起.

特点

组件式编程 步骤封装成为组件,需要那个的时候,直接调用组件即可.增加复用性

标准目录结构

WEB-INF

该目录为web目录中最安全的文件夹.保存各种类,第三方jar包,配置文件.

WEB-XML

web部署的描述符

classes

保存所有hacabean

lib

第上方jar包

tags

保存所有标签文件

jsp

保存jsp文件

css

保存样式表文件

images

保存图片文件

page导入JavaBean

package demo;                  public class demo {              public String name;              public String age;              public demo(){                  }              public void setName(String name){              this.name = name;              }              public void setAge(String age){              this.age = age;              }              public String getName(){              return this.name;              }              public String getAge(){              return this.age;              }              }               
<%--              Created by IntelliJ IDEA.              User: ming              Date: 19-3-14              Time: 下午9:19              To change this template use File | Settings | File Templates.              --%>              <%@ page contentType="text/html;charset=UTF-8" language="java" %>              <%@ page import="demo.demo" %>              <html>              <head>              <title>Title</title>              </head>              <body>              <%              demo demo = new demo();              demo.setAge("12");              demo.setName("ming");              %>              <%=demo.getName()%>              <%=demo.getAge()%>              </body>              </html>               

JavaBean与表单

同jsp 直接传参即可

jsp:useBean指令

使用jsp:useBean指令可以直接调用类

<%--              Created by IntelliJ IDEA.              User: ming              Date: 19-3-14              Time: 下午9:19              To change this template use File | Settings | File Templates.              --%>              <%@ page contentType="text/html;charset=UTF-8" language="java" %>              <jsp:useBean id="demo" scope="page" class="demo.demo"/>              <html>              <head>              <title>Title</title>              </head>              <body>              <%              demo.setName("ming");              demo.setAge("12");              %>              <%=demo.getAge()%>              <%=demo.getName()%>              </body>              </html>               

JavaBean范围

使用scope属性标记范围 当为post的时候,表示为只在本页生效. 当为request的时候,表示在一次页面跳转,不会重新实例化对象 当为session,表示对象的生命周期为整个会话 当为application的时候,表示为所有用户共同拥有这个对象.即为单例模式

栗子

注册验证

<%--              Created by IntelliJ IDEA.              User: ming              Date: 19-3-15              Time: 上午12:53              To change this template use File | Settings | File Templates.              --%>              <%@ page contentType="text/html;charset=UTF-8" language="java" %>              <html>              <head>              <title>用户注册页</title>              </head>              <body>              <jsp:useBean id="reg" scope="request" class="com.ming.Register"/>              <form action="./check.jsp" method="post">              用户名<input type="text" name="name" value="<jsp:getProperty name="reg" property="name"/>"/>              <%=reg.getErrorMsg("errname")%>              年龄<input type="text" name="age" value="<jsp:getProperty name="reg" property="age"/>"/>              <%=reg.getErrorMsg("errage")%>              E-Mail<input type="text" name="email" value="<jsp:getProperty name="reg" property="email"/>"/>              <%=reg.getErrorMsg("erremail")%>              <input type="submit" value="注册"/>              <input type="reset" value="重置"/>              </form>              </body>              </html>               
<%--              Created by IntelliJ IDEA.              User: ming              Date: 19-3-15              Time: 上午2:04              To change this template use File | Settings | File Templates.              --%>              <%@ page contentType="text/html;charset=UTF-8" language="java" %>              <html>              <head>              <title>Title</title>              </head>              <body>              <jsp:useBean id="reg" scope="request" class="com.ming.Register"/>              用户名 <jsp:getProperty name="reg" property="name"/>              年龄  <jsp:getProperty name="reg" property="age"/>              E-Mail <jsp:getProperty name="reg" property="email"/>              </body>              </html>               
<%--              Created by IntelliJ IDEA.              User: ming              Date: 19-3-15              Time: 上午12:55              To change this template use File | Settings | File Templates.              --%>              <%@ page contentType="text/html;charset=UTF-8" language="java" %>              <html>              <head>              <title>信息验证中</title>              </head>              <body>              <jsp:useBean id="reg" scope="request" class="com.ming.Register"/>              <!-- 属性自动赋值 -->              <jsp:setProperty name="reg" property="*"/>              <%              // 进行验证              if(reg.isVaildate()){              %>              <jsp:forward page="sucess.jsp"/>              <%              }else{              %>              <jsp:forward page="index.jsp"/>              <%              }              %>              </body>              </html>               
package com.ming;                  import java.util.HashMap;              import java.util.Map;                  public class Register {              private String name;              private String age;              private String email;              private Map<String, String> errors = null;              public Register(){              this.name = "";              this.age = "";              this.email = "";              this.errors = new HashMap<String, String>();              }              public boolean isVaildate(){              boolean flag = true;              // 验证name合法              if(!this.name.matches("\\w{6,15}")){              flag = false;              this.name = "";              errors.put("errname", "用户名需要为6-15位字母或数字");              }              if(!this.email.matches("\\w+@\\w+\\.\\w+\\.?\\w*")){              flag = false;              this.email = "";              errors.put("erremail", "输入email地址错误");              }              if(!this.age.matches("\\d+")){              flag = false;              this.age = "";              errors.put("errage", "年龄只能是数字");              }              return flag;              }              // 取出错误信息              public String getErrorMsg(String key){              String value = this.errors.get(key);              return value == null ? "" : value;              }                  public String getName() {              return name;              }                  public String getAge() {              return age;              }                  public Map<String, String> getErrors() {              return errors;              }                  public void setName(String name) {              this.name = name;              }                  public void setErrors(Map<String, String> errors) {              this.errors = errors;              }                  public void setEmail(String email) {              this.email = email;              }                  public void setAge(String age) {              this.age = age;              }                  public String getEmail() {              return email;              }              }