0
点赞
收藏
分享

微信扫一扫

数据调查项目总结(一)


一:

  在eclipse中jar包不能在lib下分类存放,如果分类存放,则会发生找不到类的异常

二:

  在struts中使用validate和prepare的时候后面跟的是方法名(第一个字母大写),也可以加Do方法名

三: session关注

  在struts的action中可以实现SessionAware接口,在经过session拦截器的时候会自动的创建

  注入struts封装的session(是一个map集合)

四:自定义登录拦截器:

   将自定义的拦截器放在所有的拦截器之前,从自定义拦截器中可以获取到当前访问的action

在这里可以做一些业务逻辑的判断

还可以在这里将一些值注入到访问的action中,必须实现接口化的编程,类似于sessionAware接口

注入的值最好是公共的。

如果单独为这个action设计一个接口,注入属性的值或者什么的也是可以的

 

五:自定义UserAware,用户关注对象(接口,参考sessionAware),哪个action需要user对象就在该action中实现这个UserAware,在登录拦截器中获取访问的action,是否instance of  User关注,如果实现了用户关注了的话,就可以在登录拦截器中将session中的user对象注入到需要的action中

public String intercept(ActionInvocation invocation) throws Exception {
Action action=(Action) invocation.getAction();
//如果进入的action是注册或者登录的action就放行
if(action instanceof RegAction ||action instanceof LoginAction){
return invocation.invoke();
}
else{
//获取登录的用户session
User user= (User) ServletActionContext.getRequest().getSession().getAttribute("loginUser");
if(user==null){
return "login";
}
//如果用户登录了,判断该访问的action是否实现了UserAwre
if(action instanceof UserAware){
//将user对象注入实现该接口的action中
((UserAware)action).setUser(user);
}
//放行
return invocation.invoke();
}
}


六:压栈是把对象的引用放入栈顶

    压栈只是在进入action的之前压栈,执行action以后再改变action中的模型值,就相当于将model指向了新的对象,返回出去的时候不会再把model压入栈顶,所以栈中还是保存原来对象的引用




  *  只要在action中给model赋值,就必须在preparexx或者prepareDoxxx中赋值

七: 解决懒加载的问题

     1,一劳永逸:在web.xml中  必须



          缺点: 占用数据库资源,特别是在高并发的项目中,db是项目优化的瓶颈

     2,在业务层中强行初始化,在高并发的系统中,效果要好的多

        在事务关闭之前将值取出来就可以,类似于


public Survey getSurveyWithChildren(Integer sid){
Survey s = surveyDao.getEntity(sid);
for(Page p : s.getPages()){
p.getQuestions().size();
}
return s;
}

     3,关闭所有的懒加载

        会造成大量的数据的冗余

   解决懒加载优缺点对比:

     使用配置web.xml的方法







举报

相关推荐

0 条评论