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. Linux 文件的压缩与解压

    1.  tar结尾压缩命令 [root@test ~]# tar -cvf grub.tar /boot/grub/ 查看压缩包文件 [root@test ~]# tar -vtf grub.tar ...

  2. 使用ASP.NET Web API和Web API Client Gen使Angular 2应用程序的开发更加高效

    本文介绍“ 为ASP.NET Web API生成TypeScript客户端API ”,重点介绍Angular 2+代码示例和各自的SDLC.如果您正在开发.NET Core Web API后端,则可能 ...

  3. 闭包 -------JavaScript

    本文摘要:http://www.liaoxuefeng.com/ 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个对Array的求和.通常情况下,求和的 ...

  4. 操作系统(2)_进程管理_李善平ppt

    所有程序都有CPU和io这两部分,即使没有用户输入也有输出. CPU最好特别忙,io空闲无所谓. 程序/数据/状态 三个维度来看进程. 等待的资源可能是io资源或者通信资源(别的进程的答复). 一个进 ...

  5. JS位运算和遍历

    JS位运算符 整数 有符号整数:允许使用正数和负数,第32位作为符号位,前31位才是存储位 无符号整数:只允许用正数 如果用n代表位 位数 = 2^n-1 由于位数(1.2.4.8.16...)中只有 ...

  6. mysql运维-二进制日志BINARY LOG清理

       1.1 方法1:PURGE MASTER LOGS     语法: PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetim ...

  7. MySQL - FIND_IN_SET 函数使用方法

    SELECT * FROM xxxTableName x WHERE FIND_IN_SET(x.id, '1,2,3,4,5,6,7,8');   如上查询,意为:xxxTableName 表中 x ...

  8. NopCommerce(Core)学习目录

    1.NopCommerce下载运行 2.登录及权限 3.日志 4.依赖注入使用autofac 5.插件实现 ...

  9. JZOJ 3463. 【NOIP2013模拟联考5】军训

    3463. [NOIP2013模拟联考5]军训(training) (Standard IO) Time Limits: 2000 ms  Memory Limits: 262144 KB  Deta ...

  10. Codeforces Round #464 (Div. 2) C. Convenient For Everybody

    C. Convenient For Everybody time limit per test2 seconds memory limit per test256 megabytes Problem ...