zoukankan      html  css  js  c++  java
  • JSP与JavaBeans

      JavaBeans简介

      JavaBeans是一种符合一定标准的普通java类,需要满足下面几点:

      1 类是public

      2 属性私有

      3 空的public构造方法

      4 通过getter setter操作属性

      JSP有很多的标签,比较常用的就是与javaBean相关的标签:

      <jsp:useBean>设置javaBean

      <jsp:setProperty> 设置javabean中属性值

      <jsp:getProperty> 获取javaBean属性值

      设置javaBean 要满足下面的语法:

    <jsp:useBean id="user" class="com.po.Users" scope="page"></jsp:useBean>

      其中id是该类的标识,相当于我们创建的对象名称;

      class是类的全名,包括类的包名;

      scope是该javabean的使用范围,包括下面四中:

      page:仅应用于当前页面

      request:可以在reqest之间使用,比如通过转发连带传送request对象,也可以得到该属性。

      session:可以再一个会话期间使用

      application:在整个服务器启动期间都可以使用

      设置属性值 可以使用下面四种方式:

        <jsp:setProperty name="JavaBean name" property="*" />
        <jsp:setProperty name="JavaBean name" property="JavaBean属性名称" />
        <jsp:setProperty name="JavaBean name" property="JavaBean属性名" value="BeanValue" />手工设置
        <jsp:setProperty name="JavaBean name" property="peroperty name" param="request对象中参数名" />

      样例如下:

        <!-- 根据表单匹配所有的属性-->
        <jsp:setProperty property="*" name="user"/>
        
        <!-- 根据表单匹配部分的属性 -->
        <jsp:setProperty property="username" name="user"/>
        
        <!-- 与表单无关,手动设置 -->
        <jsp:setProperty property="username" name="user" value="张三"/>
         
        <!-- 通过URL传参 -->
        <jsp:setProperty name="user" property="username" param="myname"/>
        <jsp:setProperty name="user" property="password"/>
    
        <!-- 使用传统表达式方式 -->
        用户名:<%=user.getUsername() %><br>
        密码:<%=user.getPassword() %><br>
        
        <!-- 使用getProperty标签方式 -->
        用户名:<jsp:getProperty property="username" name="user"/><br>
        密码:<jsp:getProperty property="password" name="user"/><br>

      其中使用URL参数传送参数的时候,需要再前面的url后面,添加参数,例如:

    <form name="loginForm" action="doLogin.jsp?myname=444" method="post">

      JSP与javaBeans

      有了JSP为什么要使用javaBeans呢?

      因为JSP是一种java代码与html混合的语言,这样机会导致页面的表现层与行为层混合在一起,不利于后期的维护和调试。

      所以最开始的时候,JSP开发就是使用一大堆的JSP页面,互相跳转,很混乱,于是就有了一种新的解决方法:

      Model1:模型1,它的架构如下:

      可以看到用户是对JSP进行访问,但是JSP通过调用Javabean间接与数据库交互,分离页面表与逻辑层。

      这样就能达到一种解耦的效果。

      使用Model1模型,开发登录界面

      业务场景跟前面一样,用户登录login.jsp,成功后跳转到login_success.jsp,并提示登录用户名;失败后,跳转到login_failure.jsp页面,并提示登录跳转到登录界面。

      只不过在跳转逻辑处理界面dologin.jsp中,不在直接进行逻辑处理,而是调用javaBean进行逻辑判断。

      dologin.jsp代码如下:

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%@ page import="com.po.Users" %>
    <%@ page import="com.dao.UsersDao" %>
    
    <jsp:useBean id="user" class="com.po.Users" scope="page"></jsp:useBean>
    <jsp:useBean id="userdao" class="com.dao.UsersDao" scope="page"></jsp:useBean>
    <jsp:setProperty name="user" property="*"/>
        
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>用户登录</title>
    </head>
    <body>
        <h1>javaBeans</h1>
        <hr>
        <%
            request.setCharacterEncoding("utf-8");
        
            if(userdao.isUser(user)){
                session.setAttribute("username",user.getUsername());
                request.getRequestDispatcher("login_success.jsp").forward(request,response);
            }else{
                response.sendRedirect("login_failure.jsp");
            }
        %>
    </body>
    </html>

      Users.java代码如下:

    package com.po;
    
    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;
        }
    }

      UsersDao.java代码如下

    package com.dao;
    
    import com.po.Users;
    
    public class UsersDao {
        public boolean isUser(Users u){
            if("xingoo".equals(u.getUsername()) && "123".equals(u.getPassword())){
                return true;
            }else{
                return false;
            }
        }
    }

      其他的代码,login.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>用户登录</title>
    </head>
    <body>
        <h1>用户登录</h1>
        <hr>
        <!--<form name="loginForm" action="doLogin.jsp?myname=444" method="post">  -->
        <form name="loginForm" action="doLogin.jsp" method="post">
            <table>
                <tr>
                    <td>username</td>
                    <td><input type="text" name="username" value=""/></td>
                </tr>
                <tr>
                    <td>password</td>
                    <td><input type="password" name="password" value=""/></td>
                </tr>
                <tr>
                    <td colspan="2" align="center"><input type="submit" value="submit"/></td>
                </tr>
            </table>
        </form>
    </body>
    </html>
    View Code

      login_success.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>用户登录</title>
    </head>
    <body>
        <h1>用户登录</h1>
        <hr>
        欢迎您!<%=session.getAttribute("username") %>
    </body>
    </html>
    View Code

      login_failure.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>用户登录</title>
    </head>
    <body>
        <h1>用户登录</h1>
        <hr>
        登录失败!<a href="login.jsp">返回登录</a>
    </body>
    </html>
    View Code

      

  • 相关阅读:
    spring集成quartz
    ScheduledExecutorService
    中国方言输入法Rime入门
    TinyOS实例介绍
    公式输入较好的参考
    USRP IQ信号分析
    法语学习(1)--入门资料推荐
    Python小技巧
    编码知识
    jaspersoft studio colunm header and detail ,detail中显示多列数据
  • 原文地址:https://www.cnblogs.com/xing901022/p/4357338.html
Copyright © 2011-2022 走看看