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>

  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>

  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>

  

JSP与JavaBeans的更多相关文章

  1. JAVA遇见HTML——JSP篇:JavaBeans

    Javabeans简介 Javabeans就是符合某种特定的规范的java类.使用Javabeans的好处是解决代码重复编写,减少代码冗余,功能区分明确,提高了代码的维护性. Javabean的设计原 ...

  2. 【Head First Servlets and JSP】笔记19:JavaBeans与JSP动作元素(<jsp:setProperty.....>、<jsp:getProperty.....>)

    内容来自imooc. 1.什么是JSP动作元素 2.在JSP页面中如何使用Javabeans <jsp:......>表示这是一个JSP动作元素 3.使用JSP动作元素创建JavaBean ...

  3. JavaBeans、EJB和POJO详解

    转自:http://developer.51cto.com/art/200906/130814.htm J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种轻易理解的角 ...

  4. JSP特点

    建立在servlet规范功能之上的动态网页技术. JSP文件在用户第一次请求时,会被编译成servlet,然后由servlet处理用户的请求.所以JSP可以看成运行时servlet. 1).将内容的生 ...

  5. JSP简介

    论坛 博客 微论 问答 游戏厅 天涯客 读书 更多 手机 服务 登录 注册   聚焦 民生 文学 旅游 财经 汽车 IT数码 时尚 情感 娱乐 视频 更多 北京 上海 广东 更多 天涯部落> J ...

  6. JSP基本_JavaBeans

    1.JavaBeansとはJavaBeansとは.ある機能を一つにまとめたクラスです.Webアプリケーションでは.JavaBeansは主にデータ操作に使用します.データ管理のプログラムをJavaBea ...

  7. 杂项-Java:JSP

    ylbtech-杂项-Java:JSP 1.返回顶部 1. JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Micros ...

  8. Struts 2 Learning

    目录 . J2EE简介 . JAVA EE应用的分层模型 . 搭建Struts2 Demo应用 . struts2流程 . struts2的常规配置 . 实现Action . 配置Action . 配 ...

  9. Servlet和JAVA BEAN 分析探讨

    在JSP中调用JAVA类和使用JavaBean有什么区别? 可以像使用一般的类一样使用JavaBean,Bean只是一种特殊的类.特殊在可以通过<jsp:useBean   />调用Jav ...

随机推荐

  1. hdu-1198 Farm Irrigation---并查集+模拟(附测试数据)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1198 题目大意: 有如上图11种土地块,块中的绿色线条为土地块中修好的水渠,现在一片土地由上述的各种 ...

  2. 用virtualenv构建一个新的python环境,这个新的环境在这个创建的文件夹下

    http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143271210830032 ...

  3. 利用Theano理解深度学习——Multilayer Perceptron

    一.多层感知机MLP 1.MLP概述 对于含有单个隐含层的多层感知机(single-hidden-layer Multi-Layer Perceptron, MLP),可以将其看成是一个特殊的Logi ...

  4. 表格和网页ico图标

    表格: 表格格式: <table> <tr> 表格的行 <th >表头</th> <th>表头 </th> </tr> ...

  5. wing ide 注释

    ctrl-.是批量注视 ctrl->向前缩进 ctrl-<向后缩进

  6. centos下安装mariadb

    前言 一直都是前端,比较少玩服务器,最近买了阿里云,开始尝试centos,不得不说linux还是很有魅力的. 正文 google了一圈,决定安装mariadb,其实mariadb和mysql差不多,使 ...

  7. 笔试算法题(46):简介 - 二叉堆 & 二项树 & 二项堆 & 斐波那契堆

    二叉堆(Binary Heap) 二叉堆是完全二叉树(或者近似完全二叉树):其满足堆的特性:父节点的值>=(<=)任何一个子节点的键值,并且每个左子树或者右子树都是一 个二叉堆(最小堆或者 ...

  8. Apache 配置默认编码

    找到apache配置文件 httpd.conf ,找到以下内容 # # Specify a default charset for all content served; this enables # ...

  9. JavaScriptDate(日期)

    如何使用Date()方法获取当日的日期. getFullYear(): 使用getFullYear()获取年份. getTime(): getTime()返回1970年1月1日至今的毫秒数. setF ...

  10. 5904.刺客信条(AC)

    Description           故事发生在1486 年的意大利,Ezio 原本只是一个文艺复兴时期的贵族,后来因为家族成员受到圣殿骑士的杀害,决心成为一名刺客.最终,凭借着他的努力和出众的 ...