Java Web 基础 - JavaBean

JavaBean 就是符合某种特定的规范的 Java 类。使用 JavaBean 的好处是解决代码重复编写的问题,减少代码冗余,功能区分明确,提高了代码的可维护性。

JavaBeans 设计原则:

  • 公有类
  • 无参的公有构造方法
  • 私有属性
  • getter 和 setter 方法
public class Students {
    private String name;
    public Students() {}
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return this.Name;
    }
}

JSP 动作元素

动作元素是遵循 XML 语法的标签(有一个包含元素名的开始标签,可以有属性、可选的内容、与开始标签匹配的结束标签),动作元素为请求处理阶段提供信息,有以下分类:


Java Web 基础 - JavaBean_第1张图片
动作元素

使用 JavaBeans 创建对象

public class Users {
    private String username;  // 用户名
    private String password;  // 密码
    
    public Users() {}  // 保留此默认的构造方法

    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;
    }
}

使用 new 关键字创建

在 JSP 中使用

<%@ page import="com.po.Users" %>
...

    <%
        Users user = new Users();
        user.setUsername("admin"); //设置用户名
        user.setPassword("123456");//设置密码
    %>
    用户名:<%=user.getUsername() %>
密码:<%=user.getPassword() %>

使用 JavaBeans 动作标签创建


    
    用户名:<%=myUsers.getUsername() %>
密码:<%=myUsers.getPassword() %>

getProperty 与 setProperty

login.jsp


    

系统登录


用户名:
密码:

dologin.jsp


    
    

setProperty动作元素


<%-- --%> <%-- --%> <%-- --%> <%-- 用户名:<%=myUsers.getUsername() %>
密码:<%=myUsers.getPassword() %>
--%> 用户名:
密码:
测试JavaBean的四个作用域范围 <% request.getRequestDispatcher("testScope.jsp").forward(request, response);%>

四个作用域范围

使用 时的 scope 属性可以指定 JavaBean 的作用范围:

  • page:仅在当前页面有效;
  • request:可通过 HttpRequest.getAttribute() 方法取得 JavaBean对象;
  • session:可通过 HttpSession.getAttribute() 方法取得 JavaBean对象;
  • application:可通过 application.getAttribute()方法取得 JavaBean对象。

    
    用户名:
    
    
密码:

<%-- 用户名:<%=((Users)application.getAttribute("myUsers")).getUsername()%>
密码:<%=((Users)application.getAttribute("myUsers")).getPassword() %>
--%> <%-- 用户名:<%=((Users)session.getAttribute("myUsers")).getUsername()%>
密码:<%=((Users)session.getAttribute("myUsers")).getPassword() %>
--%> <%-- 用户名:<%=((Users)request.getAttribute("myUsers")).getUsername()%>
密码:<%=((Users)request.getAttribute("myUsers")).getPassword() %>
--%> <% String username = ""; String password = ""; if (pageContext.getAttribute("myUsers") != null) { username = ((Users) pageContext.getAttribute("myUsers")).getUsername(); password = ((Users) pageContext.getAttribute("myUsers")).getPassword(); } %> 用户名:<%=username%>
密码:<%=password%>

Model 1

  • Model 1 出现之前,整个 Web 应用几乎都是由 JSP 组成(负责接收处理客户端请求、对请求处理后做出相应),界面层充斥着大量的业务逻辑代码和数据访问代码,Web 程序的可维护性和可扩展性很差;
  • Model 1 即 JavaBean + JSP 的开发模式,JavaBean 的出现使 JSP 页面中使用 JavaBean 封装的数据或调用 JavaBean 的业务逻辑代码,大大提升程序可维护性(避免在 JSP 中处理业务逻辑)。


    Java Web 基础 - JavaBean_第2张图片
    Model 1

JavaBean + JSP 实现用户登录

po/Users.java

// 用户类
public class Users {
    private String username;
    private String password;

    public Users() {}

    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;
    }
}

dao/UsersDAO.java

// 用户的业务逻辑类
public class UsersDAO {

    // 用户登录方法
    public boolean usersLogin(Users u) {
        return "admin".equals(u.getUsername()) && "admin".equals(u.getPassword());
    }
}

dologin.jsp

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %>

<% request.setCharacterEncoding("utf-8"); %>




<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";

    //如果用户和密码都等于admin,则登录成功
    if (userDAO.usersLogin(loginUser)) {
        session.setAttribute("loginUser", loginUser.getUsername());
        request.getRequestDispatcher("login_success.jsp").forward(request, response);
    } 
    else {
        response.sendRedirect("login_failure.jsp");
    }
%>

login.jsp


    

login_failure.jsp


    
登录失败!请检查用户或者密码!
返回登录

login_success.jsp


    
<% String loginUser = ""; if (session.getAttribute("loginUser") != null) { loginUser = session.getAttribute("loginUser").toString(); } %> 欢迎您<%=loginUser%>,登录成功!

你可能感兴趣的:(Java Web 基础 - JavaBean)