关于对javaUtils封装和三层架构的笔记
1.什么是三层架构:
三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。
2.三层架构的优点:

web层
1>接收数据:本案例不需要接收数据
2>用List接受查询结果(常用于收集查询结果集)
定义一个List集合productList泛型为product用于接收service.findAllProduct();的返回值。
3>传递数据
List<product> productList =service.findAllProduct();
service层
1>传递数据
return dao.findAllCategory();
dao层
1>链接数据库QueryRunner()的有参链接
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
String sql = "select * from product";
List接受查询到的数据
List<product> productList = runner.query(sql, new BeanListHandler<product>(product.class));
数据的回写
return productList;
web层
将查询到被回写的数据放入request域中并转发到jsp中进行显示
request.setAttribute("productList", productList);
request.getRequestDispatcher("/admin/product/list.jsp").forward(request, response);
3.关于数据的封装和回写
1>List<String>,List<User> Map<String, String> Map<String, User>的赋值和遍历
//1)遍历strList<String>
List<String> strList = new ArrayList<String>();
strList.add("一");
strList.add("二");
strList.add("三");
strList.add("四");
request.setAttribute("strList", strList);
//2)遍历List<User>的值
List<User> userList = new ArrayList<User>();
User user1 = new User();
user1.setId(1);
user1.setName("lisi");
user1.setPassword("1234");
userList.add(user1); User user2 = new User();
user2.setId(2);
user2.setName("wangwu");
user2.setPassword("123456");
userList.add(user2);
request.setAttribute("userList", userList);
//3)遍历Map<String,String>的值
Map<String, String> strMap = new HashMap<String, String>();
strMap.put("key1", "一");
strMap.put("key2", "二");
strMap.put("key3", "三");
strMap.put("key4", "四");
request.setAttribute("strMap", strMap);
//4)遍历Map<String,User>的值
Map<String, User> userMap = new HashMap<String, User>();
userMap.put("key1", user1);
userMap.put("key2",user2);
request.setAttribute("userMap", userMap);
遍历(jstl)
<h1>取出strList数据</h1>
<c:forEach items="${strList}" var="str">
${str}<br> </c:forEach>
<h1>取出userList数据</h1>
<c:forEach items="${userList}" var="user">
${user.id}<br>
${user.name}<br>
${user.password}<br>
</c:forEach> <h1>取出strMap数据</h1>
<c:forEach items="${strMap}" var="strMap">
${strMap.key}=${strMap.value}<br>
</c:forEach> <h1>取出userMap数据</h1>
<c:forEach items="${userMap}" var="userMap">
${userMap.key }=${userMap.value.name}=${userMap.value.password}<br> </c:forEach>
2>Map<String,String>封装数据
Map<String, String[]> properties = request.getParameterMap();
product product = new product();
try {
//将properties中的数据封装到product对象中
BeanUtils.populate(product, properties);
} catch (IllegalAccessException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
3>手动的封装product中自己想要的数据
product.setPimage("products/1/c_0033.jpg");
domain:product
package com.hdh.domain;
public class product {
// `pid` varchar(32) NOT NULL,
// `pname` varchar(50) DEFAULT NULL,
// `market_price` double DEFAULT NULL,
// `shop_price` double DEFAULT NULL,
// `pimage` varchar(200) DEFAULT NULL,
// `pdate` date DEFAULT NULL,
// `is_hot` int(11) DEFAULT NULL,
// `pdesc` varchar(255) DEFAULT NULL,
// `pflag` int(11) DEFAULT NULL,
// `cid` varchar(32) DEFAULT NULL,
private String pid;
private String pname;
private double market_price;
private double shop_price;
private String pimage;
private String pdate;
private int is_hot;
private String pdesc;
private int pflag;
private String cid;
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public double getMarket_price() {
return market_price;
}
public void setMarket_price(double market_price) {
this.market_price = market_price;
}
public double getShop_price() {
return shop_price;
}
public void setShop_price(double shop_price) {
this.shop_price = shop_price;
}
public String getPimage() {
return pimage;
}
public void setPimage(String pimage) {
this.pimage = pimage;
}
public String getPdate() {
return pdate;
}
public void setPdate(String pdate) {
this.pdate = pdate;
}
public int getIs_hot() {
return is_hot;
}
public void setIs_hot(int is_hot) {
this.is_hot = is_hot;
}
public String getPdesc() {
return pdesc;
}
public void setPdesc(String pdesc) {
this.pdesc = pdesc;
}
public int getPflag() {
return pflag;
}
public void setPflag(int pflag) {
this.pflag = pflag;
}
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
}
关于对javaUtils封装和三层架构的笔记的更多相关文章
- MVC——三层架构笔记、1
三层架构MVC笔记1. DAL——数据访问层:(专门与数据库交互,增删查改的方法都在这:需引用MODEL层) BLL——业务逻辑层:(页面与数据库之间的桥梁:需引用DAL.MODEL层) MODEL— ...
- java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)
1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...
- 架构和模式的区别:三层架构和MVC在应用开发中的位置
架构是系统层面的,可以是多层架构,也可以是事件驱动架构,也可以是微服务架构. 模式是GUI应用的一种职责分离设计. 三层架构(包含多层架构)和 MVC模式(包含MVP, MVVM) 没什么关系,它们不 ...
- 从零开始编写自己的C#框架(5)——三层架构介绍
三层架构对于开发人员来说,已经是司空见惯了,除了大型与超小型项目外,大多都是这种架构来进行开发. 在这里为初学者们简单介绍一下三层架构: (下面内容摘自<趣味理解:三层架构与养猪—<.NE ...
- 浅析MVC模式与三层架构的区别01
三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层)三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI ...
- Java Web 三层架构详解
java 三层架构ssh 一个spring2.5+hibernate3.2+struts2.0组合框架,使用spring的 IoC来管理应用的 所有bean,包括struts2的 action,充分发 ...
- Asp.Net MVC<一> : 三层架构、MVC
MVC.MVP.MVVM.Angular.js.Knockout.js.Backbone.js.React.js.Ember.js.Avalon.js.Vue.js 概念摘录 认清Android框架 ...
- WEB三层架构与MVC
web三层架构是指: >用户接口层(UI Layer) >业务逻辑层(Bussiness Layer) >持久化层 关于业务逻辑和用户接口 在早期的web开发中,因为业务比较简单,并 ...
- MVC模式与三层架构的区别
之前总是混淆MVC表现模式和三层架构模式,为此记录下. 三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层) 三层架构(3-tier application) ...
随机推荐
- 466. Count The Repetitions
Define S = [s,n] as the string S which consists of n connected strings s. For example, ["abc&qu ...
- jmeter+ant+jenkins+mac报告优化(一):解决Min Time和Max Time显示NaN
一.在上篇博客中生成的报告有两个问题: 1.date not defined 2.Min Time和Max Time显示成了NaN 二.Jmeter+Ant报告生成原理: 1.在Jmeter的extr ...
- CentOS6.5加域
为减少错误已提前关掉了SELinux,防火墙. yum install nss-pam-ldapd -y 第一步:更改主机名为linux.itxdm.me 第二步:更改setup内左边Winbind ...
- oracle常用cmd命令
登陆 sqlplus username/password; 切换: conn username/password; 显示当前登陆用户: show user; 查看用户列表 select usernam ...
- 关于Mysql数据库查询数据大小写的问题汇总
前天在问答区看到一个童鞋对于mysql中大小写问题不熟悉,在回复他后再次汇总梳理如下: mysql中大小写问题主要有以下两种: A.表名区分大小写 ower_case_table_names 是表名区 ...
- 【Quartz】工作原理
本文参考至http://www.cnblogs.com/davidwang456/p/4205237.html和https://blog.csdn.net/guolong1983811/article ...
- maven web不能创建src/main/java等文件等问题
我们在创建maven web项目的时候,默认只有src/main/resources这个source folder,我们按照maven结构添加src/main/java和src/test/java等s ...
- 在 Go 语言中使用 Log 包--转自GCTT
Linux 在许多方面相对于 Windows 来说都是独特的,在 Linux 中编写程序也不例外.标准输出,标准 err 和 null devices 的使用不仅是一个好主意,也是一个原则.如果您的程 ...
- #.NET# DataGrid显示大量数据——DataGridView虚模式
要解决的目标:如何让 Datagridview 快速平滑显示大量数据 通常,Winform 下的表格控件是很"低效"的,如 DataGrid 和 DataGridView.造成低效 ...
- 华南理工大学“三七互娱杯”程序设计竞赛 HRY and codefire(概率期望DP)
https://ac.nowcoder.com/acm/contest/874/A 题目:有两个账号 , 一开始都为0级 , 求任意一个账号升级到N的期望 要求:如果当前账号嬴了 , 就继续沿用当前的 ...