Java项目实训大纲.docx

上传人:b****6 文档编号:8015677 上传时间:2023-01-28 格式:DOCX 页数:35 大小:197.58KB
下载 相关 举报
Java项目实训大纲.docx_第1页
第1页 / 共35页
Java项目实训大纲.docx_第2页
第2页 / 共35页
Java项目实训大纲.docx_第3页
第3页 / 共35页
Java项目实训大纲.docx_第4页
第4页 / 共35页
Java项目实训大纲.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

Java项目实训大纲.docx

《Java项目实训大纲.docx》由会员分享,可在线阅读,更多相关《Java项目实训大纲.docx(35页珍藏版)》请在冰豆网上搜索。

Java项目实训大纲.docx

Java项目实训大纲

项目开发实训大纲

一、性质和目的

本实训是中创班Java方向的实践性环节。

通过本次实训,可以系统掌握Java语言程序设计、数据库原理级应用、Struts2企业级应用、Spring和Hibernate开源框架的使用,并锻炼学生的实践动手能力。

整个实训要求及环境,全面模拟企业实际开发环境以及项目管理规范和流程,使学生在实训中掌握企业开发的实际运作流程,提高学生进入企业的适应能力。

二、实训基本要求

(1)掌握Java编程基本知识的实际运用;

(2)掌握MySQL数据库的设计与操作,备份与恢复;

(3)掌握Struts2的数据类型转换、数据校验、国际化、OGNL表达式、拦截器、文件上传与下载以及Struts2集成Spring等;

(4)掌握SpringIOC的配置与运用、HibernateORM的配置与运用;

将上述知识运用到具体项目中,以学生熟悉的“学生选课系统”为实训项目,由学生自己理解需求,业务逻辑,完成系统的需求分析、概要设计、详细设计、编码、测试等工作,并提交需求分析报告、系统可运行代码以及数据库设计备份文件(.sql文件)并由此评定成绩。

三、实训内容与学时分配(90学时)

1、Java程序设计、数据库原理与应用基本知识由学生自己复习;

2、Struts2基本知识

2.1Struts2入门(HelloSomeone)

(1)新建一个WebProject项目Struts2Demo,J2EE规范采用JavaEE5.0其目录结构如下:

(2)修改web.xml文件

将原来的web.xml文件内容清空,将下载到的Struts-2.1.6-all.zip解压,在app目录下找到struts2-blank-2.1.6.war,解压该文件,将其WEB-INF目录下的web.xml文件内容复制到Strust2Demo的web.xml中,内容如下:

xmlversion="1.0"encoding="UTF-8"?

>

xsi="http:

//www.w3.org/2001/XMLSchema-instance"xsi:

schemaLocation="

StrutsBlank

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts2

/*

index.jsp

(3)导入struts2支持所需要的包

将struts2-blank-2.1.6.war中的WEB-INF/lib目录下的所有Jar文件,复制到Struts2Demo相应文件夹下。

如上图所示,其计9个文件。

(4)新建struts.xml文件

在Struts2Demo的src文件夹下,新建一个struts.xml文件,并将struts2-blank-2.1.6.war中的WEB-INF/classes目录下的struts.xml文件的内容全部复制到新建的struts.xml文件中,并修改,修改后内容如下:

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEstrutsPUBLIC

"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"

"http:

//struts.apache.org/dtds/struts-2.0.dtd">

(5)将Struts2Demo布置到Tomcat服务器上,启动服务器,应能正常启动。

(6)在Struts2Demo的index.jsp中的标签中加入以下代码:

注意:

的name属性的值必须与HelloAction.java中属性名称一致。

(7)编写HelloAction.java文件

在项目的src目录下,新建一个com.nanshan.action包,在该包在新建一个HelloAction类文件,继承ActionSupport类,并写入以下代码:

packagecom.nanshan.actioni;

importcom.opensymphony.xwork2.ActionSupport;

publicclassHelloActionextendsActionSupport{

privateStringuserName;

@Override

publicStringexecute()throwsException{

userName="Hello"+userName;

returnSUCCESS;

}

//getter,setter……

}

(8)编写输出页面

在项目的Web目录下新建一个welcome.jsp页面,写入以下内容:

propertyvalue="userName"/>

注意:

此页面的

propertyvalue="userName"/>value值与HelloAction.java中的属性名称一致。

(9)修改struts.xml文件

修改后的内容如下:

/welcome.jsp

注意:

action的name属性名称必须与请求页面index.jsp中的action属性名一致。

(10)运行程序

将项目布置到Tomcat并启动服务器,在浏览器地址内输入:

http:

//localhost:

8080/Struts2Demo/index.jsp,并显示如下页面。

输入姓名,单击提交按钮,会得到如下结果。

注意:

该项目不能支持中文。

2.2数据类型转换

(1)写一个JSP页面

textfieldname="point"key="Point">

textfield>

textfieldname="userName"key="UserName">

textfield>

textfieldname="birthDay"key="BirthDay">

textfield>

textfieldname="age"key="Age">

textfield>

submitkey="Submit">

submit>

point为Point类类型,age为整数类型,userName为字符串类型,birthDay为Java日期类型。

(2)在src目录下新建一个包:

com.nanshan.pojo,在该包在新建一个类Point.java,作为自定义类型,内容如下:

packagecom.nanshan.pojo;

publicclassPoint{

privateintx,y;

//getter,setter……

}

(3)编写Action代码

packagecom.nanshan.action;

importjava.util.Date;

importcom.nanshan.pojo.Point;

importcom.opensymphony.xwork2.ActionSupport;

publicclassConvertActionextendsActionSupport{

privatePointpoint;

privateStringuserName;

privateintage;

privateDatebirthDay;

@Override

publicStringexecute()throwsException{

returnSUCCESS;

}

//getters,setters……

}

(4)写一个转换类

在src目录下新建一个包:

com.nanshan.logic,在其中新建一个类Converter.java,此类要继承StrutsTypeConverter类,重写它的convertFromString()和convertToString()抽象方法,内容如下:

packagecom.nanshan.logic;

importjava.util.Map;

importorg.apache.struts2.util.StrutsTypeConverter;

importcom.nanshan.pojo.Point;

publicclassConverterextendsStrutsTypeConverter{

@Override

publicObjectconvertFromString(Mapmap,String[]src,ClasstoType){

Pointpoint=newPoint();

String[]srcStr=src[0].split(",");

point.setX(Integer.valueOf(srcStr[0]));

point.setY(Integer.valueOf(srcStr[1]));

returnpoint;

}

@Override

publicStringconvertToString(Mapmap,Objectsrc){

Pointpoint=(Point)src;

StringBuildersb=newStringBuilder();

sb.append("[("+point.getX()+","+point.getY()+")]");

returnsb.toString();

}

}

(5)指定转换文件

①局部类型转换

在ConvertAction所在包下,新建一个ConverAction-conversion.properties(内容:

类名-conversion.properties)文件,内容如下:

point=com.nanshan.logic.Converter

注意:

properties文件的命名规则:

Action类名-conversion.properties,位置与Action在同一个包下。

②全局类型转换

在src目录下新建一个xwork-conversion.properties文件,内容如下:

com.nanshan.pojo.Point=com.nanshan.logic.Converter

注意:

此properties文件命名固定,不能更改,位置也不能更改。

注意:

局部类型和全局类型转换属性文件只有一个即可,若两个都存在,则先调用局部类型转换文件,再调用全局类型转换文件。

(6)配置struts.xml文件

增加一个配置项,如下:

/convertResult.jsp

(7)在项目的Web目录下,新建一个convertResult.jsp,内容如下:

propertyvalue="point"/>

propertyvalue="userName"/>

propertyvalue="age"/>

propertyvalue="birthDay"/>

(8)运行程序

重新布置项目,并重启服务器。

输入页面如下:

结果输出如下:

注意:

以下几处属性应该匹配,即必须一致,否则程序不能正确(成功)运行。

①JSP页面中的属性必须与所请求的Action中的属性名一致;

中action属性值必须与struts.xml中name属性一致;

(9)批量数据类型转换(转换成List)

JSP页面代码如下:

formaction="convert.action">

textfieldname="point"key="Point">

textfield>

textfieldname="point"key="Point1">

textfield>

textfieldname="userName"key="UserName">

textfield>

textfieldname="birthDay"key="BirthDay">

textfield>

textfieldname="age"key="Age">

textfield>

submitvalue="Submit">

submit>

form>

Converter.java转换类改写如下:

publicclassConverterextendsStrutsTypeConverter{

@Override

publicObjectconvertFromString(Mapmap,String[]src,ClasstoType)

{

Listpoint=newArrayList();

Pointp=null;

for(Stringstr:

src){

p=newPoint();

String[]tStr=str.split(",");

p.setX(Integer.valueOf(tStr[0]));

p.setY(Integer.valueOf(tStr[1]));

point.add(p);

}

returnpoint;

}

@Override

publicStringconvertToString(Mapmap,Objectsrc){

Listpoint=(List)src;

StringBuildersb=newStringBuilder();

sb.append("[");

for(Pointp:

point){

sb.append("("+p.getX()+","+p.getY()+")");

}

sb.append("]");

returnsb.toString();

}

}

ConvertAction.java只把point属性由Point类型更改为List类型,并产生相应的gettert和setter方法即可。

转换属性配置文件,在此情况下只能用局部类型转换,即ConvertAction-conversion.properties文件,不作任何修改,即可。

运行程序:

结果如下:

2.3数据校验

2.3.1编写validate()方法

在ConvertAction.java中重载父类的validate()方法,内容如下:

publicvoidvalidate(){

if(null==userName||"".equals(userName)){

this.addFieldError("userName","用户名必须填写");

}

}

注意:

addFieldError()方法中的第1个参数为与请求该Action的JSp中对应的标签名字,即标签的name属性值。

如userName,有

textfieldname="userName"key="UserName">

textfield>与之对应。

重新布置,并重启服务器,运行结果如下:

结果为:

注意:

由于要校验的ConvertAction中含有自定义类型转换,所以即使在Point,Point1两处文本框输入是正确的前提下,仍提示有错误出现,这是因为Struts2在进行类型转换时,遇到Listpoint;类型,它不知道如何进行转换(此时还没有调用到我们写的Converter.java转换类),因此把它看作一个错误。

这说明Struts2是把所有数据校验都完成(即把相关Action中的属性都验证一遍)以后,才会调用我们自定义的转换函数。

若在这种情况下(即要验证的Action中含有自定义转换类型,比如我们的point属性),必须在自定义类型转换函数中加入判断语句:

publicObjectconvertFromString(Mapmap,String[]src,ClasstoType)

{

if(src==null){

return"";

}

//具体转换部分

returnpoint;

}

@Override

publicStringconvertToString(Mapmap,Objectsrc){

if(null==src){

returnnull;

}

//具体转换部分

returnsb.toString();

}

否则提示以下错误,这是由于struts2.1.6的bug所致!

typeExceptionreport

message

descriptionTheserverencounteredaninternalerror()thatpreventeditfromfulfillingthisrequest.

exception

org.apache.jasper.JasperException:

Class:

ponents.template.TemplateEngineManager

File:

TemplateEngineManager.java

Method:

getTemplateEngine

Line:

102-org/apache/struts2/components/template/TemplateEngineManager.java:

102:

-1

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:

541)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:

435)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:

320)

2.3.2编写xml验证文件

验证文件的命名规则:

类名-validation.xml,位置必须与要验证的Action在同一个包下。

ConvertAction-validation.xml验证文件内容如下:

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEvalidatorsPUBLIC"-//OpenSymphonyGroup//XWorkValidator1.0.2//EN""

true

Usernamemustnotbeempty

6

20

Theusernamemustbetween${minLength}and${maxLength}

TheBirthdaymustnotbeempty!

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

当前位置:首页 > 解决方案 > 学习计划

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

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