




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
主講人:閭楓延遲符任務5.1簽到簽退設計SpringAOP任務分析簽到與簽退功能主要用于進行員工的考勤,記錄員工的簽到及簽退時間,為了防止別人代替簽到,系統(tǒng)在用戶簽到簽退的同時記錄用戶的信息、用戶機器的信息并保存到考勤日志表中。簽到簽退設計延遲符簽到模塊01pojo層07Spring配置02Mapper層06MyBatis配置03Service層05視圖層04Controller層簽到簽退設計延遲符簽到的運行過程用戶登錄后選擇考勤管理簽到頁面,輸入考勤信息,點擊考勤按鈕完成考勤,考勤的同時記錄用戶姓名、IP地址、考勤時間、考勤標志等信息并保存到考勤日志表中。考勤日志應用SpringAOP的ProxyFactoryBean代理對象實現,日志管理業(yè)務切入到考勤簽到模塊中,用戶點擊考勤后,日志管理業(yè)務啟動,獲取用戶考勤信息后,保存考勤日志信息到日志表中。簽到設計與實現延遲符創(chuàng)建項目,引入依賴,如:Spring、MyBatis、MySQL等必備的相關依賴數據庫中準備好相應的數據表tb_check和tb_checklog0102準備工作簽到設計與實現延遲符1.pojo層:Check.java和CheckLog.javapackagecn.js.ccit.pojo;//簽到實體類publicclassCheck{privateIntegercheckId;privateStringcheckTime;privateStringcheckDesc;privateIntegercheckTag;privateIntegeruserId;//省略屬性的setter和getter方法}packagecn.js.ccit.pojo;//簽到日志實體類publicclassCheckLog{privateIntegerid;privateIntegeruserId;privateStringcheckTime;privateIntegercheckTag;privateStringcheckIp; //省略屬性的setter和getter方法}簽到設計與實現延遲符2.Mapper層packagecn.js.ccit.mapper;importcn.js.ccit.pojo.Check;publicinterfaceCheckMapper{//增加簽到記錄publicvoidaddCheck(Checkcheck);}簽到記錄接口:CheckMapper.java添加簽到記錄映射文件:CheckMapper.xml<mappernamespace="cn.js.ccit.mapper.CheckMapper"><!--添加簽到信息--><insertid="addCheck"parameterType="cn.js.ccit.pojo.Check">insertintotb_check(checkTime,checkDesc,checkTag,userId)values(#{checkTime},#{checkDesc},#{checkTag},#{userId})</insert></mapper>簽到設計與實現延遲符2.Mapper層packagecn.js.ccit.mapper;importcn.js.ccit.pojo.CheckLog;publicinterfaceCheckLogMapper{//增加簽到日志記錄publicvoidaddCheckLog(CheckLogcheckLog);}記錄簽到日志接口:CheckLogMapper.java添加簽到日志記錄映射文件:CheckLogMapper.xml<mappernamespace="cn.js.ccit.mapper.CheckLogMapper"><!--添加簽到日志信息--><insertid="addCheckLog"parameterType="cn.js.ccit.pojo.CheckLog">insertintotb_checklog(userId,checkTime,checkTag,checkIp)values(#{userId},#{checkTime},#{checkTag},#{checkIp})</insert></mapper>簽到設計與實現延遲符3.Service層publicinterfaceICheckService{//增加簽到記錄publicvoidaddCheck(Checkcheck);}簽到服務層接口:ICheckService.java簽到服務層實現類:CheckService.java@DatapublicclassCheckServiceimplementsICheckService{privateCheckMappercheckMapper;@OverridepublicvoidaddCheck(Checkcheck){//調用DAO層,添加考勤記錄checkMapper.addCheck(check);}}簽到設計與實現延遲符3.Service層publicinterfaceICheckLogService{//增加簽到日志publicvoidaddCheckLog(CheckLogcheckLog);publicHttpServletRequestgetRequest();publicvoidsetRequest(HttpServletRequestrequest);}考勤日志服務層接口:ICheckLogService.java考勤日志服務層實現類:CheckLogService.java@DatapublicclassCheckLogServiceimplementsICheckLogService,AfterReturningAdvice{privateCheckLogMappercheckLogMapper;privateHttpServletRequestrequest;publicHttpServletRequestgetRequest(){returnrequest;}publicvoidsetRequest(HttpServletRequestrequest){this.request=request;}@OverridepublicvoidaddCheckLog(CheckLogcheckLog){//添加簽到日志checkLogMapper.addCheckLog(checkLog);}//對簽到日志的后置通知@OverridepublicvoidafterReturning(ObjectreturnValue,Methodmethod,Object[]args,Objecttarget)throwsThrowable{HttpSessionsession=request.getSession();Checkcheck=(Check)session.getAttribute("check");CheckLogcheckLog=newCheckLog();checkLog.setUserId(check.getUserId());checkLog.setCheckTime(check.getCheckTime());checkLog.setCheckTag(check.getCheckTag());checkLog.setCheckIp((String)session.getAttribute("ip"));this.addCheckLog(checkLog);}}簽到設計與實現延遲符4.Controller層@WebServlet(name="CheckController",value="/check")@DatapublicclassCheckControllerextendsHttpServlet{privateICheckServicecheckService;@OverrideprotectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{this.doPost(request,response);}@OverrideprotectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//獲取簽到信息并存儲到簽到對象中Checkcheck=newCheck();check.setCheckDesc(request.getParameter("checkDesc"));//設置簽到用戶的Id,若用戶正常登錄,可以獲取到用戶真實的Id,這里暫時先用指定值表示check.setUserId(1);check.setCheckTag(newInteger(0));//獲取當前時間為簽到時間Datedate=newDate();//對時間進行格式化處理DateFormatdateFormat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");check.setCheckTime(dateFormat.format(date));
簽到控制層類:CheckController.java//獲取IP地址Stringip=request.getRemoteAddr();//獲取會話對象HttpSessionsession=request.getSession();//保存用戶登錄的ip地址session.setAttribute("ip",ip);//保存考勤信息到會話中session.setAttribute("check",check);ServletContextsc=this.getServletContext();//獲取Spring容器中的Bean實例WebApplicationContextwac=WebApplicationContextUtils.getWebApplicationContext(sc);//獲取簽到日志服務對象,保存請求對象CheckLogServicecheckLogService=(CheckLogService)wac.getBean("checkLogService");checkLogService.setRequest(request);//獲取代理后的CheckService對象,對簽到方法進行簽到日志切入ICheckServicecheckService=(ICheckService)wac.getBean("checkProxy");//調用服務方法簽到checkService.addCheck(check);response.sendRedirect("/webOA4/checkinfo.jsp");}}簽到設計與實現延遲符5.視圖層JSP<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>用戶簽到</title></head><body><h3>簽到</h3><formaction="/webOA4/check"method="post"><p>備注<textarealabel="簽到描述"cols="30"rows="5"name="checkDesc"></textarea></p><inputtype="submit"value="簽到"></form></body></html>用戶考勤頁面:check.jsp<%@pageimport="cn.js.ccit.pojo.Check"%><%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>顯示用戶簽到信息</title></head><body>用戶考勤信息<br><%Checkcheck=(Check)session.getAttribute("check");%>用戶的id為:<%=check.getUserId()%><br>用戶的ip為:<%=session.getAttribute("ip")%><br>簽到時間為:<%=check.getCheckTime()%></body></html>考勤結果頁面:checkinfo.jsp簽到設計與實現延遲符6.MyBatis配置文件<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-////DTDConfig3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><!--mybatis核心配置文件--><settings><settingname="logImpl"value="LOG4J"/></settings><!--加載mapper映射配置文件--><mappers><mapperresource="cn/js/ccit/mapper/CheckMapper.xml"/><mapperresource="cn/js/ccit/mapper/CheckLogMapper.xml"/></mappers></configuration>配置文件:MyBatis.xml簽到設計與實現延遲符7.Spring配置文件<?xmlversion="1.0"encoding="UTF-8"?><context:annotation-config></context:annotation-config><context:component-scanbase-package="cn.js.ccit"></context:component-scan><!--切面,簽到的日志類--><!--服務層Bean--><beanid="checkLogService"class="cn.js.ccit.service.CheckLogService"><propertyname="checkLogMapper"ref="checkLogMapper"/></bean><beanid="checkService"class="cn.js.ccit.service.CheckService"><propertyname="checkMapper"ref="checkMapper"/></bean><!--使用Spring代理工廠ProxyFactoryBean創(chuàng)建代理,并進行基本配置--><beanid="checkProxy"class="org.springframework.aop.framework.ProxyFactoryBean"><!--設置代理的接口--><propertyname="proxyInterfaces"value="cn.js.ccit.service.ICheckService"/><!--設置需要增強的目標業(yè)務類--><propertyname="target"ref="checkService"/><!--設置增強的方式,這里為后置置通知--><propertyname="interceptorNames"value="checkLogService"/></bean><!--引入java配置文件--><context:property-placeholderlocation="classpath:perties"/>
配置文件:applicationContext.xml<!--配置數據源--><beanid="dataSource"class="mons.dbcp2.BasicDataSource"><propertyname="driverClassName"value="${db.driver}"/><propertyname="url"value="${db.url}"/><propertyname="username"value="${db.username}"/><propertyname="password"value="${db.password}"/><propertyname="maxIdle"value="5"/></bean><!--配置sqlSessionFactory--><beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"><!--指定
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB3709T 039-2025 泰山靈芝-羊肚菌周年輪作栽培技術規(guī)程
- 福建裝配式鋼板倉施工方案
- 進入自然保護區(qū)施工方案
- 氧氣管道脫脂施工方案
- 采光井加陽光房施工方案
- 街道巷口硬化施工方案
- 吉林展會裝潢施工方案
- 耐高溫超輕硅酸鈣隔熱保濕材料項目風險識別與評估綜合報告
- 馬鞍山打地熱井施工方案
- 智研咨詢發(fā)布:中國城市礦產行業(yè)市場現狀及投資前景分析報告
- 2024年輔警考試公基常識300題(附解析)
- 2024年上海公安機關勤務輔警招聘筆試參考題庫附帶答案詳解
- 健康知識科普講座主題
- 籃球突分技術與配合-教學設計
- 【音樂】歌唱祖國-《彩色的中國》課件 2023-2024學年人音版初中音樂七年級上冊
- 營區(qū)綠化方案
- JJF 2095-2024壓力數據采集儀校準規(guī)范
- 2023年上海市16區(qū)數學中考二模匯編2 方程與不等式(39題)含詳解
- 光伏并網前單位工程驗收報告-2023
- 《貝爾格里爾斯》課件
- 火鍋店消防知識培訓課件
評論
0/150
提交評論