初学java的简单项目总结

自己项目简单总结

1(零散的知识点)

重点:spring中创建bean的四种方式
1.普通方式创建
bean id=“别名” class=“类全限定名” />
2.FactoryBean的方式
准备一个类实现FactoryBean,覆写方法getObject,此方法返回的就是一个bean。
3.静态工厂
工厂有个静态方法,配置为:
bean id="别名"class="类全限定名"factory-method=“静态方法名”>
4.实例工厂
bean id=“类别名” class=“类全限定名” />
bean id=“方法别名” factory-bean=“类别名” factory-method=“方法名” />

关于事物的配置:一般读数据多大于写数据时,所以我们一般在类上:
@Transactional(readOnly = true,propagation = Propagation.SUPPORTS)
有写数据我们在方法上直接加注解@Transactional (默认值REQUIRED)

2.shiro的学习

1.shiro和spring security的区别:
Shiro是粗粒度的而spring security是细腻度的
所以spring security的功能比shiro强大,我还是使用
Shiro因为基础的功能都能满足我们的业务需求了

2.shiro的四大基石:
身份验证,授权,密码学,回话管理

3.在项目中的使用:
3.1导入shiro的包和shiro和spring的集成包

3.2然后在web.xml中配置shiroFilter名字和applicationContext-shiro.xml中相对应

3.3配置applicationContext-shiro.xml
首先要在applicationContext.xml引入shiro的xml
在其实需要配置的属性有
1.securityManager对象
2.自定义的Realm配置成bean,并且属性要配置加密方式和加密次数
3.对注解的支持
4.配置shiroFilter其中写我们需要拦截的自定义map
5.配置一个自定义权限拦截的bean和一个返回map<String,String>的bean用来装需要拦截的路径
6.自定义realm继承AuthorizingRealm实现登录和权限的功能

3.easypoi的学习

1.现在我们一般使用JXL(只能操作excel)或者poi
我使用easypoi(对poi的封装,操作简单)
2.导包三个(easypoi-base,easypoi-web,easypoi-annotation)
3.在自己需要的domain类中字段上配置相应注解比如:
@Excel:代表这个字段要生成到excel中去
时间加上:format = “yyyy-MM-dd”
图片加上type = 2(导出的时候图片的路径之前不能多加.不然会报数组脚标越界)
其他在easypoi的官网查看即可。
4.在我使用注解导出的时候需要在mvc的xml中配置:

<context:component-scan base-package=“cn.afterturn.easypoi.view” />



5.然后实现代码:
初学java的简单项目总结6.导入功能按照文档操作即可需要注意在导入的时候前端页面需要加enctype=“multipart/form-data”

4.HighChart的学习

1.引入相关的js样式,官网下载,需要饼图在官网找到查看源码即可
2.后台自定义vo用于装图表数据方便提高性能,然后在根据自己的业务逻辑分组查询,最后返回json数据给前台
3.前台自定义dialog用来装3d饼图即可。返回数据即可看图
初学java的简单项目总结

3.项目遇到的错误

1.no-session(我们关闭entitymanager的时候,还去数据库获取数据,出现报错):
在web.xml中配置openEntityManager

2.no-serrize(SpringMvc和jpa集成的时候有懒加载就会出现这个问题):
写一个类继承ObjectMapper,覆写其方法即可,然后在applicationContext-mvc.xml 配置这个映射

3.jpa的数据和easyui数据不能匹配:
前后台参数问题:自定义UIpage:获取到前台的数据,
主要代码有参构造:

public UiPage(Page page){
//总条数
total=page.getTotalElements();
//设置每页的数据
rows= page.getContent();
//设置sort,order自己就在sort中
sort = page.getSort();
}

然后在query层自定义4个set方法设置值即可

4.项目解决修改关联数据时出现n-to-n的问题
n-to-n:指的是存在于事物的持久化状态的对象修改了OID(不能修改主键)
解决方案在修改方法之前把关联对象清空,我们的Mvc会自动创建关联对象进行保存。
所以我自定义方法 加注解@ModelAttribute(在其他RequestMapping之前都会先执行这个方法)

** @ModelAttribute(“editEmployee”)
public Employee beforeEdit(Long id,String cmd){
//只有修改才做查询,根据前台传入的id和cmd判断
if(id!=null && “update”.equals(cmd)){
Employee emp = employeeService.findOne(id);
//解决n-to-n的问题,最简单的方式,只要是关联对象就清空
emp.setDepartment(null);
return emp;
}
return null;
}
**
然后在修改方法的参数中加上此注解即可:@ModelAttribute(“editEmployee”)

5.前台数据和后台数据的交互

1.自定义JsonResult 用于返回json数据给前台

/后台操作返回给前台的数据/
public class JsonResult {
private Boolean success=true;
private String msg;
public JsonResult(Boolean success, String msg) {
this.success = success;
this.msg = msg;
}