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>
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的更多相关文章
- JAVA遇见HTML——JSP篇:JavaBeans
Javabeans简介 Javabeans就是符合某种特定的规范的java类.使用Javabeans的好处是解决代码重复编写,减少代码冗余,功能区分明确,提高了代码的维护性. Javabean的设计原 ...
- 【Head First Servlets and JSP】笔记19:JavaBeans与JSP动作元素(<jsp:setProperty.....>、<jsp:getProperty.....>)
内容来自imooc. 1.什么是JSP动作元素 2.在JSP页面中如何使用Javabeans <jsp:......>表示这是一个JSP动作元素 3.使用JSP动作元素创建JavaBean ...
- JavaBeans、EJB和POJO详解
转自:http://developer.51cto.com/art/200906/130814.htm J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种轻易理解的角 ...
- JSP特点
建立在servlet规范功能之上的动态网页技术. JSP文件在用户第一次请求时,会被编译成servlet,然后由servlet处理用户的请求.所以JSP可以看成运行时servlet. 1).将内容的生 ...
- JSP简介
论坛 博客 微论 问答 游戏厅 天涯客 读书 更多 手机 服务 登录 注册 聚焦 民生 文学 旅游 财经 汽车 IT数码 时尚 情感 娱乐 视频 更多 北京 上海 广东 更多 天涯部落> J ...
- JSP基本_JavaBeans
1.JavaBeansとはJavaBeansとは.ある機能を一つにまとめたクラスです.Webアプリケーションでは.JavaBeansは主にデータ操作に使用します.データ管理のプログラムをJavaBea ...
- 杂项-Java:JSP
ylbtech-杂项-Java:JSP 1.返回顶部 1. JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Micros ...
- Struts 2 Learning
目录 . J2EE简介 . JAVA EE应用的分层模型 . 搭建Struts2 Demo应用 . struts2流程 . struts2的常规配置 . 实现Action . 配置Action . 配 ...
- Servlet和JAVA BEAN 分析探讨
在JSP中调用JAVA类和使用JavaBean有什么区别? 可以像使用一般的类一样使用JavaBean,Bean只是一种特殊的类.特殊在可以通过<jsp:useBean />调用Jav ...
随机推荐
- 【HDU4473】Exam(数学题)
点此看题面 大致题意: 设\(f(x)=\sum[(a*b)|x]\),求\(\sum_{x=1}^nf(x)\). 转化题意 将题意进行转换,我们就可以发现,我们要求的\(ans\)就是满足\(x* ...
- Linux 开启关闭防火墙
开放防火墙端口添加需要监听的端口 /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT/sbin/iptables -I INPUT -p tcp ...
- solr数据分片相关
solr操作url 使用正常的core,使用命令生成coillection solr create_collection -c students2 -d ../server/solr/my/conf ...
- vue中created、mounted等方法整理
- 在mininet上基于ovs,ovx,pox搭建三点虚拟网络
本次试验基于mininet平台,在平台中利用ovs新建1个交换机,以pox为控制器,ovx作为中间层实现虚拟化. 基础请参照http://ovx.onlab.us/getting-started/tu ...
- Linux下的GPT分区,使用parted命令
Linux下的GPT分区,这是另外一种分区,针对MBR分区,它有很多优点: (1)几乎突破了分区个数的限制. 在GPT分区表中最多可以支持128个主分区. (2)单个分区容量几乎没有限制. 单个分区最 ...
- http 工作模式与模块
目录 http 工作模式与模块 http 服务器应用 MPM工作模式 prefork worker event 进程角色 httpd功能特性 http 安装 centos6配置目录 http 2.2 ...
- PHP添加扩展模块的方法
进入源码包对应扩展模块目录下 ##extname 代表扩展模块名 cd /usr/local/src/php-5.5.36/ext/extname 然后执行phpize##phpize是一个shell ...
- thinkphp 3.2.3 - Think.class.php 解析
class Think { public static function start() { // 注册AUTOLOAD方法 spl_autoload_register('Think\Think::a ...
- 洛谷 P2279 [HNOI2003]消防局的设立
题目描述 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成了一个巨大的树状 ...