========================
ssh综合(1) 已经实现了注册的功能,现在是登录功能
注意提交的表单数据的name是不是已经改好名了
写acton的login方法
写业务层
补充action,并且配置页面的跳转
然后还需要让登录成功的显示用户信息,登录失败的提示错误信息
#是代表使用context里的数值
引入标签库,写上错误信息标签
注册和登录系统都已经完成,现在需要完成客户管理模块
之前我们写ssh整合的时候已经写了客户模块了,其实只要拿过来即可
映射文件
写acton
写spring配置文件,记得scope要写
修改menu.jsp,并且写action的方法,配置struts.xml
这个信息来源,如果是随便填的,那么不好用来检索
所以这里需要引入数据字典的概念
数据字典其实是一张数据库的表
客户和字典有多对1的关系,其中客户是多,字典是1
对着客户表右键,关联外键
把表拖过来就能看到关系
客户和字典映射关系的对应
创建映射文件,id的策略为uuid,不能用native,因为native是整形的,我们建表的时候用的是字符串类型
现在修改customer.class里的字段,因为是1对多的关系,多的一方需要放一的一方的对象
修改客户的配置文件
把映射文件交给spring
编写字典的action,以及service和dao
然后在页面用ajax来异步加载客户的来源,用的是jquery的ajax,要引入js
首先要理解字典的表
写ajax
在dictAction里写方法以及配置action,然后到这里就可以测试了
下面就可以写查询了
在action里要把数据传送回去,所以需要先转换成json,这里用的是jsonlib支持库,后面会用到fastjson
setExcludes是排除穿过去的json数据,因为我们是传一个对象,对象有很多字段,而我们只想要其中一个字段
使用write方法可以让页面那端的ajax回调函数收到
把选择项添加到上面的select里,提交是需要提交最前面的id
相应的等级和行业也可以修改
现在需要保存客户了
而我们的由于是自动封装数据的,在counstomer里面有其他对象那么就需要 其他对象.属性 所以可以写成baseDictSource.dict_id
由于我们3个都是绑定id的,所以3个都是dict_id,每个id对应不同的功能
写actino,直接保存
接下来就是查询用户,后面的currPage也可以不用,因为我们可以在后台设置默认页数
使用set方法的是属性驱动
修改下上面的代码,多添加一个 当前页显示记录数
离线查询自带了分页的效果
且需要注意,离线查询的条件是可以递增的,那么就说明,上一个使用了离线查询的人的条件还在,所以需要先清空条件
存到值栈里,也可以放到context(session,request)里
虽然在值栈里,但是request里一样有数据
修改一下list.jsp
但是测试后显示不出来字典的内容,那是因为只发送了查询客户的语句,没有发送查询字典的语句
因为使用了延迟加载,所以需要配置一下web.xml解决延迟加载
解决了延迟加载后,那么事务不会那么快关闭,就能自动去查询字典了
现在能显示数据了,还需要分页显示
因为pageBean是直接存到值栈里分布的,所以可以直接使用totalCount
修改表单提交
然后就是切换每页显示多少数据的问题
点击切换每页显示页数之后,需要重写发送请求,所以还要写一个onchange
且需要加一个 判断选中状态的,不然我们点下一页发送到服务器之后,返回回来还是3,因为服务器那边默认3
所以要选中