一,基于框架添加功能模块
1,例如添加测试模块:
action层:
action/test/TestAction.java,Action后缀,处理用户请求,TestAction.java中对应的每个方法通过返回值决定调用哪个jsp页面去显示,如return input,则调用test-input.jsp
service层:
service/test/TestService.java,Service后缀,辅助action,处理业务逻辑,调用dao层与数据库交互
jsp页面显示层:
jsp/test/test.jsp,访问页面时,test/test.action(针对test.jsp),或者test/test!input.action(针对test-input.jsp)
2,处理流程:action收集jsp页面的输入数据,可能需要调用service的方法从数据库中对表增删改查,service返回结果给action,action决定调用哪个jsp页面并可能需要将结果以jsp页面呈现,Po中的每个类对应数据库中的每张表,在这个过程中充当数据的载体,
实体类的属性添加了get,set方法,则jsp页面的输入可自动赋给对象的属性,对象的数据也可以在jsp页面显示,前提是jsp页面的控件name值与实体类的属性名一致
3,部署程序
在tomcat的server.xml中设置context的path和docBase属性,如path="/innerPro" docBase="E:JavaWorkspaceinnerProWebRoot",将其映射到工程所在的物理路径,可免去每次加载工程到wepapps文件夹下,省时
4,面向切面aop:若某个类符合特定条件,则无论调用该类的哪个方法,都会先触发某个方法,或者说是任何操作都需要先执行这个方法,具体应用:例如系统日志记录,做任何操作,都会触发保存日志类,根据操作类型决定是否需要保存日志
5,一些注解,标志作用,如@Autowired,dao的注入,使得声明了dao,就可以实现自动实例化,不需要new,就可以使用
6,使用svn版本控制
二,数据库设计
1,使用powerDesigner设计数据库表
1)命名规范:如t_log_info,日志信息表,对应的Po中的类是TLogInfo.java
2)table type = InnoDB,否则不能设置外键
3)虚线表示表之间的关系即可
2,hibernate反向工程,将设计的数据库表映射到Po中的类,遇到一个问题是 “generating artifact出错”,解决方法是后面某一步要选择select all schema
数据库表映射成po类需注意:unique,nullable
3,hql语句:如from TLogInfo where userId=:userId order by logFillTime,hql语句是针对po中的实体类,是对对象集合查询,而sql语句是针对数据库表
三,jquery
1,窗口a与弹窗b的数据传递
1)b通过window.dialogArguments属性获得a传递的参数
2)b通过window.returnValue设置返回值,然后a通过var result=window.showModalDialog( ,a传递的参数, )获得b的返回值,
2,父窗口a与内嵌的iframe---(如c)的数据传递
c通过window.parent.document可以访问a的方法和各种节点,a通过window.frames[“c的name值”].document或者window.c的name值.document可访问c的节点
3,可以在action的方法中返回一段js代码,调用请求该action的页面内的js方法,如 在PersonallogAction.java的save方法中
return this.renderHtml(“<script>window.parent.returnback(‘1’)</script>”),
可以调用personallog-input.jsp页面的returnback方法,这样可以做到input弹窗页面根据save方法的处理结果决定向原来窗口返回什么值
4,选择器
1)id/类/标签/组群选择器等 可以选择document的节点元素
2)有趣的是:例如$(“#form”).append($(“img”)) 可以让img标签移动位置
3)html(“<img>”)会解析里面的html标签,显示一张图片;而val(“<img>”)只是原样赋值,不会解析成一张图片
4)window.location.reload(),如果该页面存在表单,则会询问是否重新提交,为了免去每次弹出询问窗口,可直接$(“#form1”).submit()提交
5,ajax
异步javascript和xml,$.get()与$.post()默认都是异步提交请求,不能改,而做表单验证时需要同步,所以要用原始的ajax,即$.ajax(),可以设置是否异步
四,一些常用功能的实现
1,导入导出Excel
使用poi-3.9.jar
1)导入Excel:涉及到文件上传控件,文件输入流,使用一些jar包的类如HSSFWorkbook等,从输入流中读取每行每列,单元格的值,封装成对象保存到数据库中
2)导出Excel:
方法一:设置Excel模板,用EL表达式
方法二:思路是从数据库中读取到对象集合,遍历集合,把对象的每个属性的值赋给单元格,生成excel文件,具体使用了HSSFWorkbook,HSSFSheet等类
五,针对需求进行功能实现的经验
1,根据需求分析功能,先确定service的接口,或者说是一些辅助方法,而非急于写页面或编写action,service完成后,一切将水到渠成
2,具备哪些功能一定不能按主观想法推测,而是遵循需求!!!
六,其他
1,使用批处理设置环境变量