《Java Web应用软件开发》考试方案
《JavaWeb应用软件开发》考试方案
题目要求:
一、基于JSP技术,完成网络留言板。主要功能包括:前台(添加留言、查看留言、客户端验证等),后台(管理员登录、权限控制、管理员管理留言等)。
二、完成项目开发的总结报告。
三、项目答辩:就最终完成的项目,汇报演示,并回答教师、同学的提问。汇报内容:1.系统已实现的内容
2.系统用到的技术,并具体说出1-2个自认为应用得比较巧妙或者技术含量较强的技术,谈谈采用该技术的原因及如何应用该技术的。
3.系统中的原创内容。
4.在整个过程中参考了哪些资料,最受益的参考资料的出处。5.在制作过程中遇到过的困难及解决办法。
6.在整个过程中,从同一学习小组的其他成员身上学到了哪些优秀的品质与精神。7.项目的不足及今后的改进想法。
评分标准:
一、网络留言板项目(40%)
1.系统运行无明显异常(40分);2.数据库完备(10分);3.改进完善已学功能(10分);
4.在基本要求基础上增加了新的功能,并且运行无明显异常(10分);
5.编码规范:代码格式规范(5分)、变量等命名规范(5分)、有必要的注释(10分);6.网页界面结构清晰,色彩搭配合理,干净整洁、美观大方,文字和图片内容统一(10分)。
二、总结报告(30%)
1.能够正确总结网络留言板项目所涉及的技术(10分),并能选择出3~5项重点使用的技术,具体介绍其在项目中的应用过程(50分)。
2.能够根据实际学习情况写出心得体会(20分)。3.条理清晰,语言流畅。(20分)
三、项目答辩(30%)
教师及各学习小组依据下表,给出答辩学生的答辩成绩。教师与学习小组给出的成绩各占50%。课程名称项目名称评价构成布局技术答辩程序结构创新仪态仪表现场表现姓名评审标准学号班级分值得分20201*1010101010100描述模块的功能、描述函数的调用关系(15分),描述相关函数的功能及技术点设计的原理(5分)描述整个软件的层次结构(15分),描述其它业务模块的功能及技术难点(5分)提出合理化建议(5分),有创新之处(5分)表达清晰使用普通话注意礼仪细节礼仪规范表述流畅自然自然,落落大方,自信总计
扩展阅读:《Java Web应用软件开发》讲义
《JavaWeb应用软件开发》讲义
任务一:JSP运行、开发环境的构建(201*-2-24)
1、Web应用程序体系结构
三层架构
数据显示层相互调用逻辑计算层相互调用数据处理层客户端
应用服务器数据库服务器本地用户使用的计算机,通过客户端软件请求应用服务器提供服务。
接受客户请求进行数据计算,并把计算结果返回给客户。JSP页面使用的服务器,该服务器通常由JSP引擎、Servlet引擎和Web服务器构成。
提供数据处理和事务处理。例如,SQLServer201*、MYSQL、Oracle。
二层架构
数据展示层相互调用逻辑计算与数据处理放在同一层客户端应用服务器与数据库服务器
2、应用服务器
Web服务器
①请求客户端浏览器③响应Web服务器②处理JSP引擎与Servlet引擎
3、Tomcat目录结构
4、MyEclipse配置
配置Tomcat+JDK字体设置
5、MyEclipse中Web项目的建立(程序参考教材13页)
6、JSP运行原理
任务二:添加留言页面设计(201*-3-2)
1、相关JSP语法
page指令标签
Java代码块:在“”之间插入Java代码块表达式:在“”之间插入表达式
out内置对象:javax.servlet.jsp.JspWriter的实例
2、相关JavaScript语法
如何将JavaScript代码嵌入页面
在页面文档中,使用标记嵌入脚本代码
/*JavaScript代码*/
//或者:type="text/javascript"
3、知识拓展页面刷新方法
JavaScript方式
setTimeout("self.location.reload();",1000);HTML方式
刷新测试
JSP方式
4、Dreamweaver辅助页面设计
版权符号:©空格:任务三:添加留言客户端验证(201*-3-9、201*-3-16)
1、JavaScript语法
如何将JavaScript代码嵌入页面
在页面文档中,使用标记嵌入脚本代码
/*JavaScript代码*/
JavaScript脚本代码的位置
标签对可以出现在网页文档的任何位置,而且可以有多对页面主体(元素):01.html页面头部(元素):02.html
放置在单独的文件中,该文件以“.js”为扩展名03.htmlm3.js
将脚本程序代码作为属性值
javascript
//或者:type="text/javascript"
2、FckEditor的使用
通过下载等方式得到FCKeditor,例如:FCKeditor_2.6.3.zip。将FCKeditor_2.6.3.zip解压。
可瘦身解压后的FCKeditor文件夹里的内容:
删除_samples文件夹;
删除editor文件夹下的_source、plugins文件夹;
editor文件夹下的lang文件夹里只需保留中英文的js文件:zh.js、zh-cn.js、en.js,其它可删除;
editor文件夹下的skin文件夹里只需保留default即可。
将瘦身后的FCKeditor文件夹整个引入项目的WebRoot下。在相应页面里添加如下代码:
如果用FckEditor添加一个新的文本输入域,那么在Form表单标记里,用以下代码取代标签对:
vareditor=newFCKeditor("content");
editor.BasePath="web应用根地址/fckeditor/";//例如:mybook项目的网站根地址是mybookeditor.Height=300;
editor.ToolbarSet="Default";editor.Create();
以后要想取得FckEditor文本域里的内容,可通过“content”这个名字。
如果用于修改已有的HTML方式的文本域,那么页面代码的Form表单标记里,标签对的位置的代码类似下面所示:window.onload=function(){
varoFCKeditor=newFCKeditor("content");
}oFCKeditor.BasePath="/fckeditor/";//context=request.getContextPath()oFCKeditor.Height=300;
oFCKeditor.ToolbarSet="Default";
oFCKeditor.ReplaceTextarea();//替换后面的TextArea
3、JSValidation的使用
在项目的WebRoot下事先创建一个文件夹(folder),命名为:jsvalidation(或其它合法的名字)。解压jsvalidation-1_0b4.zip。先将JSValidation文件夹中的validation-config.dtd、validation-config.xml两个文件引入项目刚刚建立的文件夹“jsvalidation”下。对于JSValidation文件夹中的validation-framework.js需要更改所使用的字符集,再引入项目中建立的文件夹“jsvalidation”下。方法:用文本编辑器(如:记事本)打开validation-framework.js,然后另存,选择另存对话框里的字符集,设置为utf-8或中文字符集(如:GBK、GB2312、GB18030)。在项目的JSValidation文件夹里引入修改字符集后的validation-framework.js(如果事先已引入,则先删除再引入)。打开validation-framework.js,更改第一个非注释行:varValidationRoot="";类似:
varValidationRoot="/mybook/jsvalidation/";然后保存。
项目中页面的表单,如果要使用JSValidation验证框架,只要表单里元素内容不相同或者要求不同,表单的name属性就应该不一样。打开validation-config.xml,其中已有配置的例子,再参考JSValidation验证框架的用户手册第5、6部分,即可配置自己项目的前台验证功能。例如,对添加留言的前台验证的配置如下:
在需要进行验证的页面中,加入类似下面的内容:
在要验证的Form表单标记处,增加onsubmit属性,设置为:onsubmit="returndoValidate(this)"
4、使用FireFox错误控制台辅助调试JavaScript代码错误
任务四:添加留言功能实现(201*-3-23、201*-3-30、201*-4-6、201*-4-13、
201*-4-20)
1、HTML元素
参考教材Page17-22的内容
2、MyEclipse下JavaWeb项目的组织框架与Tomcat下已部署(/发布)项目的目录结构对照
3、include指令标签
参考教材Page42-43的内容
4、初识EL表达式
参考教材Page139
5、添加留言服务器端验证标签的action属性
设置处理表单数据程序的URL地址
服务器端验证的原因
request内置对象参考JEEAPI
getContextPath()方法:获取Web应用在服务器上的根目录getParameter()方法:获取请求参数
setCharacterEncoding()方法:设置从request中取出的值的编码方式,默认编码方式为iso-8859-1getRequestDispatcher()方法:请求转发,前后页面共享一个request。利用该方法返回的RequestDispatcher对象的forward()方法,可继续跳转到后一个页面。
StringTool工具类的编写
packagesjzpc.jsp.tools;importjava.util.regex.Matcher;importjava.util.regex.Pattern;
publicclassStringTool{
publicstaticfinalStringEMAIL_REGEXP="\\\\w+([-+.]\\\\w+)*@\\\\w+([-.]\\\\w+)*\\\\.\\\\w+([-.]\\\\w+)*";public
static
final
String
PHONE_REGEXP
="((\\\\d{11})|^((\\\\d{7,8})|(\\\\d{4}|\\\\d{3})-(\\\\d{7,8})|(\\\\d{4}|\\\\d{3})-(\\\\d{7,8})-(\\\\d{4}|\\\\d{3}|\\\\d{2}|\\\\d{1})|(\\\\d{7,8})-(\\\\d{4}|\\\\d{3}|\\\\d{2}|\\\\d{1}))$)";
//验证为空
publicstaticbooleanisNull(Stringstr){}
//过滤HTML符号
publicstaticStringfilterHtml(StringstrTemp){
if(strTemp==null){}
if(strTemp.length()==0){}
Stringtemp=null;
temp=strTemp.replaceAll("&","&");temp=temp.replaceAll("",">");temp=temp.replaceAll("","");temp=temp.replaceAll(""","'");temp=temp.replaceAll("\\"",""");
returnstrTemp;returnnull;
if(str==null||str.length()==0){}
returnfalse;
returntrue;}
}temp=temp.replaceAll("\\n","");returntemp;
//验证E-mail
publicstaticbooleanisEmail(Stringemail){}
//验证电话
publicstaticbooleanisPhone(Stringphone){}
Patternp=Pattern.compile(PHONE_REGEXP);Matcherm=p.matcher(phone);if(m.matches()){}
returnfalse;
returntrue;
Patternp=Pattern.compile(EMAIL_REGEXP);Matcherm=p.matcher(email);if(m.matches()){}
returnfalse;
returntrue;
MySQL数据库使用
字符集设置
可以通过my.ini文件进行配置
第57行:default-character-set=gb2312#[client]的字符集设置第81行:default-character-set=utf8#[mysqld]的字符集设置
进入MySQL字符管理界面
(说明:可以利用其它图形界面管理工具对数据库进行管理。)
windows开始菜单→所有程序→MySQL→MySQLServer5.0→MySQLCommandLineClient在之后的命令行窗口输入密码:123456(注:微三机房MySQL的密码)
查看数据库服务器上的所有数据库:showdatabases;创建数据库
createdatabaseifnotexistsmybookdefaultcharacterset=utf8;使用某个数据库(如mybook):usemybook;创建数据表
createtableifnotexistsmybook(
idintnotnullauto_incrementprimarykey,nicknamevarchar(20)notnull,emailvarchar(20),telvarchar(20),
titlevarchar(40)notnull,contenttext,timedatetimenotnull
)ENGINE=InnoDBdefaultcharacterset=utf8;查看某个数据库中的所有表:showtables;
查看表结构:describe表名;删表/库:drop库名/表名;
使用脚本文件:\\.C:/mydata.sql(注意:该命令后不能跟英文分号)Windows下导出/导入MySql数据库
开始->运行->cmd
用cd切换到MySql安装目录下的bin目录
如果导出,在命令行中输入:mysqldump-u用户名p密码数据库名>文件名.sql
导入为:mysql-u用户名-p密码数据库名<文件名.sql
JDBC编程
参考教材第7章7.1~7.7的内容注意:
本项目使用的是MySQL数据库,因此需将mysql-connector-java-5.1.6-bin.jar复制粘贴到
tomcat的lib文件夹里;或者复制粘贴到项目的lib文件夹里。
异常处理规范:尽可能在编程时处理各种可能出现的运行时异常!
JDBC编程规范:针对数据库操作的资源,在用完后要及时释放,即程序中的相关变量赋值成null。
解决MySQL6.0(微三使用的版本是6.0)中文乱码问题按前述方式修改my.ini文件
写代码时,连接MySQL数据库时需指定字符集,即MySQL数据库连接字符串形如:"jdbc:mysql://localhost:3306/mybookdb?useUnicode=true&characterEncoding=utf-8"服务器端处理添加留言的流程:通过request内置对象获取用户输入的内容(昵称、电话、Email、主题、内容)是昵称、主题为空?否是Email、电话为空?否否Email、电话合法?是将用户填写的内容存入数据库:期间若发生异常,则将相关信息存入message变量;否则将message变量的值重置为:"留言被成功保存"将message变量装入request内置对象,页面跳转至结果页面
数据库连接池
使用目的:程序与数据库建立连接的过程比较耗时,为提高工作效率,可以在服务器启动时,事先建立一些与数据库的连接放在数据库连接池中,当程序运行时,随时从池子中取得连接,对数据库进行操作,操作完成,再将连接放回池子里。可参考教材第7章7.8.1~7.8.3的内容本项目中的做法:
(1)本项目使用的是MySQL数据库,因此需将mysql-connector-java-5.1.6-bin.jar复制粘贴到tomcat的lib文件夹内;如果lib文件夹里已有mysql-connector-java-5.1.6-bin.jar,则不需要做这步操作。
(2)在tomcat的conf\\Catalina\\localhost文件夹(如果conf下不存在Catalina\\localhost,可以手动建立)内建立一个.xml的文件(如mybook.xml),该文件的内容如下:
(3)程序中,使用如下类似语句获得对数据库的连接:Contextctxt=null;DataSourceds=null;Connectionconn=null;
ctxt=(Context)newInitialContext().lookup("java:/comp/env");ds=(DataSource)ctxt.lookup("jdbc/mybookDS");conn=ds.getConnection();
DBOperate工具类的编写
//该类利用了Commons-DBUtils组件提供的功能packagesjzpc.jsp.tools;importjava.sql.SQLException;importjavax.naming.Context;importjavax.naming.InitialContext;importjavax.naming.NamingException;importjavax.sql.DataSource;
importorg.apache.commons.dbutils.QueryRunner;importorg.apache.commons.dbutils.ResultSetHandler;
publicclassDBOperate{
//对所有数据表都通用的操作privateDataSourceds;publicDBOperate(){}
privatevoidinit(){}
try{}
Contextcontext=newInitialContext();
ds=(DataSource)context.lookup("java:/comp/env/jdbc/mybookDS");e.printStackTrace();
init();
}catch(NamingExceptione){//更新:增删改
intresult=0;
QueryRunnerqr=newQueryRunner(ds);try{}
returnresult==1;
result=qr.update(sql,params);e.printStackTrace();}catch(SQLExceptione){
publicbooleanupdate(Stringsql,String[]params){
}//查询
Objectresult=null;
QueryRunnerqr=newQueryRunner(ds);try{}
returnresult;
result=qr.query(sql,params,rsh);//TODOAuto-generatedcatchblocke.printStackTrace();}catch(SQLExceptione){
publicObjectquery(Stringsql,String[]params,ResultSetHandlerrsh){
}}Servlet的使用
可参考教材第6章6.1~6.6的内容
表示层的两种架构模式参考教材第11章11.1的内容
Model1架构模式浏览request器responseJSPJavaBeans数据库Web服务器
Model2架构模式
浏览器requestServlet数据库responseJSPJavaBeansWeb服务器
友情提示:本文中关于《《Java Web应用软件开发》考试方案》给出的范例仅供您参考拓展思维使用,《Java Web应用软件开发》考试方案:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。