框架实践

ServletRequest request类似于@RequestParam

可以获取传过来的参数。(非地址栏post)



前端控制器return 的值 是在WEB-INF/view的文件,与地址栏输入的无关

如映射到/doem return /system 则显示的是/system


地址栏传参数@RequestMapping("/delete/{id}")+@PathVariable String id

@PathVariable 和 @RequestParam一样都可以获得参数。但是它需要看映射时定义参数{id}


RedirectAttributes 重定向。其作用是在地址栏增加参数

第一种redirectAttributes.addAttributie("param1",value1);是在地址栏显性的增加参数param1=value1.

第二种redirectAttributes.addFlashAttributie("param1",value)是在地址栏隐式的增加参数

setRedirectResult(redirectAttributes, true, ADD_SUCCEED);是设置此次任务的状态

地址栏用redirect:经行重定向



预编译语句及存储过程创建回调https://blog.csdn.net/dyllove98/article/details/7772463

https://blog.csdn.net/xuebing1995/article/details/72235380



assert格式断言表达式

(1)assert [boolean 表达式]

如果[boolean表达式]为true,则程序继续执行。

如果为false,则程序抛出AssertionError,并终止执行。


分页的对象转化

查出来的对象一般都是list 那么可以用new PageImpl来把list对象变为Page对象集



@ResponseBody

作用:该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。

返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

就可以直接返回一个对象,解系后会变成json返回到页面


Param

${param.name} 等价于request.getParamter(“name”),主要是服务器从页面或者客户端获取信息的方法。


如果要在多选框中经行查询,用sql的时候就不要使用预查询,并且要经行判断,如果这个值不为空才经行条件查询。


<%Out.print()%>在jsp输出Java

可用用oncick绑定,ajax传表单数据,name作为识别数据的key,经行数据传送

onchange 事件会在域的内容改变时发生。


DozerBeanMapper

Dozer是一个JavaBean映射工具库。

用途映射:http://www.cnblogs.com/jingmoxukong/p/5952447.html?utm_source=gold_browser_extension

转化(对象转Map,colletion,对象复制等):

https://blog.csdn.net/cbjcry/article/details/70155357

 

beanInfo

获得一个对象的属性等beanInfo = Introspector.getBeanInfo(type);

T obj = type.newInstance(); // 创建 JavaBean 对象


PropertyDescriptor是一个可以通过反射得到对象get,set方法的对象。

// 给 JavaBean 对象的属性赋值这里propertyDescriptors就获得了type的属性

PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();

它可以通过得到的属性反射到对应的方法

// 获取getter方法,反射获取id值

Object str = prop.getReadMethod().invoke(p);

// 获取setter方法,反射赋值

 prop.getWriteMethod().invoke(p, "1");




@PostConstruct和@PreDestroy

这两个作用于Servlet生命周期的注解,实现Bean初始化之前和销毁之前的自定义操作


数据字典实现

jsp页面中可以用标签来实现数据字典,标签可以自定义一个,可以用标签库中已有的标签(在里面添加方法即可)。

<%@ taglib prefix="dict" uri="http://www.summer.org/tags/dict" %>(已有的标签)

${dict:display('processAreaType',processArea.processAreaType) }(调用标签方法)

在uri的文件中会配置方法类,在类中实现方法就可以了


数据字典结构。

bean对象,对应着数据库中的字典对象。

一个字典类(就是uri中配置的那个类)  用于方法调用,相当于控制器

一个service以及其实现类,这个实现类很重要,它要做两件事:

[if !supportLists]1. [endif]从数据库中获得所有的字典对象,装在一个List中,再将其用groupcode经行分类储存(牵涉到初始化方法@PostConstruct和map中LinkedHashMap),map中每一个groupcode可能对应了多个对象,都存在一个list中并根据groupcode再放入map。

[if !supportLists]2. [endif]写具体的方法实现(根据groupcode找code)


数据字典数据库结构

Groupcode1 groupcode2 code

(人名)(公司名)(Int)

张三tench      1

....        ....       ....

一般1返回的是一个传入的groupcode的list,2中只用把这个list中符合code相同的对象找出来就行了


在linkedHashMap时项目中用了import com.google.common.collect.Maps;

Maps.newLinkedHashMap();我猜这个是缓存Map吧。这样节约了内存遍历


*如果是实在下拉列表里使用字典,需要自定义组件https://www.cnblogs.com/flying607/p/5063207.html


Validate

来自org.apache.commons.lang3.Validate的外接校验工具

它可以校验是否为空,在某一区间,是否为实体等等,如果错误还自动抛出异常

用法Validate.函数名 即可



分页查询

如果是jpa查询会有函数的参数可以直接是pageable返回的也是Page对象

如果是jdbcTemplate,那么就要手动封装,Page是new PageImpl得到的。传入结果集,pageable,maxcount就可以了



在日志输出的时候,可以打印出日志信息所在类如:Logger logger = LoggerFactory.getLogger(com.Book.class);logger.debug("日志信息");将会打印出: com.Book : 日志信息


从jsp传对象到控制器,要上传的数据的name属性设置为该对象的内部属性,如bean中有name属性,那么设置name=”name”,再控制器的参数中写入该bean,有格式要求,如TempName(一定要用驼峰原则)写参数就是(TempName tempName)




文件下载:从TFP端的下载。架构:首先前端传到控制器时,控制器要有一个处理类,这个类做的是接收文件名,请求远端FTP将该文件传通过流到本地,将本地文件流给用户。

因为远程端获取是共同步骤,可以专门写一个FTP工具,工具包括了登陆FTP和长传下载等等功能。

下载时,传来一个全路径文件名和控制器端out流,FTPclient通过文件路径找到文件,把流写到控制器的流里面去。然后控制器得到该流后,写入一个文件当中,用http文件头说明文件路径即可。



控制器端:主要作用是的到参数并处理,获取数据库数据,数据发送给前端,设置状态,返回页面

参数获得:如果一个方法只处理一个动作,可以用地址栏传参也可以用post传参,地址栏传参通过@PathVariable获得数据(如果没有设置该注解的value,那么数据名称应和前端传来的参数名一致),获取post传来的参数可以用@RequestParam规则和@PathVariable一样,只不过它还有一个属性(require)如果是false就是不必须的参数,默认是true如果没有该参数就会报错。还有就是不加任何注解,这时候变量名应和参数名一直且默认require为false

如果查询来的是多个参数,可以考虑用BeanMapper.convertMap将参数封装为一个对象。如果参数少没必要使用。

数据库查询参数:如果用于单个的选择性数据key+name

返回的数据一般都是list的形式

 

 

dao层:主要步骤  sql语句,mapper.class,调用函数提交sql

Sql:如果没有动态赋值的情况下用stringBuffer(用的时候注意变量用’’单引号包住),写sql语句时注意,如果是插入对象,对表中对象挨个写,且id用UUID生成。如果是查询想保证数据唯一性用group by ...。

mapper如果要返回list<pojo>一般用ParameterizedRowMapper(返回单个对象也可以用它,他继承了Mapper)

提交:query用于查询操作,查询出的是集合,queryForObject..等函数返回的是单个值,update一般用预编译更新或者删除

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容

  • 高三毕业的时候,第一次坐火车。火车上还真的是如小说上面写着的那般,人来人往,有人上车有人下车。每个人都有自己的目的...
    吴小小鱼阅读 166评论 0 0
  • 这是属于艾米的故事,我只知道里面的一小部分。这位姑娘告诫我,珍爱生命,远离天蝎。 1. 二月,乍暖还寒,艾米的心情...
    少女心莉齐阅读 496评论 0 3
  • 爱情能当饭吃吗?没有爱情会死吗,不能,不会,但是有爱情是很好的,被爱是很难得的。听过这个名字很久,好像小时的记忆里...
    谷气质阅读 405评论 0 0