《软件构架设计》实验报告.docx
- 文档编号:8975864
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:10
- 大小:75.73KB
《软件构架设计》实验报告.docx
《《软件构架设计》实验报告.docx》由会员分享,可在线阅读,更多相关《《软件构架设计》实验报告.docx(10页珍藏版)》请在冰豆网上搜索。
《软件构架设计》实验报告
《软件构架设计》
实验指导书
(Ver1.0)
计算机学院计算机科学技术系
郭玉华
安徽工业大学计算机学院
2014年11月
《软件构架设计》实验指导书
一、实验目的:
《软件构架设计》是一门理论课程,同时也是一门应用性很强的课程,上机实验对于该课程来讲不仅是加深巩固理论知识的重要环节,也是培养基本开发设计能力的关键。
本实验是结合《软件构架设计》课程的学习而开设的实验。
本实验目的如下:
1.通过上机实验,增强对大规模应用复杂系统软件设计开发的感性认识和实际认识能力;
2.通过实验,加深对系统构架理论知识的理解;
3.通过实验,加深对构件理解;
4.通过实验,提高应用设计模式的基本能力;
5.通过实验,加深对设计模式的理解。
二、适应专业:
软件工程专业
三、实验学时数:
8学时
四、实验内容及学时安排:
实验一:
B/S层次系统结构
实验目的:
理解构架,构件以及系统结构的关系与区别;
学时数:
2学时
实验内容:
1.应用服务器的启动/停止管理;
2.部署并访问运行Applet;
3.部署并访问运行JSP/Servlet;
4.部署并访问运行EJB;
实验要求:
1.理解客户层/Web层/业务层构件;
2.理解各层之间的关系;
实验步骤:
1.在实验1目录下找到applets目录,打开相关网页。
观察效果。
写出运行结果
如果要将该applet部署服务器上,应该如何部署?
______________________________________________
2.找到Tomcat服务器安装目录,进入bin目录,运行startup.bat文件,启动Tomcat服务器。
3.打开http:
//localhost:
8080/,(系统支持localhost并且端口为8080)如果成功打开,说明Tomcat服务器启动成功。
4.将实验1目录下的jsp-servlet拷贝到Tomcat的webapps目录下,打开http:
//localhost:
8080/jsp-servlet,继续点击操作,实验结果是
点击Englishversion链接后
进入Tomcat的工作目录work\Catalina\localhost\jsp-servlet(要找到work下的jsp-servlet目录,不同系统可能会有一点不一样,)目录,继续进入其各级子目录,一直到java源、类文件为止。
对照webapps目录的jsp-servlet子目录下的jsp网页,确认上述类和jsp网页之间的对应关系是一个jsp网页请求对应一个java类。
Jsp和Servlet的关系是当针对一个JSP的第一个请求到来时,该页面转化为对应于JSP中的指令的JAVA类。
容器负责创建对象,实际上就是一个Servlet。
该列子中,显示层、服务器功能层以及数据库层分别是什么?
显示层是jsp文件、服务器功能层是DispatcherServlet.class、没有数据库层。
5.打开http:
//localhost:
8080/jsp-servlet/hello,继续点击操作。
结果是
http:
//localhost:
8080/jsp-servlet/counter,不断刷新网页,结果是
该列子中,显示层、服务器功能层以及数据库层分别是什么?
显示层:
IE浏览器显示CounterServlet.class结果服务器功能层:
CounterServlet.java数据库层:
无
6.部署hibernate应用:
(1).进入到mysql的bin目录,命令root–uroot–p,回车(如果密码非空,输入密码再回车)进入实验2目录的SeafoodSupermarket路径下,将sql.sql脚本中的第一行代码导入数据库。
(2).修改SeafoodSupermarket\WEB-INF\classes路径下的hibernate.cfg.xml文件,将其中的数据库密码修改为你的数据库密码。
(3).(如果没有修改源代码,该步骤省略)进入SeafoodSupermarket\WEB-INF路径下,启动Dos或shell窗口,输入
antcompile--该命令用于编译应用。
(4).将整个应用复制到%TOMCAT_HOME%/webapps路径下,启动Tomcat服务器。
(5).使用路径http:
//localhost:
8080/SeafoodSupermarket/,点击“登录”按钮,这个操作会自动初始化脚本,可以在mysql窗口中查看数据库脚本是否已经初始化。
(6).将SeafoodSupermarket路径下sql.sql脚本中的第二行代码导入数据库(如果退出mysql,先要使用命令root–uroot–p进入mysq,并要先使用usesupermarket命令;)。
(7).再次访问http:
//localhost:
8080/SeafoodSupermarket/,使用用户名和密码nitpro(j即(6)中增加的)登录。
(8)(7)中运行结果的显示层、服务器功能层以及数据库层分别是什么?
7.利用JSP技术,编写一个动态网页,输出9*9乘法表。
<%
for(inti=1;i<=9;i++)
{
for(intj=1;j<=i;j++)
out.print(i+"*"+j+"="+i*j+"");
out.print("
");
}
%>
8.编写一个Servlet类,在网页中输出9*9乘法表。
9.比较7与8两方法的异同。
首先编写jsp代码,但是到服务器端首先会被转成servlet程序然后就按照servlet的执行顺序执行了。
实验二:
单态模式的数据库访问模块
实验目的:
加强创建型设计模式的理解,锻炼基本的创建型设计模式应用能力。
学时数:
2学时
实验内容:
1.设计一个类,通过该类获取访问数据库的连接connection,要求使用单态模式控制该类connection对象;
2.通过该类获取connection,并操作数据库(增删改)。
实验要求:
了解创建型设计模式的基本思路,掌握单态设计模式的基本方法和步骤
UML关系图:
设计代码:
Importjava.sql.*;
publicclassLazySingleton
{
privatestaticLazySingletonm_instance=null;
privatestaticconnectioncon=null;
//私有的默认构造方法,保证客户端无法直接对其实例化
privateLazySingleton(){
Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);
con=DriverManager.getConnection(“jdbc:
sqlserver:
//127.0.0.1:
1433;databaseName=wmh”,”sa”,”sa”);
}
//静态工厂方法,返回此类的唯一实例
publicsynchronizedstaticLazySingletongetInstance()
{if(m_instance==null)
{m_instance=newLazySingleton();}
returnm_instance;
}
}
publicclassTest1{
publicstaticvoidmain(String[]args){
Connectioncon=LazySingleton.getInstance().con;
Statementsta=con.createStatement();
StringstrSql=“CreatetableABC;”
intcount=sta.exectueUpdata(strSql);
sta.close();
con.close();
}
}
实验三:
行为型设计模式实验
实验目的:
加强行为型设计模式的理解,锻炼基本的行为型设计模式应用能力。
学时数:
2学时
实验内容:
1.选用一种行为型设计模式,以学生上课通知为背景,设计上课时间、地点更改通知程序;
实验要求:
了解行为型设计模式的基本思路,掌握Observer模式的基本方法和步骤
UML关系图:
设计代码:
抽象主题角色Subject接口的代码:
publicinterfaceSubject{
//注册一个新观察者
publicvoidregister(Observerobserver);
//删除一个观察者,根据返回值判断是否成功完成删除
publicvoidclear(Observerobserver);
//通知所有注册过的观察者
publicvoidnotifyObserver();
}
抽象观察者Observer接口代码
publicinterfaceObserver{
publicvoidupdate();
}
具体观察者角色Student类的代码:
publicclassStudentimplementsObserver{
privateTeachert;
publicvoidupdate(){
System.out.println("Igetit");
}
publicStudent(Teachert){
this.t=t;
}
}
具体主题角色Teacher类的代码:
importjava.util.Vector;
publicclassTeacherimplementsSubject{
privateVector
publicvoidregister(Observerobserver){
observerList.addElement(observer);
}
publicvoidclear(Observerobserver){
booleanb=observerList.removeElement(observer);
if(b){
System.out.println("成功删除该学生(观察者)");
}else{
System.out.println("删除操作失败");
}
}
publicvoidnotifyObserver(){
for(Observerobserver:
observerList){
observer.update();
}
}
}
客户端Test类的代码:
publicclassTest{
publicstaticvoidmain(String[]args){
Teachert=newTeacher();
Students1,s2;
s1=newStudent(t);
s2=newStudent(t);
t.register(s1);
t.register(s2);
t.notifyObserver();
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件构架设计 软件 构架 设计 实验 报告