ssh框架的一些体会

33-抽取添加与修改JSP页面中的公共代码:1,把公共的代码抽出来2,添加修改使用同一个页面
将他们放到public文件夹


32:使用递归展现添加与修改页面中的树状上级部门列表:
1.无序问题(set集合无序)方法:在类的映射类中的xml中加入order-by属性 
2.数据库的问题(不直接修改session缓存,copy 一份修改)递归:不在页面中写 action中遍历出


29.使用OpenSessionInViewFilter方案解决Hibernate懒加载异常的问题
1,在web.xml中的struts过滤器之前


20_阶段2__补充:Struts2的整体回顾(Action、拦截器、值栈、OGNL表达式、ModelDriven方案等)
a:拦截器处理公共的部分 action 专注响应
valuestacks--map stack--炒作put(key,value) value〈- get(key) actionContext.getcontent().getvalueStack()(action中获取valuestacks的值) result中获取ognl


21_阶段2__改进:CRUD改进1__使用ModelDriven方案:
a:modeldriver封装参数 private role model = new role();public role getModel(){ return model;}


22_传智播客汤阳光OA项目视频__阶段2__改进:CRUD改进2__套用美工写好的页面效果
a:1.修改为webroot的路径:${pageContext.request.contextPath} 2.加上struts的标签 3.加上样式


23.CRUD改进3__添加功能和修改功能使用同一个JSP页面
合并添加,修改 {id==null ?'add' : 'edit'}


24_传智播客汤阳光OA项目视频__阶段2__系统管理模块__部门管理1__实现基本的增删改查功能
a:上级部门(以后解决)1.设计实体,创建Javabean  2.写映射文件 3.加入hibernate的xml 4.分析有几个功能,对应几个请求(增删改查)


5.写action (crud的模板)
public String list() throws Exception{ return "list";}
public String delete() throws Exception{ return "toList";}
public String addUI() throws Exception{ return "saveUI";}
public String add() throws Exception { return "toList";}
public String editUI() throws Exception { return "saveUI";}
public String edit() throws Exception { return "toList";}


6.配置struts的xml 


7.action里面填充代码 实现功能 list<department> department = departmentService。findAll(找Service获取); actionContext.getContext.put("departmentList",departmentList);(放在map中便于获取,放在值栈不好,map中用#获取)


8.创建service类 action中@Resource注入 9.使用modeldriver 实体和表单不太对应 (可以创建新的对象)editUI回显(actionContext.getContext().getValueStack().push(department);
10.实现service


修改页面:修改路径;删除演示js;数据列表循环显示()


25:pass


26:


27:3.删除上级部门 级联下级部门 4.一次显示一层 (1.toplist childlist 2.点击相应的名称 传id) 5.面向对象的查询,写的对象名和属性名


29
34_阶段3__系统管理模块__改进2:在显示层抽取BaseAction
a:1.baseaction继承公共的actionsupport和实现modeldriver的封装 2.使用泛型让子类选择所需要的对象类型 2.1在类中,通过反射获取model的类型 2.2abstract不需要生成实类,子类生成 2.3本子类专注于请求


35.合并service和dao dao层@Deprecated 数据库操作拿session在service里面操作


36.写用户类 一。baseaction<?> 封装表单参数(1.实体(domain)2.新建对象,写到action中)二。增删改查


一、做Action相关的准备:
Action、JSP、配置
二、做Service相关的准备:
接口、实现类、配置
三、填空:
Action方法、Service方法、JSP页面




userAction:hashset初始化的时候就有另外一个集合中的参数 edit:1,是否要准备数据 2.是否要回显
实现一组功能:1,( Action中)添加功能的步骤:
// 1,新建对象并设置属性(在model使用的是实体的情况下,也可以使用model,但需要设置未封装的属性)
// 2,保存到数据库


2,( Action中))修改功能的步骤:
// 1,从数据库中取出原对象
// 2,设置要修改的属性
// 3,更新到数据库
37_阶段3__系统管理模块__用户管理2__测试功能、解决事务的问题、对密码进行MD5摘要
1.删除 // @Transactional注解可以被继承
// @Transactional注解对父类中声明的方法无效 


=========================
权限的使用:
实现方案:权限(表,实体) 基于角色的权限模型 1.一个功能对应一个或两个url; 2.


初始化数据 分配权限 使用权限


39:设计实体 (主键,关联关系,一般属性(URL),特殊属性name(用户观看),parent,childrenL:set<privilege>)自关联,一对多的实体设计


40:实体:javabean,






41_阶段4__权限模块__实现初始化权限数据的功能:默认只需要一边关联即可




43:带表单页面的两个请求 不带的一个请求  action类 方法 页面 配置 


44:注释1:@Controller注解标明该类需要Spring容器自动加载 


注释2:@RequestMapping注解标识该Controller处理来自/menu_creator.do的请求 


spring注解:
@Service用于标注业务层组件


@Controller用于标注控制层组件(如struts中的action)


@Repository用于标注数据访问组件,即DAO组件


@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。


@Autowired 按 byType 自动注入,面 @Resource 默认按 byName 自动注入罢了


默认情况下通过 @Component 定义的 Bean 都是 singleton 的,如果需要使用其它作用范围的 Bean,可以通过 @Scope 注释来达到目标
从 Spring 容器中获取 boss Bean 时,每次返回的都是新的实例了


45.target is null for method hasPrivilegeByName(这个异常) #session.user.hasPrivilegeByName(name) 写方法:在user对象中增加对象#el表达式到valuestack中寻找


48:树状结构 1.用合适的标签 ul 列表 2.合适的图片 3.效果 (自关联)


55:实现序列化的接口 使tomcat关闭重启后还是登陆状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值