资源预览内容
第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
第9页 / 共27页
第10页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Struts2+Hibernate+Spring(S2SH)WEB程序设计程序设计开发流行架构开发流行架构不旷课、迟到不旷课、迟到1克服为难情绪克服为难情绪2多动手、多问、多思考多动手、多问、多思考3要渴望学习要渴望学习41、本课程学习要求 1234v掌握工作原理掌握工作原理v理清框架的功能理清框架的功能v掌握使用步骤掌握使用步骤v为什么使用为什么使用v什么时间使用什么时间使用运行并多看这运行并多看这些框架的测试些框架的测试代码。要像买代码。要像买彩民分析采票彩民分析采票走势图那样慢走势图那样慢慢琢磨分析。慢琢磨分析。 v范例范例-实践实践-思考思考v看视频看视频尚学堂尚学堂浪曦浪曦2、本课程学习方法、本课程学习方法v要善于总结要善于总结v能下载配置网站能下载配置网站v教材的源码能运行教材的源码能运行v能利用互联络学习能利用互联络学习3、课程定位、性质与作用课程定位课程定位与性质与性质WEBWEB程序设计程序设计是软件是软件工程工程专业、计算机专业、计算机科学与技术科学与技术专专业、计算机网络专业的核心课程之一,也是业、计算机网络专业的核心课程之一,也是JavaJava技术方向技术方向系列课程中的主干课程。其课程性质是技术类专业课。本系列课程中的主干课程。其课程性质是技术类专业课。本课程旨在培养学生应用课程旨在培养学生应用JavaJava技术开发技术开发WebWeb应用程序的能力应用程序的能力。课程的课程的作用作用提高学生的职业技能,掌握从事软件开发所必须具备的专提高学生的职业技能,掌握从事软件开发所必须具备的专业知识和操作技能,业知识和操作技能,能够熟练运用当前流行的能够熟练运用当前流行的javajava开源框开源框架:架:StrutsStruts、HibernateHibernate以及以及SpringSpring来构建灵活、易于扩来构建灵活、易于扩展的多层展的多层WebWeb应用程序。应用程序。 ;增强学生对企业实际开发技术;增强学生对企业实际开发技术的适应能力;增强学生的责任感和使命感、是提高职业素的适应能力;增强学生的责任感和使命感、是提高职业素养养,应用能力和创新能力的重要载体。,应用能力和创新能力的重要载体。4、课程学习内容补充内容1、网页打印2、数据导入导出3、在线编辑器4、日志5、数据库连接池6、版本控制cvs的使用教材内容1、struts2、hibernate 3、spring 4、ssh集成5、综合案例5、课程教学目标我们的目标是:能够熟练运用当前流行的我们的目标是:能够熟练运用当前流行的Java开源开源框架:框架:Struts、Hibernate以及以及Spring来构建灵来构建灵活、易于扩展的多层活、易于扩展的多层Web应用程序。应用程序。 5.1 Model1与与Model2设计模式设计模式 v以以JSP为中心的开发模型,称为为中心的开发模型,称为Model1(JSP+JAVABEAN)业务逻辑与表示逻辑混和,不利维护与重用HTML中嵌入了大量的JAVA代码验证、流程控制、更新程序的状态全部在JSP中完成v基于基于MVC模式的框架(模式的框架(Model2)MVC将问题进行分解模型包含应用程序的核心功能。模型封装了应用程序的状态。它对视图或控制器一无所知。 视图提供模型的表示。它是应用程序的 外观。视图可以访问模型的读方法,但不能访问写方法。此外,它对控制器一无所知。控制器对用户的输入作出反应。它创建并设置模型。 Model2图示图示5、2 S2SH框架 MVC设计模式另一种实现方式C/S:以数据库为中心:以数据库为中心B/S:多层架构才是真正的目的:多层架构才是真正的目的B/S多层架构将显示、业务运算、数据库等功能完全分离,杜绝彼此多层架构将显示、业务运算、数据库等功能完全分离,杜绝彼此的耦合与影响,从而实现松耦合和良好的可维护性。的耦合与影响,从而实现松耦合和良好的可维护性。v呈现层呈现层(UILayer/PresentationLayer)Strutsv业务逻辑层(业务逻辑层(BusinessLayer)Springv持久化层(持久化层(PersistenceLayer)Hibernate5、3 S2SH框架优势框架优势1.典型的三层构架体现MVC(模型Model,视图View和控制)思想,可以让开发人员减轻重新建立解决复杂问题方案的负担和精力。便于敏捷开发出新的需求,降低开发时间成本。 2.良好的可扩展性,SSH主流技术有强大的用户社区支持它,所以该框架扩展性非常强,针对特殊应用时具有良好的可插拔性,避免大部分因技术问题不能实现的功能。 3.良好的可维护性,业务系统经常会有新需求,三层构架因为逻辑层和展现层的合理分离,可使需求修改的风险降低到最低。随着新技术的流行或系统的老化,系统可能需要重构, SSH构架重构成功率要比其他构架高很多。 4.优秀的解耦性,很少有软件产品的需求从一开始就完全是固定的。客户对软件需求,是随着软件开发过程的深入,不断明晰起来的。因此,常常遇到软件开发到一定程度时,由于客户对软件需求发生了变化,使得软件的实现不得不随之改变。 SSH三层构架,控制层依赖于业务逻辑层,但绝不与任何具体的业务逻辑组件耦合,只与接口耦合;同样,业务逻辑层依赖于DAO层,也不会与任何具体的DAO组件耦合,而是面向接口编程。采用这种方式的软件实现,即使软件的部分发生改变,其他部分也不会改变。6、考试方法1 1、平时考勤:、平时考勤: 10%10%2 2、上机实习:、上机实习: 20%20%3 3、笔试成绩、笔试成绩 :70%70%第一讲第一讲 WEB页面打印页面打印一、一、WEB页面常用的打印方法页面常用的打印方法1、IE内置打印控件内置打印控件IEWebBrowser2、IE对象对象window的的print()方法方法3、第三方报表插件、第三方报表插件二、window.print()的用法1、编写一个javascript打印函数/调用window.print()function printdiv(printpage)var headstr = ;var footstr = ;var newstr = document.all.item(printpage).innerHTML;var oldstr = document.body.innerHTML;document.body.innerHTML = headstr+newstr+footstr;window.print(); document.body.innerHTML = oldstr; /点击打印后网页照常显示return false;第一讲 WEB页面打印第一讲第一讲 WEB页面打印页面打印2、编写一个要打印内容的、编写一个要打印内容的DIV层层这里是打印区域这里是打印区域3、可以强制分页、可以强制分页4、制作一个打印按钮、制作一个打印按钮/调用第一步的函数调用第一步的函数第一讲第一讲 WEB页面打印页面打印三三、举例、举例打印测试functionprintdiv(printpage)varheadstr=;varfootstr=;varnewstr=document.all.item(printpage).innerHTML;varoldstr=document.body.innerHTML;document.body.innerHTML=headstr+newstr+footstr;window.print();document.body.innerHTML=oldstr;returnfalse;第一讲第一讲 WEB页面打印页面打印/这里的内容不能打印这里的内容不能打印这里是打印区域这里是打印区域/这里的内容不能打印这里的内容不能打印第二讲第二讲 网页中的数据导入到网页中的数据导入到excel表表第一步:编写第一步:编写Javascript函数函数functionsaveCode(obj)varwinname=window.open(,_blank,top=500);varstrHTML=document.getElementById(obj).innerHTML;winname.document.open(text/html,replace);winname.document.writeln(strHTML);winname.document.execCommand(saveas,excel.xls);winname.close();第二讲第二讲 网页中的数据导入到网页中的数据导入到excel表表第二步:编写第二步:编写div层层 列标题1 列标题2 列标题3 列标题4 列标题5 FFF GGGHHH IIIJJJ 第二讲第二讲 网页中的数据导入到网页中的数据导入到excel表表 第三步:调用第一步编写的函数,并把第二步中的第三步:调用第一步编写的函数,并把第二步中的Div层名称传给函数层名称传给函数第三讲第三讲 excel表中的数据导入到表中的数据导入到mysql数据库数据库Excel表导入数据的方法主要有1、第三方插件:jxl、poi等2、使用csv文件 方式导入本例使用的是jxl插件 第三讲第三讲 excel表中的数据导入到表中的数据导入到mysql数据库数据库1在网上下载在网上下载jxl.jar,这个这个JAR包用于包用于Java操作操作excel,下载后,将这个包复下载后,将这个包复制到工程制到工程Webroot下的下的WEB_INF下的下的lib中,或是在工程中导入中,或是在工程中导入jxl.jar包。包。2准备准备excel文件文件,如图所示如图所示:3数据库建表数据库建表数据库名:sunli 表名:slid int 主键 自动增长title varchar(50)author varchar(50)acontent varchar(50)第三讲第三讲 excel表中的数据导入到表中的数据导入到mysql数据库数据库4 写好导入数据JSP 选择文件1: 第三讲第三讲 excel表中的数据导入到表中的数据导入到mysql数据库数据库5编写编写db.java用于连接数据库用于连接数据库package com.cn;import java.sql.*;public class db public Connection connstr = null; public ResultSet res = null; public PreparedStatement prase = null; static private String strUrl = jdbc:mysql:/localhost/sunli?useUnicode=true&characterEncoding=gbk; static private String strUser = root; static private String strPwd = root; public db() try Class.forName(com.mysql.jdbc.Driver); connstr =DriverManager.getConnection(strUrl, strUser, strPwd); catch (SQLException ex) System.out.println(ex.getMessage() + 路径错误); catch (ClassNotFoundException ex) System.out.println(ex.getMessage() + 驱动错误); finally System.out.println(成功了); public ResultSet executeQuery(String sql) throws Exception Statement stmt = connstr.createStatement(); res = stmt.executeQuery(sql); return res; public PreparedStatement dosql(String sql) throws Exception prase = connstr.prepareStatement(sql); return prase; 第三讲第三讲 excel表中的数据导入到表中的数据导入到mysql数据库数据库6excel.java用于读取用于读取excel数据数据package com.cn;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.util.*;import jxl.Sheet;import jxl.Workbook;public class excel public List addCustomerAssign(File file) List ls=new ArrayList(); jxl.Workbook rwb = null; try InputStream is = new FileInputStream(file); rwb = Workbook.getWorkbook(is); Sheet rs = rwb.getSheet(0); int rsRows = rs.getRows(); for(int i=1;i rsRows;i+)/如第一行为属性项则从第二行开始取数据(int i=0 ;i into.javapackage com.cn;import java.sql.PreparedStatement;public class into String sql = insert into sl(title,author,acontent) values(?,?,?); db data=new db(); public PreparedStatement prase = null; public Boolean insertexcel(mynews ms) Boolean jiaqi = false; try prase = data.dosql(sql); prase.setString(1, ms.getTitle(); prase.setString(2, ms.getAuthor(); prase.setString(3, ms.getAcontent(); prase.executeUpdate(); jiaqi = true; catch (Exception e) e.printStackTrace(); return jiaqi; 第三讲第三讲 excel表中的数据导入到表中的数据导入到mysql数据库数据库8实体类实体类mynews.javapackage com.cn;public class mynews private int id; private String title; private String author; private String acontent; public String getAuthor() return author; public void setAuthor(String author) this.author = author; public String getAcontent() return acontent; public void setAcontent(String acontent) this.acontent = acontent; public int getId() return id; public void setId(int id) this.id = id; public String getTitle() return title; public void setTitle(String title) this.title = title; 第三讲第三讲 excel表中的数据导入到表中的数据导入到mysql数据库数据库9建立建立servlettosqlservlet改动它的改动它的doPost方法方法public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException into in=new into();excel ex=new excel();String path=new String(request.getParameter(excel).getBytes(ISO8859-1),UTF-8);/红色字体改为:gbk即可解决问题System.out.println(path);File file=new File(path);List ls=ex.addCustomerAssign(file);Iterator iter=ls.iterator();while(iter.hasNext()mynews ms=(mynews)iter.next();if(in.insertexcel(ms)System.out.println(成功);elseSystem.out.println(失败);
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号