java web 开发学习报告.docx
《java web 开发学习报告.docx》由会员分享,可在线阅读,更多相关《java web 开发学习报告.docx(12页珍藏版)》请在冰点文库上搜索。
javaweb开发学习报告
JavaWeb开发技术
报告
班级:
___智慧矿山实验班__
学号:
_____0906040227_____
姓名:
___于长麟______
电子与信息工程学院计算机科学系
一、项目内容
我们的实习是从编程基础的培训开始的。
在这次实习之前我们所学的编程课程只是C++,其他软件全都是Matlab、Mathamatica、Maple、SAS之类的数学专业分析软件,而这次要用到的是Java网络编程。
虽说程序的语言差别之中还有很多共性,但是基本语言、函数以及调用方法等等还是有很大差别的。
为了快速实现对JSP网络编程方法的熟悉,这次实习安排了专门的老师对我们进行基础知识的培训。
于是实习的第一部分就是为期5天的编程基础知识培训。
这一阶段从最开始的程序设计的语言结构开始,以Java语言为主线介绍各种基本编程项目,包括各种循环结构,各种函数,以及类和对象的引入和拓展。
另外对之后主要用到的jdk、oracle以及Myclipse等软件的安装和环境的配置进行了逐一介绍。
第一阶段的学习让我在回忆C++基础编程的同时进一步认识了Java语句格式,在类与对象的介绍中,我进一步加深了对类这个封装各种数据成员以及成员函数的基本结构的认识。
类的作用无论是对于基本编程还是对大型软件工程都是具有不可估量的作用的。
类的思想无论是对于编程还是对于其他方面的工作也是极其重要的。
在基本程序的安装极其环境调试的介绍方面,我们的老师讲了一些他工作实践过程中的一些事情。
他讲Oracle数据库的时候提到曾经他帮一家公司安装程序的故事。
他说Oracle公司做的这个数据软件是一个大型数据库管理软件,其安装和维护都不是简单地点“下一步”,再点“下一步”就可以安装好的。
而且整个软件的安装如果是在一台配置不是很好的机子上的话,可能安装一天都时间,而且还可能安装失败。
他说Oracle公司派人来安装程序的话,仅仅安装好程序就开价6000元人民币。
老师讲的这个故事,告诉我们拥有一项技术技能就可以很轻松地为自己创造财富,另一方也表明国外的软件公司,经过多年的发展建立了一套完善的软件开发模式,通过利用对开发模式及其模式下的软件的技术垄断在市场上进行垄断。
这样的公司软件遍及全球,其产品价格以及服务费用都无不是对发展中国家以及发展中企业的压榨与盘剥。
我们国家要想在软件放面实现自主独立需要这一代人加倍的努力。
二、功能描述
进入了第二阶段——即编程研发的第一阶段,我们的主要内容是学习基本的指令、动作元素、内建以及面向脚本的编程。
这一阶段的编程实战是为网站设计进行基本原件的知识准备。
老师是以介绍软件工程的开发过程开始的。
计算机软件已经成为一种驱动力。
它是进行商业决策的引擎;它是现代科学研究和工程问题解决的基础;它也是区分现代产品和服务的关键因素。
它在各种类型的系统中应用,如交通、医药、通讯、军事、产业化过程、娱乐、办公……难以穷举。
软件在现代社会中的确是必不可少的。
而且在21世纪,软件将成为从基础教育到基因工程的所有各领域新进展的驱动器。
所有这一切已经改变了软件的常见概念。
计算机软件是无所不在的,人们把软件看作是生活中现实的技术。
在很多情况下,人们把他们的工作、他们的舒适、他们的安全、他们的娱乐、他们的决策、甚至他们的整个生活都
依赖于计算机软件。
软件千万可不能出错。
一个不出错的工程就要求有严格的工程设计方法和严谨的维护修正方案。
这就是软件工程要做的事情。
软件工程开发的方法有简单的反馈模型,还有较复杂的瀑布模型以及循环递进模型。
这一次我们的实习项目就是使用瀑布模型进行设计的。
因为我们的实习过程中主要的项目框架已经给出,所有反馈修正全部都是项目小组内部的修正维护。
没有涉及到与用户沟通开发。
在了解完基本的设计思想之后,就进入到基本程序元件的设计方法的介绍了。
在网络编程的时候,动态的JSP网页和静态的HTML网页是有不同的。
这些不同就体现在一些细节上。
例如,动态网页要实现输入交互就要进行信息在网页(page)之间的传递。
这个传递指令有request,response,out以及session。
这几个动作指令都有这不同的功能去实现跳转和信息传递。
另外一个就是注释的问题。
有些时候程序员对程序的注释并不期望被浏览网页的用户看到,而是作为程序运营商内部交流之用,或者说这些注释甚至是程序公司的机密,那么这种注释就要求在客户端的源代码中无法显示出来。
这种区别不仅在注释中存在,还在声明表达式中也出现。
这一点又体现了网络完全意识以及保密原则。
三、系统框架
在基本元素掌握之后我们就进入了最后的工程设计阶段——第三阶段。
这一阶段进行各种功能模块的设计以及整个网站的整合和链接。
此次网站设计的整体体系大致如下表:
FAQ网站系统总览
后台(对网站进行管理)
前台(为用户提供服务)
管理员模块
用户信息模块
用户管理模块
已提问问题模块
问题管理模块
已回答问题模块
问题类型管理模块
问题排序、添加模块
班级管理模块
问题类型模块
专业管理模块
登录模块
登录模块
Oracle数据库关于管理员、用户、问题、问题类型、班级、专业的数据支持
在这一部分的实习过程中,我们小组就像一个专业的开发团队一样进行实际的网站开发。
如上表说示,这次的网站设计是一个完备的系统工程。
这个系统包括了网站本身对自己的管理以及面向用户提供的各项服务功能。
无论是管理功能的实现还是服务的功能的实现都要求他们相互之间进行密切的配合协调。
比如:
如果在后台的用户管理模块中出现了错误,那么在后台这个错误可能导致班级或者专业模块出现连带的错误,因为每一个用户都有自己的一个唯一的班级和专业与用户ID对应。
而这个错误可能不止出现在后台,前台的用户信息模块可能也会收到影响。
这种整体的联系性和系统性导致一旦出错,那么错误可能存在的地方将是相互联系的各个部分,而一个错误可能导致各个部分都出现关联性的错误。
在某种角度上,这样的问题的发现与解决是对系统性思维的一种磨练。
在这次的实际编程学习及网站设计之前,对于网页的源代码以前看着就像看乱码不知所云,现在不只知道各种符号、标签的含义,还可以做一些简单的编程。
另外在调试的过程中协调vo类、dao、daoimpl以及sevlet对htm网页进行转化,使之转化成为正确的JSP格式网页。
在编程过程中遇到了诸如request、response等动作元素以及session的处理。
这些都培养了我系统性看待问题、解决问题的习惯。
实习时间总体来看是比较紧张的,要在15天之内从对Java、JSP一无所知到设计出一个网站需要克服很多困难。
而且前两周主要是基础培训,进度缓慢,最后的工程设计相当辛苦。
但是我们小组的成员都兢兢业业,坚持要完成每日的任务,几乎每天都要加班到很晚,甚至熬夜。
最后答辩的时候,我们交上了一份完整的成果物,并且完美地解答了老师在答辩过程中的提问。
四、开发及运行环境
4.1MyEclipse的概述:
MyEclipse是一个专门为Eclipse设计的插件集合。
实际价值来自其大量的可视化开发工具和实用组件。
如网页编辑器、XML编辑器,提供创建Web项目的向导并产生Web项目的主要架构,此外还包含连接数据库、执行SQL语句的工具。
可以说,安装了MyEclipse插件包的Eclipse是一个多功能的集成开发平台。
4.2Tomcat的概述:
JavaWeb应用是由一些Servlet、HTML页面、Java类、JSP页面和一些其他的资源构成的,它可以在各种实现了Servlet规范的各种厂商的Web应用容器中运行。
Tomcat就是这样一个实现了Servlet规范的Servlet/JSP容器
4.3启动Tomcat:
如果是用EXE安装包安装的可以从Windows的开始按钮【所有程序】里面的启或关闭Tomcat服务器
如果是zip安装包安装的可以从CATALINA_HOME\bin下面的startup.bat启动Tomcat服务
Tomcat启动成功,可以在地址栏中输入http:
//127.0.0.1:
8080或者http:
//localhost:
8080访问本机的Tomcat首页
4.4MyEclipse与Tomcat的搭配:
为了使开发过程更加方便快捷,我们需要将运行环境与开发环境进行必要的整合。
以上我们已经了解了Tomcat独立启动的模式,下面我们将在MyEclipse内部进行设置,使Tomcat可以直接在MyEclipse内部进行启动,并且可以支持今后Web应用的断点调试功能。
1、启动MyEclipse,选择【window】菜单下面的【preferences】:
2、双击【MyEclipse】菜单下【ApplicationServers】里面的【Tomcat】下面的【Tomcat5.x】,在“Tomcathomedirectory”后面填写Tomcat安装的目录。
最后将“Tomcatserver”选择为Enable。
3、单击服务器按钮右侧的下拉按钮。
在弹出的下拉框中,选择【Tomcat5】→【Start】,启动Tomcat服务器。
4、对于服务器启动状况,我们可以在【Console】窗口中查看。
4.5Tomcat目录结构详细说明:
目录名
简介
/bin
存放启动和关闭Tomcat的脚本文件,其中startup.bat用来启动Tomcat,shutdown.bat用来关闭Tomcat。
/common/lib
存放Tomcat服务器和所有web应用都能访问的JAR文件
/conf
存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml
/logs
存放Tomcat的日志文件
/server
包含三个子目录:
classes、lib和webapps
/shared/lib
存放所有web应用能访问的,但Tomcat不能访问的JAR文件
/temp
临时活页夹,Tomcat运行时候存放临时文件用的
/webapps
web应用的发布目录,把java开发的web站点放入这个目录下就可以通过Tomcat服务器访问了
/work
存放由JSP生成的Servlet
/server/lib
存放Tomcat服务器本身所需要的JAR文件
/server/webapps
存放Tomcat自带的两个admin和manager应用
五、主要代码
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pagelanguage="java"import="java.sql.*"%>
functionnewwin(url){
var
newwin=window.open(url,"newwin","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=600,height=450");
newwin.focus();
returnfalse;
}
functionsubmit10()
{
self.location.replace("fenye1.jsp")
}
<%//变量声明
java.sql.ConnectionsqlCon;//数据库连接对象
java.sql.StatementsqlStmt;//SQL语句对象
java.sql.ResultSetsqlRst;//结果集对象
java.lang.StringstrCon;//数据库连接字符串
java.lang.StringstrSQL;//SQL语句
intintPageSize;//一页显示的记录数
intintRowCount;//记录总数
intintPageCount;//总页数
intintPage;//待显示页码
java.lang.StringstrPage;
inti;
//设置一页显示的记录数
intPageSize=4;
//取得待显示页码
strPage=request.getParameter("page");
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage=1;
}
else{//将字符串转换成整型
intPage=java.lang.Integer.parseInt(strPage);
if(intPage<1)intPage=1;
}
//装载JDBC驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//设置数据库连接字符串
strCon="jdbc:
odbc:
heyang";
//连接数据库
sqlCon=java.sql.DriverManager.getConnection(strCon,"sa","");
//创建一个可以滚动的只读的SQL语句对象
sqlStmt=
sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.Result
Set.CONCUR_READ_ONLY);//准备SQL语句
strSQL="selectuser_id,user_namefromuserinfoorderbyuser_iddesc";
//执行SQL语句并获取结果集
sqlRst=sqlStmt.executeQuery(strSQL);
//获取记录总数
sqlRst.last();//?
?
光标在最后一行
intRowCount=sqlRst.getRow();//获得当前行号
//记算总页数
intPageCount=(intRowCount+intPageSize-1)/intPageSize;
//调整待显示的页码
if(intPage>intPageCount)intPage=intPageCount;
%>
会员管理
第<%=intPage%>页共<%=intPageCount%>页
<%if(intPagehref="fenye1.jsp?
page=<%=intPage+1%>">下一页
<%}%><%if(intPage>1){%>page=<%=intPage-1%>">
上一页<%}%>
转到第:
页
用户名 | 删除
---|
<%
if(intPageCount>0){
//将记录指针定位到待显示页的第一条记录上
sqlRst.absolute((intPage-1)*intPageSize+1);
//显示数据
i=0;
Stringuser_id,user_name;
while(isqlRst.isAfterLast()){
user_id=sqlRst.getString
(1);
user_name=sqlRst.getString
(2);
%>
<%=user_id%> | <%=user_name%> | user_id=<%=user_id%>"
onClick="returnnewwin(this.href);">删除
<%
sqlRst.next();
i++;
}
}
%>
<%
//关闭结果集
sqlRst.close();
//关闭SQL语句对象
sqlStmt.close();
//关闭数据库
sqlCon.close();
%>
六、总结
回首这次学习,我总结了以下的收获和感悟:
●首先,我学到了一门新的语言以及实际软件项目开发所需知识和技能。
在这次学习的过程中,在戴哲老师的指导下,我不只对编程语言、软件设计进一步熟悉和掌握了,还对jdk,Oracle数据库等程序有了初步了解,能够对这些程序进行基本的操作
●其次,这次学习考验了我认真严谨的态度,这是一种科学合理的不可或缺的工作态度。
在学习实践过程中,由于对程序语言的不熟悉、对软件开发的不了解、以及对系统的把握不够,我和我们的小组走了许多弯路,也有过一些怨天尤人。
最后我们都坚持到了胜利,这真的要归功于三年数学系的学习培养的一种踏实、认真、严谨的态度。
●最后,我磨练了系统性思维、反馈调整思维
工程的开发是一次系统设计完善过程,这次的实习在一次次错误、纠错、调试的过程中,我深刻地体会到了系统地看待工程、系统地思考问题、系统地解决问题的重要性,另外在实践过程中,反馈调整不断向成功逼近的思维也是相当重要的。
因为我们中有人有时在不断修改的过程中,不但没有解决问题,还制造了很多新的问题,最后导致模块设计的崩溃,这提醒我们对调整的把握是相当重要的。