项目感知
项目中重要知识点
MVC分层设计模式
重定向与请求转发的区别
JSP中的四个作用域
所用插件
项目中踩过的雷
今天特地分享我之前做的,基于javaEE+jsp实现的OA管理项目的搭建心路历程,希望大家能够从中学习到一些有用的东西~~~
项目感知利用思维导图概括项目实现过程以及所需要实现的各项功能
项目架构项目中重要知识点MVC分层设计模式mvc简介m:model 模型层service层和dao层和实体类层v:view 视图层jsp页面c:controller 控制层servlet
好处:1、各司其职,互不干扰。2、有利于开发当中的分工3、有利于组件中代码的重用
重定向与请求转发的区别重定向:1、客户端发送请求,服务器响应,待服务器响应后客户端又发送请求。两次请求,不共用request,地址改变为目标地址2、重定向跳转的url采用的是绝对路径请求转发:1、一次请求,前后共用一个request,地址不变仍为当前地址2、请求转发跳转的url采取的是相对路径JSP中的四个作用域PageContext1、生命周期:当对JSP的请求时开始,当响应结束时销毁。2、作用范围:整个JSP页面,是四大作用域中最小的一个,即超过这个页面就不能够使用了。Request1、生命周期:在service方法调用前由服务器创建,传入service方法。整个请求结束,request生命结束。2、作用范围:整个请求链(请求转发也存在)。3、作用:在整个请求链中共享数据。最常用到:在Servlet中处理好的数据交给Jsp显示,此时参数就可以放置在Request域中带过去Session1、生命周期:在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session,如果没有就在内存中创建一个session并返回。当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。如果服务器非正常关闭(强行关闭),没有到期的session也会跟着销毁。如果调用session提供的invalidate(),可以立即销毁session。2、作用范围:一次会话。3、作用:HttpSession在服务器中,为浏览器创建独一无二的内存空间,在其中保存会话相关的信息。Application1、生命周期:当Web应用被加载进容器时创建代表整个web应用的application对象,当服务器关闭或Web应用被移除时,application对象跟着销毁。2、作用范围:整个Web应用。所用插件前端代码插件Junit各种工具类(Dbutil、验证码、ExcelOperate、自定义异常、DateUtil、Constants)富文本编辑器kindEditor日历插件My97DatePicker数据导出为xls:POI图表显示数据Echarts项目地址(手动复制下面地址到浏览器即可)shimo.im/docs/Tb5uCVVkjoG5P
项目中踩过的雷1、更改项目后,需要重新部署相关项目,不然会出现各种访问错误2、使用jquery时,一定不要忘记给id选择器加#如:$("#btn1")3、分行的时候一定一定要加空格,不加空格会导致产生sql语句未正确结束的错误,如下语句Stringsql="selectdt.*,e.deptno,e.realname,d.deptnamefromdutydt"+"joinemployeeeondt.empid=e.empid"+"joindeptdone.deptno=d.deptno";4、接上个错误,如果遍历的时候,取的字段名错误,java.sql.SQLException:列名无效5、如果servlet发送的日期数据格式为"五月20,",则需要gson对其格式化,如下:Gsongson=newGsonBuilder().setDateFormat("yyyy-MM-ddHH:mm:ss").create();//按照yyyy-MM-ddHH:mm:ss格式化。勿忘重启服务器6、两种Datejava.util.Date时间格式:年-月-日时:分:秒.毫秒java.sql.Date时间格式:年-月-日java.sql.Date转为java.util.Datejava.sql.Datedate=newjava.sql.Date();java.util.Dated=newjava.util.Date(date.getTime());7、在写ajax时,注意单词拼写问题,如果发现所有逻辑都一样但是就是不出结果过,这说明应该是自己的单词拼写的问题(datetype/dataType)/*date:{"empId":empId,"deptno":deptno,"dtDate":dtDate},datetype:"text",*/data:{"empId":empId,"deptno":deptno,dtDate:dtDate},dataType:"text",8、报非法参数错误,一般是由于在jsp页面中声明的变量名与下面传值的变量名不一致导致,注意仔细观察如:vardtDate——vardtDtate但在href拼接是变量名残缺用dtDate9、StringtypeArr[]=request.getParameterValues("type");用于接收jsp页面的数组数据StringempId=request.getParameter("empId");用于接收的单个数据10、在jsp页面的书写中,使用el表达式应注意:${param.expId}==request.getParameter("expId")request.setAttribute("key",value)???11、在新建一个servlet项目时,在继承baseServleth后需要:删注解(override),改访问修饰符(propected为pulic,否则会)12、在Oracle中插入日期型数据: to_date(-02-14,yyyy-mm-dd)在Oracle将(已存储的)日期型数据转换成字符型数据: to_char(dt.dtdate,YYYY-MM-DD)将数据库中的数据与jsp页面中的日期数据比较时,使用13、Ajax书写格式$.ajax({url:"",type:"post",data:{"key",value},dataType:"text",success:function(data){});注:第一个:data:{key,value},可省略,用于控制层获取相关的值,request.getParameter("key");第二个:data:形参,用于表示从控制层传来的值,一般会alert一下(alert(data);)14、"""作用:输出双引号System.out.println("""+a+""");-----》"a"