企业级应用系统开发平台3.docx

上传人:b****6 文档编号:8925761 上传时间:2023-02-02 格式:DOCX 页数:16 大小:62.65KB
下载 相关 举报
企业级应用系统开发平台3.docx_第1页
第1页 / 共16页
企业级应用系统开发平台3.docx_第2页
第2页 / 共16页
企业级应用系统开发平台3.docx_第3页
第3页 / 共16页
企业级应用系统开发平台3.docx_第4页
第4页 / 共16页
企业级应用系统开发平台3.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

企业级应用系统开发平台3.docx

《企业级应用系统开发平台3.docx》由会员分享,可在线阅读,更多相关《企业级应用系统开发平台3.docx(16页珍藏版)》请在冰豆网上搜索。

企业级应用系统开发平台3.docx

企业级应用系统开发平台3

 

《企业级应用系统开发平台》

实验报告册

 

2013–2014学年第一学期

班级:

学号:

姓名:

授课教师:

杨林实验教师:

杨林

实验学时:

16实验组号:

27

 

信息管理系

2013年12月

目录

实验一jsp基础编程3

实验二JDBC5

实验三Struts基础及应用编程9

实验四JDBC,Hibernate,及JSTL数据库访问技术编程14

实验一jsp基础编程

一、实验目的

本题目有5个题目组成,目的在于使学生熟悉jsp的基本结构、命令和内置对象

二、实验内容

题目1.1:

JSP页面的基本结构

(一)题目目的

掌握怎样在JSP页面中使用成员变量,怎样使用Java程序片以及Java表达式。

(二)思考题

1、解释每个标记的含义?

<%@%>在Scriptlet中可以定义局部变量、编写语句等。

<%!

%>在Scriptlet中可以定义全局变量、方法、类。

<%=%>在Scriptlet中主要的功能是输出一个变量或一个具体的常量,有时也将其称为表达出。

题目1.2:

JSP指令标记

(一)题目目的

掌握怎样在JSP页面中使用page指令设置contentType的值;使用include指令在JSP页面中静态插入一个文件的内容。

(二)思考题

1、Include指令在解释为servlet时的代码片段说明了什么?

如果换成动作include会怎么样?

答:

Jsp页面不能原封不动地被传送给浏览器,所有的jsp元素都必须首先由服务器进行处理。

这是通过将jsp页面转达化成servlet,然后执行这个servlet来完成的。

服务器需要一个jsp容器来处理jsp页面。

jsp容器通常以servlet的形式来实现,这个servlet经过配置,可以处理对jsp页面的所有请求。

Jsp容器负责将jsp页面转化成servlet(称为jsp页面实现类?

JSPPageimplementationclass),并编译这个servlet。

题目1.3:

JSP动作标记

(一)题目目的

掌握怎样在JSP页面中使用include标记动态加载文件;使用forward动作标记实现页面的转向。

(二)思考题

1、与题目二比较,动作和指令include哪个使用更方便?

两者的区别和联系?

答:

两者都有包含的意思,并且从运行的结果上来看,两者的功能也非常类似,但是两者的运行过程相差很大。

(1)联系:

<%@include%>指令是编译时语法,也就是在编译的时候,把指令所指向的目标文件的内容拷贝到指令所在的位置,替换指令,最终形成一个文件,在运行的时候只有一个文件。

include>动作是运行时语法,包含

include>动作的文件在执行到这个标签的时候,会转向执行标签所指向的目标文件,执行完目标文件之后,再接着执行标签后的内容,在运行的时候,涉及到两个文件,就像方法调用一样。

因为<%@include%>指令是静态的,而

include>是动态的,所以如果某一段代码肯定会执行,则可以使用<%@include%>指令,如果某一段代码有可能执行,有可能不执行,需要根据运行时候的状态,这时候可以使用

include>。

(2)区别:

1.静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet;而动态导入则在Servlet中使用include方法来引入被导入页面的内容。

2.静态导入时被导入页面的编译指令会起作用;而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。

3.动态包含还可以增加额外的参数。

题目1.4:

request对象

(一)题目目的

掌握怎样在JSP中使用内置对象request

(二)思考题

1、这个程序片段的含义是?

getParameter方法是如何设置值的?

答:

给a、b和operator分别赋值。

(1)构建你的链接,在链接里面构建你的数据。

(2)讲数据写入session或者其他容器,再servlet取。

2、中的method有几种选择,比较每种选择的不同?

答:

Method有两种get和post。

Get请求把表单的数据显式地放在URI中,并且对长度和数据值编码有所限制;Post请求把表单数据放在HTTP请求体中,并且没有长度限制。

题目1.5:

session对象

(一)题目目的

本题目的目的是让学生掌握怎样使用session对象存储和用户有关的数据。

(二)思考题

1、什么才是一次session?

如何理解一次session?

Session如何读写值?

写出其对应的方法。

当浏览器访问服务器时,服务器会创建一个session对象(该对象有一个id属性,其值是唯一的,一般称之为sessionId),服务器在默认情况下,会使用cookie机制(将sessionId放到set-cookie消息头)将这个sessionId发送给浏览器;当浏览器再次访问服务器时,会将sessionId发送给服务器,服务器依据sessionId找到之前的session对象。

三、总结

实验二JDBC

一、实验目的

1.掌握JSP中JDBC编程的基本方法。

2.掌握JSP连接数据库的常用方法

3.数据库的顺序查询、随机查询和条件查询。

二、填空题

1、请将程序中的|代码1|~|代码3|处补充完整。

程序清单3StudentManager.java

publicvoidconnection(){//连接数据库;

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//装载驱动程序;

conn=DriverManager.getConnection(url,username,pwd);//连接ODBC数据源studentManager

stmt=conn.createStatement();//获得执行语句对象stmt;

}catch(ClassNotFoundExceptione1){

System.err.println("驱动程序装载失败!

");

}catch(SQLExceptione2){

e2.getSQLState();

e2.getMessage();

}

}//endofconnectionmethod;

try{

connection();

StringInsSQL;

InsSQL="INSERTINTOstudent(学号,姓名,性别,出生年月,家庭住址,联系电话)"+

"VALUES("+"'"+no+"',"+"'"+name+"',"+"'"+gendar+"',"+"'"+birth+"',"+"'"+address+"',"+"'"+tel+"')";//定制插入SQL语句字符串

stmt=con.CreateStatement();

stmt.setString(1,no);

stmt.setString(2,name);

stmt.setString(3,gender);

stmt.setString(4,birth);

stmt.setString(5,address);

stmt.setString(6,tel);

Resultrs=stmt.executeUpdate(InsSQL);//执行将新记录插入到数据表student中;

}catch(SQLExceptione1){

System.err.println(e1.getSQLState());

}

finally{

close();//关闭数据库

}

2、程序清单6-4是类StudentManager2的程序模板,请补充|程序段1|~|程序段5|程序段,并输入该程序StudentManager2.java,调试并运行,观察程序运行的结果。

程序清单4StudentManager2.java

······

//定义更新面板

updateInnerPanel=newStudentPanel();

updateInputLbl=newJLabel("输入学号:

");

updateInputText=newJTextField(10);

updateInputText.addActionListener(newActionListener(){

publicvoidclearContent(){

viewPanel.setText("");

}//将更新面板的显示内容清除;

});

//定义删除面板

deleteInnerPanel=newStudentPanel();

inputNoLable=newJLabel("输入学号:

");

inputNoField=newJTextField(10);

inputNoField.addActionListener(newActionListener(){

publicvoidclearContent(){

deleteInnerPanel.setText("");

}

//将删除面板的显示内容清除;

});

publicvoidviewARecord(Stringno,StudentPanelp){

//在显示面板p中,显示学号为no的学生信息

try{

connection();

StringViewsql=”select*fromstudentwhereno=?

”;

stmt=con.CreateStatement();

stmt.setString(1,no);

Resultrs=stmt.executeQuery(sql);

While(rs.next()){

Stringno=rs.getSring(no);

}catch(SQLExceptione1){

System.err.println("操作失败");

System.err.println(e1.getSQLState()+e1.getMessage());

}

finally{

close();

}

}

publicvoidupdateRecord(Stringno){//修改学号为no学生的记录;

try{

connection();

StringUpdatesql="updatestudentsetname=?

gender=?

birth=?

address=?

tel=?

whereno=?

";

stmt=con.CreateStatement();

stmt.setString(1,name);

stmt.setString(2,gender);

stmt.setString(3,birth);

stmt.setString(4,address);

stmt.setString(5,tel);

stmt.setString(6,no);

Resultrs=stmt.executeUpdate(sql);

}catch(SQLExceptione1){

}finally{

close();

}

}

publicvoiddeleteRecord(Stringno){//删除学号为no学生的记录;

try{

connection();

Stringdeletesql="deletefromstudentwhereno=?

";

stmt=con.CreateStatement();

stmt.setString(1,no);

Resultrs=stmt.executeUpdate(sql);

}catch(SQLExceptione1){

System.err.println("操作失败");

System.err.println(e1.getSQLState()+e1.getMessage());

}

finally{

close();

}

}

3、练习2利用PreparedStatement接口实现对student数据表的SQL操作

要求:

思考程序中,conn.rollback()语句的作用是什么?

try{

connection();

StringInsSQL;

InsSQL="INSERTINTOstudent(学号,姓名,性别,出生年月,家庭住址,联系电话)"+

"VALUES(?

?

?

?

?

?

)";//定制插入SQL语句字符串

PreparedStatementpstmt=conn.preparedStatement(InsSQL);

pstmt.setString(1,no);

pstmt.setString(2,name);

pstmt.setString(3,gendar);

pstmt.setString(4,birth);

pstmt.setString(5,address);

pstmt.setString(6,tel);

intresult=pstmt.executeUodate();

if(result==0){

conn.rollback();

return;

}

}catch(SQLExceptione1){

System.err.println(e1.getMessage()+e1.getSQLState());

}

finally{

close();//关闭数据库

}

答:

程序中,conn.rollback()语句的作用是显式提交,完成事务操作或设置自动提交为:

false、处理事务、提交(在意外中回滚)。

三、总结

实验三Struts基础及应用编程

一、实验目的

本实验目的是希望通过编程实现用户客户登记表程序,来对Struts进行编程运用,知道Struts的配置文件struts-config.xml的配置,htmltaglib的运用,尤其是对

errors>tag运用和理解,对于Action的控制机制和ActionForm数据处理机制,以及对于ApplicationResource.property熟练掌握,从而达到对能够运用Struts的基本技术来开发动态网页能力。

二、实验内容

用Struts来编写和实现一个两个Form,第一个Form是注册用户名和用户密码的Form,其中包含字段有,用户,密码,密码校对,密码要求长度不能小于六位,密码里面应包含至少数字和字母,字母应包括大小写,最好密码中包含特殊字符。

第二个表是注册用户详细信息表,包括工作单位或者机构名称,邮政地址,邮政编码,单位简介,联系人名,电话,邮件等。

第一表和第二个表的关系是第一个表注册完,点击下一步就是出现第二个表的注册。

表校验成功后要显示成功信息。

1、新建一个struts的Action和ActionForm类:

helloaction.java和

helloform.java

(1)Helloaction.java的主要代码如下:

publicclasshelloactionextendsorg.apache.struts.action.Action{

privatestaticfinalStringSUCCESS="success";

privatestaticfinalStringFAIL="fail";

publicActionForwardexecute(ActionMappingmapping,ActionFormform,

HttpServletRequestrequest,HttpServletResponseresponse)

throwsException{

helloformtheform=(helloform)form;

Stringname=theform.getName();

Stringaddress=theform.getAddress();

//如果name或者address有一个空的话就映射fail,其他情况映射success。

if(name.equalsIgnoreCase("")||address.equals(""))

returnmapping.findForward(FAIL);

returnmapping.findForward(SUCCESS);

}

}

(2)helloform.java的主要代码如下:

publicclasshelloformextendsorg.apache.struts.action.ActionForm{

privateStringname;

publicStringgetAddress(){

returnaddress;

}

publicvoidsetAddress(Stringaddress){

this.address=address;

}

publicStringgetEmail(){

returnemail;

}

publicvoidsetEmail(Stringemail){

this.email=email;

}

publicStringgetPostcode(){

returnpostcode;

}

publicvoidsetPostcode(Stringpostcode){

this.postcode=postcode;

}

publicStringgetTelphone(){

returntelphone;

}

publicvoidsetTelphone(Stringtelphone){

this.telphone=telphone;

}

privateStringaddress;

privateStringpostcode;

privateStringtelphone;

privateStringemail;

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringstring){

name=string;

}

publichelloform(){

super();

}

publicActionErrorsvalidate(ActionMappingmapping,HttpServletRequestrequest){

ActionErrorserrors=newActionErrors();

Stringthename=request.getParameter("name");

Stringtheaddress=request.getParameter("address");

Stringthepostcode=request.getParameter("postcode");

Stringthetelphone=request.getParameter("telphone");

Stringtheemail=request.getParameter("email");

//以下是判断各个字段的值是否为空,如果为空给出提示信息。

if(thename.equalsIgnoreCase("")){

errors.add("name",newActionMessage("error.name.required"));

}

if(thepostcode.equalsIgnoreCase("")){

errors.add("postcode",newActionMessage("请输入邮编!

"));

}

if(theaddress.equalsIgnoreCase("")){

errors.add("address",newActionMessage("请输入地址!

"));

}

if(thetelphone.equalsIgnoreCase("")){

errors.add("telphone",newActionMessage("请输入电话!

"));

}

if(theemail.equalsIgnoreCase("")){

errors.add("email",newActionMessage("请输入邮箱!

"));

}

returnerrors;

}

}

2、新建一个注册界面welcomestruts.jsp,以及success映射的文件yes.jap和fail映射的文件no.jsp

welcomstruts.jsp的主要代码如下:

htmllang="true">

欢迎页面

.content{

color:

#000000;

font-family:

"宋体";

font-size:

20px;

}

base/>

white">

//以下是建form的全部代码

formaction="/action"method="post"styleClass="content">

name:

textproperty="name">

text>

errorsproperty="name"/>

address:

textproperty="address">

text>

errorsproperty="address"/>

postcode:

textproperty="postcode">

text>

errorsproperty="postcode"/>

telphone:

textproperty="telphone">

text>

errorsproperty="telphone"/>

email:

textproperty="email">

text>

errorsproperty

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1