javaweb学习--javabean
阅读电子书《Java Web从入门到精通》密码:461c,学习JavaWeb基础知识
JavaBean类似于.net的实体类,但是规则上稍复杂一些,能实现的功能也多一些
一、介绍
1、规则
package com.lyq.bean; /**
* 新闻(乱码处理)
* @author Administrator
*
*/
public class News {
private String title;
private String content; public String getTitle() {
return this.title;
} public void setTitle(String title) {
this.title = title;
} public String getContent() {
return this.content;
} public void setContent(String content) {
this.content = content;
}
}
可无构造函数,每个属性都是私有,使用setXX赋值getXX取值。若有默认值,可自行添加构造函数处理
2、使用
在jsp页面中使用以下代码实例化使用
<jsp:useBean id="自定义id" class="javabean类的全路径"></jsp:useBean>
以下代码赋值
<jsp:setProperty property="属性名" name="自定义的javabean的Id" />
以下代码取值
<jsp:getProperty property="属性值" name="自定义的javabean的id" />
自定义javabea的id.getXX()
完成代码为
<form action="news_release.jsp" method="post">
<b>新闻发布</b><br />
标题:<input name="title" id="title" /><br />
内容:<textarea name="content" id="content" rows="8" cols="40"></textarea><br />
<input type="submit" value="发布" />
</form>
<jsp:useBean id="news" class="com.lyq.bean.News"></jsp:useBean>
<jsp:useBean id="encoding" class="com.lyq.bean.CharactorEncoding"></jsp:useBean>
<jsp:setProperty property="*" name="news" />
<div><%= encoding.toString(news.getTitle()) %></div><br />
<div><%= encoding.toString(news.getContent()) %></div><br />
package com.lyq.bean; import java.io.UnsupportedEncodingException; /**
* 乱码处理类
*
* @author Administrator
*
*/
public class CharactorEncoding {
/**
* 构造方法
*/
public CharactorEncoding() { } /**
* 对字符串进行转码处理
*
* @param str
* 要转码的字符串
* @return 编码后的字符串
*/
public String toString(String str) {
String text = "";
if (str == null || "".equals(str))
return text;
try{
text = new String(str.getBytes("ISO-8859-1"), "UTF-8");
}catch(UnsupportedEncodingException e){
e.printStackTrace();
} return text;
}
}
二、使用案例
1、邮箱验证
jsp页面
<form action="email_result.jsp" method="post">
邮箱格式验证<br />
邮箱地址:<input type="text" name="mailAdd" id="mailAdd" /><br />
<input type="submit" value="验证" />
</form>
jsp验证结果页面
<body>
<div align="center">
<%
String mailAdd = request.getParameter("mailAdd");
Email email = new Email(mailAdd);
if (email.isEmail()) {
out.print(mailAdd + " <br />是一个标准的邮箱地址!<br />");
} else {
out.print(mailAdd + " <br />不是一个标准的邮箱地址!<br />");
}
%>
<a href="email.jsp">返回</a>
</div>
</body>
javabean代码
package com.lyq.bean; import java.io.Serializable; /**
* 邮箱类
*
* @author Administrator
*
*/
public class Email implements Serializable {
/**
* serialVersionUID值
*/
private static final long serialVersionUID = 1L;
/**
* Email地址
*/
private String mailAdd;
/**
* 是否是一个标准的Email地址
*/
private boolean email; /**
* 默认无参的构造函数
*/
public Email() { } /**
* 构造方法
*
* @param mailAdd
* Email地址
* @return
*/
public Email(String mailAdd) {
this.mailAdd = mailAdd;
} /**
* 是否是一个标准的Email地址
*
* @return 布尔值
*/
public boolean isEmail() {
String regex = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
if (mailAdd.matches(regex)) {
email = true;
}
return email;
} public String getMailAdd() {
return mailAdd;
} public void setMailAdd(String mailAdd) {
this.mailAdd = mailAdd;
} }
2、日期显示
jsp页面
<style type="text/css">
#clock {
width: 420px;
height: 80px;
background: #E0E0E0;
font-size: 25px;
font-weight: bold;
border: solid 5px orange;
padding: 20px;
} #week {
padding-top: 15px;
color: #0080FF;
}
</style>
<meta http-equiv="Refresh" content="1"><%-- 页面1秒刷新一次,显示出时间效果 --%>
</head>
<body>
<jsp:useBean id="date" class="com.lyq.bean.DateBean"
scope="application"></jsp:useBean>
<center>
<div id="clock">
<div id="time">
<jsp:getProperty property="dateTime" name="date" />
</div>
<div id="week">
<jsp:getProperty property="week" name="date" />
</div>
</div>
</center>
</body>
javabean代码
package com.lyq.bean; import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; /**
* 日期处理类
* @author Administrator
*
*/
public class DateBean {
private String dateTime;
private String week;
private Calendar calendar = Calendar.getInstance(); public String getDateTime() {
Date currDate = Calendar.getInstance().getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒");
this.dateTime = sdf.format(currDate);
return this.dateTime;
} public String getWeek() {
String[] weeks = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
int index = calendar.get(Calendar.DAY_OF_WEEK); // 获取一星期的某天
this.week = weeks[index - 1];
return this.week;
}
}
3、数组/字符串处理
jsp页面
<form action="paper_reg.jsp" method="post">
<div>
<h1>调查问卷</h1>
<hr />
<ul>
<li>你经常用哪些编程语言开发程序:</li>
<li><input type="checkbox" name="languages" value="JAVA" id="languages0" /><label for="languages0">JAVA</label>
<input type="checkbox" name="languages" value="PHP" id="languages1" /><label for="languages1">PHP</label>
<input type="checkbox" name="languages" value=".NET" id="languages2" /><label for="languages2">.NET</label>
<input type="checkbox" name="languages" value="VC++" id="languages3" /><label for="languages3">VC++</label>
</li>
</ul>
<ul>
<li>你目前掌握的技术:</li>
<li><input type="checkbox" name="technics" value="HTML" />HTML
<input type="checkbox" name="technics" value="JAVABEAN" />JAVABEAN
<input type="checkbox" name="technics" value="JSP" />JSP
<input type="checkbox" name="technics" value="SERVLET" />SERVLET</li>
</ul>
<ul>
<li>在学习中哪一部分感觉有困难:</li>
<li><input type="checkbox" name="parts" value="JSP" />JSP
<input type="checkbox" name="parts" value="STRUTS" />"STRUTS"
</ul>
<input type="submit" value="提交" />
</div>
</form>
<body>
<jsp:useBean id="paper" class="com.lyq.bean.Paper"></jsp:useBean>
<jsp:useBean id="convert" class="com.lyq.bean.Convert"></jsp:useBean>
<jsp:setProperty property="*" name="paper" />
<div>
<h1>调查结果</h1>
<hr />
<li>你经常使用的编程语言:<%= convert.arr2Str(paper.getLanguages()) %></li>
<li>你目前掌握的技术:<%= convert.arr2Str(paper.getTechnics()) %></li>
<li>在学习中哪一部分感觉有困难:<%= convert.arr2Str(paper.getParts()) %></li>
</div>
</body>
javabean代码
package com.lyq.bean; import java.io.Serializable; /**
* 数组转字符串
*
* @author Administrator
*
*/
public class Paper implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 语言
*/
private String[] languages;
/**
* 技术
*/
private String[] technics;
/**
* 难点
*/
private String[] parts; public Paper() { } public String[] getLanguages() {
return this.languages;
} public void setLanguages(String[] languages) {
this.languages = languages;
} public String[] getTechnics() {
return this.technics;
} public void setTechnics(String[] technics) {
this.technics = technics;
} public String[] getParts() {
return this.parts;
} public void setParts(String[] parts) {
this.parts = parts;
}
}
package com.lyq.bean;
public class Convert {
/**
* 将数组转成字符串
*
* @param arr
* 数组
* @return 字符串
*/
public String arr2Str(String[] arr) {
StringBuffer sb = new StringBuffer(); //StringBuffer是可变长的对象,比使用String拼接效率更高
if (arr == null || arr.length == 0)
return sb.toString();
for (String s : arr) {
sb.append(s);
sb.append(",");
}
if (sb.length() > 0)
sb = sb.deleteCharAt(sb.length() - 1);
return sb.toString();
}
}
4、不同方法接收页面参数
jsp页面
<form action="person_reg.jsp" method="post">
<b>添加用户信息</b><br />
姓名:<input type="text" id="username" name="username" /><br />
年龄:<input type="text" id="age" name="age" /><br />
性别:<input type="text" id="sex" name="sex" /><br />
住址:<input type="text" id="add" name="add" /><br />
<input type="submit" value="提交" />
</form>
<body>
<%
request.setCharacterEncoding("UTF-8"); //防止中文乱码
%>
<jsp:useBean id="person" class="com.lyq.bean.Person" scope="page">
<jsp:setProperty name="person" property="*" /><%-- 使用*接收所有参数,使用这种方式要求表单中的属性名与JavaBean的属性名一致 --%>
<jsp:setProperty name="person" property="name" param="username" /><%--如果表单中的属性名(即参数)与JavaBean的属性名一致,则用param对其赋值 --%>
</jsp:useBean>
<div>
<ul>
<li>姓名:<jsp:getProperty property="name" name="person" /></li>
<li>年龄:<jsp:getProperty property="age" name="person" /></li>
<li>性别:<jsp:getProperty property="sex" name="person" /></li>
<li>住址:<jsp:getProperty property="add" name="person" /></li>
</ul>
</div>
</body>
javabean代码
package com.lyq.bean; /**
* 人员信息
* @author Administrator
*
*/
public class Person {
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private int age;
/**
* 性别
*/
private String sex;
/**
* 住址
*/
private String add; public String getName() {
return this.name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return this.age;
} public void setAge(int age) {
this.age = age;
} public String getSex() {
return this.sex;
} public void setSex(String sex) {
this.sex = sex;
} public String getAdd() {
return this.add;
} public void setAdd(String add) {
this.add = add;
}
}
javaweb学习--javabean的更多相关文章
- JavaWeb学习----JSP脚本元素、指令元素、动作元素
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- JavaWeb 学习的第一阶段总结
本人从事Asp.net开发三年,结合市场情况,综合考虑后决心转向JavaWeb方向.于是开始了自学Java的历程. 首先,我用马士兵的Java基础教学视频,快速地学习了一遍Java基础.因为有C#基础 ...
- JavaWeb学习总结(转载)
JavaWeb学习总结(五十三)--Web应用中使用JavaMail发送邮件 JavaWeb学习总结(五十二)--使用JavaMail创建邮件和发送邮件 JavaWeb学习总结(五十 ...
- 转载-JavaWeb学习总结
JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件 孤傲苍狼 2015-01-12 23:51 阅读:13407 评论:20 JavaWeb学习总结(五十二)——使用 ...
- JavaWeb学习总结第三篇--走进JSP页面元素
JavaWeb学习(三)—走进JSP页面元素 JSP:Java Server Pages,译为Java服务器页面.其脚本采用Java语言,继承了Java所有优点.JSP元素可以分为指令元素.脚本元素和 ...
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
今天来看一下自定义标签的内容,自定义标签是JavaWeb的一部分非常重要的核心功能,我们之前就说过,JSP规范说的很清楚,就是Jsp页面中禁止编写一行Java代码,就是最好不要有Java脚本片段,下面 ...
- JAVAWEB学习
http://www.cnblogs.com/xdp-gacl/p/3744053.html JavaWeb学习总结(三)——Tomcat服务器学习和使用(二)
- JavaWeb学习总结-01 JavaWeb开发入门
一 基本概念 1 Web开发的相关知识 Web,表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源(如html 页面): ...
- JavaWeb学习总结-04 Servlet 学习和使用
一 Servlet 1 Servlet概念 Servlet时运行在服务器端的Java程序. Servlet的框架核心是 javax.servlet.Servlet 接口. 所有自定义的Servlet都 ...
随机推荐
- PowerShell 中 RunspacePool 执行异步多线程任务
在 PowerShell 中要执行任务脚本,现在通常使用 Runspace,效率很高:任务比较多时,用 Runspace pool 来执行异步操作,可以控制资源池数量,就像 C# 中的线程池一样 == ...
- firewall防火墙
firewall防火墙 1 防火墙简介 在基于RHEL7的服务器,提供了一个firewall的动态管理的防火墙,其支持IPv4和IPv6,还支持以太网桥,并有分离运行时间和永久性配置选择.它还具备一个 ...
- Java基础1:深入理解Java面向对象三大特性
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...
- Struts2【UI标签、数据回显、资源国际化】
Struts2UI标签 Sturts2为了简化我们的开发,也为我们提供了UI标签...也就是显示页面的标签..... 但是呢,Struts2是服务端的框架,因此使用页面的标签是需要在服务器端解析然后再 ...
- linux为什么不可以添加硬链接
假设有个文件夹1 文件夹1里面还有个文件夹2 文件夹2里面还有个文件夹3 然后发现哎呀直接文件夹3放到文件夹1下就行了访问多方便. 也就是文件夹1下有文件夹2和文件夹3,然后问题就来了文件夹1下的文件 ...
- 如何快速打造一款高清又极速的短视频APP?
整个短视频的市场规模一直在增长,网络数据显示2018年已经突破100亿大关,在2019年预测将超过200亿.纵观行业,在生活资讯.美食.搞笑.游戏.美妆等领域,短视频流量巨大但竞争激烈,但是在教育.财 ...
- 【转载】 C#检测输入的内容中是否含有中文
在C#开发中,可以结合正则表达式,来检测输入的内容中是否包含中文,Regex类是C#中有关正则表达式处理的相关类,功能强大,我们只需要设置好规则,即可很快检测出输入的字符串内容中是否含有中文信息. R ...
- 设计模式-建造者模式(Builder)
简介: 将一个复杂的对象的构建与它的表示分离,使得同样的构建过程创建出不同的表示. 结构图: 优点: 使得创建代码和表示代码分离,建造者隐藏了该产品是如何组装的,所以若需要改变一个产品内部的表示,只需 ...
- Lambda表达式资料整理
重温委托,匿名方法,Lambda,泛型委托,表达式树 第一:委托 有些教材,博客说到委托都会提到事件,虽然事件是委托的一个实例,但是为了理解起来更简单,今天只谈委托不谈事件.先上一段代码: 下边的 ...
- 【转】Android必备知识点- Android文件(File)操作
Android 使用与其他平台上基于磁盘的文件系统类似的文件系统. 本文讲述如何使用 Android 文件系统通过 File API 读取和写入文件. File 对象适合按照从开始到结束的顺序不跳过地 ...