Struts2综合应用实例.ppt
《Struts2综合应用实例.ppt》由会员分享,可在线阅读,更多相关《Struts2综合应用实例.ppt(47页珍藏版)》请在三一办公上搜索。
1、第7章 Struts 2综合应用实例,7.1 建立项目,7.2 运行主界面的实现,7.3 实现“登录”功能,7.4 实现“借书”功能,7.5 实现“图书管理”功能,第7章 Struts 2综合应用实例,这里只介绍图书管理系统的两个功能:读者借书和图书管理,它已经包含了操作数据库的主要内容,其他功能读者可以根据所学知识自行完成。本系统运行时的初始主界面如图7.1所示。,图7.1 运行主界面,第7章 Struts 2综合应用实例,在没“登录”之前,操作功能的图片是灰色的,不能被单击。而当登录成功后,操作功能的图片就亮起来,登录的输入框及“登录”按钮被置灰,表示不可再进行“登录”操作。登录有两种角色
2、,使用“管理员”登录名登录,操作功能所有图片都会亮,表示所有操作都可以进行,如图7.2所示。,图7.2 管理员身份登录后的界面,第7章 Struts 2综合应用实例,如果是“学生”登录,登录成功后,前面两个图片会亮,表示可以进行操作,后面的图片还是灰色的,表示不能操作,如图7.3所示。,图7.3 学生身份登录后的界面,7.1 建立项目,首先,在MyEclipse中建立项目Struts2_Example,加载Struts 2所需的5个类库、SQL Server所需的类库及文件上传所需的两个类库(这两个类库在Struts 2的文件上传部分已经讲解)。然后修改web.xml文件,在第一个Struts
3、 2的例子中已经给出,不再赘述。接着在src下创建Struts 2的核心配置文件struts.xml,并编写其框架代码:./此处以后添加action配置,7.2 运行主界面的实现,上面已经展示了初始系统的主页面,文件名为index.jsp,要实现这个功能,采用表格方式把页面分成3行1列。其中,第1行是页面的头部,由于比较复杂,进行专门设计,文件名为head.jsp。结构分布如下所示:,index.jsp,7.2 运行主界面的实现,为了设计图书管理系统上部页面,可以先采用Adobe公司的Photoshop或者Illustrator软件设计出整幅图页面,如图7.4所示。,图7.4 上部页面整幅图,
4、然后采用Photoshop或者Illustrator或者FireWorks(建议采用)的图片“切片”工具,进行切片分隔,切片后如图7.5所示。,图7.5 切片分隔后,7.2 运行主界面的实现,选择“导出”功能,设置导出为“HTML和图像”;选择“选项”,对表格进行设置,如图7.6所示。,图7.6 导出设置,7.2 运行主界面的实现,进行“导出”操作后生成的图片文件如图7.7所示。,图7.7 生成的图片文件,7.2 运行主界面的实现,同时,对系统自动生成的HTML文件进行如下处理:删除注释及img标记中对本例没有用的属性;为了HTML代码阅读方便,把系统生成的有关的图片文件改名;加入系统登录和图
5、片对应功能的超链接代码;把扩展名改成“head.jsp”。修改后的head.jsp代码。除了上面介绍的切割图片的方法外,HTML还提供了在图片上制作热点区域的方法,就是可以在一幅完整的图片上面,制作出一块区域用于超链接,该区域是用坐标来实现的。应用这种方法,只需将上面所说的头部的图片切割成上下两部分,如图7.8所示。,图7.8 头部图片切割情况,7.2 运行主界面的实现,然后,把上面一幅图作为背景,而下面一幅图作为插入在表格中的图片,该图片可以制作热点区域来实现图片的超链接。制作完成后代码。头部实现后,运行的主界面就简单了,index.jsp代码实现为。,7.3 实现“登录”功能,由于登录时要
6、对数据库进行查询,故在编写“登录功能”的代码之前,要先编写连接数据库的代码。连接数据库的文件DBConn.java代码实现为。可以看出,数据库的连接与关闭使用的是静态方法,要对数据库连接或关闭,只需用“类名.方法名”即可。登录页面在“index.jsp”中已经包含,可以看出,当单击“提交”时,交给了“login.action”,故需要在“struts.xml”中配置该action来处理请求:/index.jsp/index.jsp,7.3 实现“登录”功能,处理请求的Action类LoginAction.java代码为。该Action中应用了模型传值,Login.java代码为:package
7、 org.model;public class Login private int id;private String name;private String password;private boolean role;/省略上述属性的get和set方法在Action中引用了LoginDao.java,该类负责登录信息与数据库的交互。DAO即为数据访问对象,在一般的项目开发中都会有DAO的存在,这样便于维护,所以,登录信息与数据库的交互由LoginDao来处理。LoginDao这样的命名方式可以使程序员根据该名称就清楚它的功能,同时可以方便地找到它。LoginDao.java代码实现。,7.4
8、 实现“借书”功能,当用管理员身份“登录”后,“图片”链接就可用了,单击“借书”,出现如图7.9所示的界面。,图7.9 借书界面,7.4 实现“借书”功能,要实现这个功能,采用表格方式把页面分成3行2列。其中,第1行与第3行占两列,然后在第2行的两列中分别放两个表格,左边的表格非常简单,不多介绍了,关键是右边的表格,右边的表格又分为3行1列,第1行是“图书信息”字样及一个简单的表单,第2行中又插入了一个表格,这个表格显示图书的信息,第3行是分页的信息。基本结构如下所示:,lend.jsp,lend.jsp,7.4 实现“借书”功能,从该页面可以看出,左边是“查询”功能,输入借书证号后,单击“查
9、询”按钮,就可以查出该借书证号的读者借了哪些书籍,而刚进入页面时,借书功能是不可用的,但当输入了借书证号后,单击“查询”按钮,会在右边显示该读者所借书籍,同时“借书”功能变亮,表示可以进行借书操作了,如图7.10所示。,图7.10 查询借书信息,7.4 实现“借书”功能,输入正确的ISBN及图书ID,单击“借书”按钮,就可以借得此书,如图7.11所示。,图7.11 借书成功页面,7.4.1 查询已借图书,单击“借书”链接后,出现了图7.4的界面供用户操作,从head.jsp中的代码:可以看出,单击该操作,提交到“lend.jsp”,故图7.4所示的页面的代码实现应该为lend.jsp:读者可能
10、会感觉这么长的代码怎么看,其实代码非常简单,总体来说就四个部分,第一部分:,7.4.1 查询已借图书,导入头部,具体内容前面已经讲解,不再赘述。第二部分就是页面左边的查询功能部分:内容选择借书证号:,7.4.1 查询已借图书,当输入正确的借书证号,单击“查询”时,提交到“selectBook.action”,根据struts.xml配置下面的代码:/lend.jsp处理的Action为LendAction中的selectAllLend方法,LendAction.java的该部分代码。,7.4.1 查询已借图书,由于用到了模型传值,而且在后面的与数据库交互时把查询的数据记录都转化为该类中的属性,
11、故模型代码Lend.java为:package org.model;import java.util.Date;public class Lend private String bookId;private String readerId;private String bookName;private String publisher;private float price;private String ISBN;private Date lTime;/生成上述属性的get和set方法,7.4.1 查询已借图书,该Action中应用了3个其他类,有StudentDao、LendDao及Page
12、r,Dao是用来和数据库交互的,该Action类中应用了StudentDao的“selectByReaderId”方法。该方法是用来根据借书证号,查询学生信息,如果有该学生信息就查询该学生已借图书;如果没有就添加“不存在该学生”的信息到“message”,然后返回到页面,页面会输出该信息,告知用户输入了错误的借书证号。StudentDao.java的代码实现为。,7.4.1 查询已借图书,该Dao中的方法selectByReaderId的作用就是根据借书证号,查询学生信息;如果有就返回该学生,如果没有就返回null。当然,在应用Student类之前要先编写该类的代码,Student.java就
13、是student表对应的模型:package org.model;import java.util.Date;public class Student private String readerId;private String name;private String spec;private boolean sex;private Date born;private int num;private int snum;private byte photo;/省略上面属性的get和set方法,7.4.1 查询已借图书,判断完成后,如果输入了正确的借书证号,就会分页查询,先来看看在LendDao中
14、的查询方法。当在Action中调用这个查询方法后,就会得到对应借书证号在lend表中的“pageSize”条记录,返回查询结果的List集。接下来就是Pager.java,即分页功能。其实,分页功能的处理有很多方法,不同的程序员写的方法可能不一样,但都能达到目的。本例的分页功能代码。Pager类中构造方法中要传入两个参数,一个是“pageNow”,另一个是“totalSize”,而“totalSize”是数据库中对应记录的总条数,故需要查询数据库,所以在创建Pager对象时:Pager page=new Pager(pageNow,lendDao.selectLendSize(lend.get
15、ReaderId();,7.4.1 查询已借图书,在LendDao中加入查询总记录的方法。在Action中调用方法查询完成后,把要保存的信息保存到request中,然后根据返回值在struts.xml中的配置返回到“lend.jsp”页面。此时由于request保存了该信息,就会在页面输出信息,输出代码就是要说的lend.jsp的第三部分:图书IDISBN书名出版社价格借书时间,7.4.1 查询已借图书,上面内容是显示存储在request中的list,但在做这部分功能时每次只查询了“pageSize”条记录,故在页面中应用了分页。下面看分页代码。当单击要显示的页面时,就把pageNow值传到了
16、Action,Action就会根据pageNow的值查询要显示的list集,这样查询功能就基本完成了。在Action处理之前做了一些判断工作,如果输入的借书证号不合法或不存在就会直接返回并保存一些信息。在“lend.jsp”中也有相应的输出:,7.4.2“借书”功能,前面讲解了“lend.jsp”根据借书证号查询已借图书的功能,“lend.jsp”中还有最后一个功能就是借书,首先看看其实现代码。读者可以发现,借书的输入框中也进行了判断,如果“readerId”没有值就让输入框不可编辑,这是因为如果没有“readerId”就不知道谁要借书了,这个很容易理解。输入了“借书证号”(即readerId
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts2 综合 应用 实例
链接地址:https://www.31ppt.com/p-6521445.html