admin 管理员组文章数量: 1086019
2023年12月19日发(作者:listview刷新进度条)
精品文档
javaweb项目总结
根据添加信息来考虑表中的字段,进行建表。使用PD画出ER图。要注意字段的数据类型的确定以及建表要满足三范式,减少数据冗余;
表建好后,根据表中各个字段来建pojo中的属性。要注意属性的数据类型和字段的数据类型要一致;
根据pojo中的属性确定bean的属性,直接拷贝即可,用于页面展示。在bean中,统一使用String类型变量接收前台页面传递的参数;每个HTML表单对应一个bean。HTML表单中的字段和bean中的属性一一对应。
自顶向下,依次定出action、manager、dao。先写出轮廓,跑通整个流程,再写具体实现,一点点累加,便于调试错误;
根据数据实体和具体业务逻辑,使用StarUML画类图,进行OOA和OOD,灵活运用设计模式。
API命名:
CRUD:add,get,update,delete,[list]
严格区分单复数形式,单数表示对象,复数表示对象集合。
对象、属性最好单个单词。
前后台都要校验。
按照资源方式组织数据接口,对前端开发帮助很大。即2016
1 / 26
精品文档
通过REST来实现资源的增、删、改、查。
软件开发,思路最重要!代码开发多了,思路就有了。
a、一个版本一个版本递增的开发; 每个版本增加一点内容;
b、总结开发思路;第一步怎么做,下一步怎么做?
c、用文档记录开发的思路,即第一个版本开发实现了什么功能以及开发步骤,下一个版本实现了什么功能等等?
d、程序员进行程序开发时,不要仅仅停留在代码,要深入到底层的运行机制,才可以对程序的运行机制有更准备的把握;
网页模板
request到文件
web客户——> title
banner———————>include:
body————————>include:
一步一步的定位。根据结果进行分析。
分页控件
假分页:
基本思想是将所有的数据从数据库中取出,只显示有用的部分。靠的是程序的算法,实际上就是在ResultSet上进行操作。
2016
2 / 26
精品文档
真分页:
任何数据库都会提供分页的函数操作:Oracle、MySQL、SQL Server
基本思想是在数据库中编写特定的SQL语句。程序中只读取有用的部分,没用的部分不会加载到内存中。
2、TIPS
、VO就是POJO。
、先做完基本功能,然后对输入的数据进行验证。主方法中代码尽可能少,再考虑代码的可重用性。
、当发现代码中重复地复制/粘贴时,就可以考虑将之形成为一个类进行调用。
、在类的设计中,永远不要去继承一个已经实现好的类,只能继承抽象类或实现接口。
、一个设计良好的类,应重写Object类中的equals、hashCode、toString方法。
、在action层中接收参数,要写健壮,要做空指针处理。
、业务逻辑放到manage层,如if...不要放在action层,放在manage层处理。
、dao层要写健壮,传入的是bean或map,返回的是bean或list。
2016
3 / 26
精品文档
、查询:所有的记录总数以及查询第几页的数据;
、多思考,尝试用不同、多种方法去解决问题。
、当程序中有0、1这样的数字或字符串出现时,最好用常量代替。常量名很重要,做到见名知意。
、spring针对每一层都有一个配置文件;ibatis有2个配置文件。sqlmap有namespace,每个实体类都对应一个xml配置文件。
、类设计,编写时先完成基本功能的实现,然后再对实现功能的代码结构进行优化。
2、PS
Java Web开发环境:JDK、IDE、java web服务器
JDK,一般指sun公司发布的JDK,也有其他的JDK,如IBM的JDK、BEA的JRocket等。从Java.0开始,Java web技术也称为Java EE。Java EE应用程序的运行需要Java EE类库的支持。
安装好JDK后,设置JAVA_HOME环境变量以及将JDK下的bin目录添加到PATH环境变量。
eclipse需要Java运行环境。
Eclipse WTP是Eclipse官方提供的web开发工具。
Java web服务器在Java EE规范中也叫做容器。
web容器在启动时,从文件中读取配置信息,2016
4 / 26
精品文档
装载web应用。
web容器运行时,不会检测、struts配置文件的更新而重新加载它。
若struts框架不能处理的异常,会把错误抛给web容器。容器会查看文件中是否配置了元素。若存在,则返回元素的子元素指定的错误页面。否则直接将错误抛给用户。
webApp部署好后,启动Tomcat会自动发布webApp。首先是实例化Filter,并调用其init方法初始化。然后根据的数值来依次加载servlet,并调用其init方法进行初始化。
若没有为servlet配置属性,则当web应用启动时servlet容器不会加载这个servlet,只有当用户首次访问此servlet时才加载。
web调试时,一定要服务器以调试模式启动。然后在程序中打断点,通过浏览器访问,这样程序运行到断点处就会暂停运行。
jsp放到WEB-INF文件夹中,可防止外界直接通过URL来访问Jsp页面,此时jsp一定要是servlet或action的后继页面,才可以被访问到。
EL表达式是JSP2.0规范,需要Tomcat支持的。Tomcat6才支持EL表达式。
2016
5 / 26
精品文档
编码
用户提交的查询数据,默认采用的是ISO-8859-1编码。
racterEncoding; //设置request编码方式,即设置使用utf-8来解析请求参数;
racterEncoding; //设置response编码方式
JNDI
JNDI:为某个java对象起一个名字。如为Tomcat中的数据源起一个名字,从而让程序可通过该名字访问该数据源对象。
若web应用访问了由servlet容器管理的某个JNDI资源,需要在中对这个JNDI资源的引用声明,表示资源引用的元素为。
session
servlet容器为HttpSession分配唯一标识符sessionID。servlet容器把sessionID作为cookie保存在客户的浏览器中。若浏览器禁止cookie,servlet容器可重写客户请求的url,把sessionID添加到url信息中。HttpServletResponse接口提供了重写url的方法:encodeURL。
Java Web 总结
运行原理
2016
6 / 26
精品文档
用户通过客户端浏览器向服务器发送请求。
JSP文件将JSP引擎编译成Java的class文件,即servlet。
将产生的servlet加载到内存执行。
Servlet的运行结果以HTML形式通过web服务器返回客户端的浏览器。
项目设计
公开目录 web_INF目录 Class目录
的基本语法
脚本元素:声明、脚本段、表达式。
脚本段:
声明:不会产生任何输出内容→声明全局变量。
表达式:
EL表达式:${ }
指令元素:不在客户端可见
page指令、include指令、taglib指令
page指令:language属性、contentType
考点:
4.指令与动作的区别
1.执行时间不同
指令是偏译时包含静态文件
动作?是运行时包含的文件
2016
7 / 26
精品文档
2.引入内容不同
指令引入静态文本。
动作引入执行页面或severlet的应答文本。
内置对象
Out,request,response,session,application,page,pageContext,exception,config
request客户端向服务端发送请求。
response用于服务器端封装JSP处理请求后产生的结果。
response对象的send Redirect方法相当于两次请求。
而在网址不变情况下内部跳转不同页面,但依旧属于同一次请求
n和cookie的区别
1.存放地点不同
Session存放在服务器端,cookie存放在客户端的硬盘里
2.存活时间
session随用户访问服务器而产生,随客户下线或超时而消失
3.安全性
session存放在服务器端,不能被修改,且随客户端浏览器的关闭而消失,安全性较好。Cookie存放在客户端,安2016
8 / 26
精品文档
全性较差。
7.数据库
Manager——加载驱动程序
ion——表示数据库连接对象,对数据库一切操作都在这个基础上
ent——执行SQL语句和返回结果
Set——结果集用来暂时存放数据库查询操作结果
8.编写程序的步骤
1.装载驱动程序
e
2.定义所需连接数据库的地址
String mysqlURL="://host:port/dbName"
3.建立与数据库的连接
Connection conn= Connection
4.声明并执行SQL语句
5.处理返回的结果
6.关闭对象
String driverStr=""
String
connstr="jdbc:mysql://localhost:3306/book";
2016
9 / 26
精品文档
Class forName
Connection conn=nection 第4步:建立语句对象
Statement stmt=Statement
第5步:声明并执行SQL语句
String sql="select*from book";
ResultSet rs=eQuery;
第6步:
Statement接口的3个方法:1、ResultSet executeQuery
2、int execute Update
3、boolean execute
ResultSet的方法:1、boolean next
2、get xxx
第7歩:
注:关闭资源的顺序与打开资源顺序恰好相反。
第8步:异常处理
try{.........}catch{.........}
Bean 组件
组件:是一个独立的模块,外界可以不了解内部如何实现,只需通过其提供的接口对组件进行访问即可,组件可重用。
特点:1、实现代码重复使用;2、易编写,易维护,易2016
10 / 26
精品文档
使用。
Bean类的编码约定
1、类实现了izable接口
2、必须放在某个Package中
3、类中如果有构造方法,那么这个方法是共有的,并且无参数
4、所有属性都是私有的
5、get XXX:用来获取属性,此方法是共有的
6、set XXX:用来设置属性,此方法是共有的
7、对于boolean类型的成员变量允许使用“is”代替“get”和“set”
8、类中的普通方法不适合上面的命名规则,但这个方法必是public的。
3个标记:
网页中创建JavaBean实例
用于为bean中的属性赋值
用于获取bean中属性的值
id=”javaBean实例名” class=”javaBean对应的类名” 设置的属性
获取JavaBean实例指令的属性值,并将这个值转换成字符串显示到JSP页面。
t的生命周期
2016
11 / 26
精品文档
当客户第一次请求servlet时,servlet被加载到内存
容器会创建servlet实例,并调用其init方法进行初始化工作。
容器创建请求对象,然后调用servlet的service方法为客户提供服务。
当servlet不再被需求时,容器调用servlet的destory方法将servlet实例销毁。
t开发
引入t.* 和,.*包
t过滤器
Servlet过滤器是一种java组件,它位于客户端和处理程序之间
Servlet过滤器工作原理
1和model2
Model1:JSP+JavaBean
Model2:JSP+Servlet+JavaBean
Model1中,jsp页面实现页面显示、业务逻辑和流程控制,数据处理由JavaBean完成。
优点:进行快速和小规模的应用开发时优势非常明显。
缺点:不利于web应用的扩展和更新;调试和排错困难。
Model2中,MVC模式--->模型-视图-控制器.即把web2016
12 / 26
精品文档
应用的输入输出和处理流程按照和Controller分成三层。
Model1和Model2的区别:
Model1和Model2实际上就是对采用JSP技术开发的web应用的不同模型的描述。Model1采用JSP+JavaBean技术开发web应用,它比较适合小规模应用的开发,效率较高,易于实现,但由于在JSP页面中内嵌了大量的Java代码,以至于当业务逻辑复杂时,代码可维护性、可扩展性和可重用性就会下降;Model2采用JSP+Servlet+JavaBean技术开发web应用,该模型基于MVC模式,完全实现了页面显示和逻辑的分离,它充分利用了JSP和Servlet两种技术的优点,JSP更适合前台页面的开发,而Servlet更擅长服务器端程序的编写,Model2分工明确,更适合大型项目的开发和管理。
视图用于与用户交互,可以用实现。
15.模型用于表示业务数据和实现业务逻辑,可以用JavaBean实现 控制器完成流程控制,它接收来自视图层用户输入的数据,并调用相应的模型进行处理,最后选择合适的视图去响应用户。控制层可以用Servlet实现。
优点:MVC模式完全实现了页面表示和业务逻辑的分离;
MVC优势之一在于三层各司其职,互不干涉。
缺点:没有明确的定义。
模型层为JavaBean,实现了数据的表示和业务逻辑,视2016
13 / 26
精品文档
图层为JSP页面,只负责显示功能。
控制器为Servlet,负责接收用户的请求,设置JavaBean属性,调用JavaBean完成业务处理,最后将处理结果交给JSP页面显示。
16.自定义标签
对隐式对象的操作、处理表单、访问数据库及其他企业级服务。
自定义标签种类:
1.不带有属性和标签体:
2.带有属性没有标签体的标签:
3.带有属性带有标签体: myBody
表达式
基本语法${expr}
功能:对属性对象的简明访问:${user}
对属性对象的属性访问:${ame}
对属性集合元素的访问:对数组和list:${variable[index]} 对map:${variable[key]}
对请求参数cookie等的简单访问.
请求参数${}
Cookie对象:${okie}
18."."操作符和"[ ]"操作符
2016
14 / 26
精品文档
${s}=${user[address]}
访问数组和集合元素,需使用[ ]
关于java和web工程项目中各种路径的获取总结
参考网络文章整理
1. 获取web服务器项目的真实物理路径
2. 相对路径的获得
说明:相对路径均可通过以下方式获得
上述相对路径中,java项目中的文件是相对于项目的根目录
web项目中的文件路径视不同的web服务器不同而不同
3. 类加载目录的获得
3.1. 通用的方法一
录位于src目录下)
上式中将TestAction,替换成对应成相应的类名和文件名字即可
3.2. 通用方法二 InputStream
is=ourceAsStream;
4. web项目根目录的获得
2016
15 / 26
精品文档
4.1. 从servlet出发
可建立一个servlet在其的init方法中写入如下语句
Java代码
如果是调用了lPath则输出D:工具
Tomcat-6.0webapps002_ext
4.2. 从
httpServletRequest出发
结果形如:D:工具Tomcat-6.0webapps002_ext
5. classpath的获取
5.1. 方法一
输出:t---/E:/order/002_ext/WebRoot/WEB-INF/classes/
5.2. 方法二
输出:
ource--/E:/order/002_ext/WebRoot/WEB-INF/classes/
另外,如果想把文件放在某一包中,则可以通过以下方式获得到文件
eg
2016
16 / 26
精品文档
输出:
ource---/E:/order/002_ext/WebRoot/WEB-INF/classes/jdom/
在jsp和class文件中调用的相对路径不同。 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用perty获取你工程的绝对路径。
6. 在Jsp,Servlet,Java中详细获得路径的方法
6.1. jsp中取得路径:
以工程名为TEST为例:
得到包含工程名的当前页面全路径:
结果:/TEST/
得到工程名:
结果:/TEST
得到当前页面所在目录下全名称:
结果:如果页面在jsp目录下 /TEST/jsp/
得到页面所在服务器的全路径:
结果:D:
得到页面所在服务器的绝对路径:
结果:D:resinwebappsTEST
2016
17 / 26
精品文档
6.2. 在类中取得路径:
类的绝对路径:h 结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
得到工程的路径:
Java代码
结果:D:TEST
6.3. 在Servlet中取得路径:
得到工程目录:
结果:E:TomcatwebappsTEST
得到IE
地址栏地址:
结果:localhost:8080/TEST/test
得到相对地址:
结果:/TEST/test
以工程名为/DemoWeb为例:
访问的jsp为localhost:8080/DemoWeb/test/
1 JSP中获得当前应用的相对路径和绝对路径
得到工程名:textPath
结果:/DemoWeb
2016
:
18 / 26
精品文档
得到包含工程名的当前页面全路径:uestURI
结果:/DemoWeb/test/
得到IE地址栏地址:uestURL
结果:localhost:8080/DemoWeb/test/
得到当前页面所在目录下全名称:vletPath
结果:/test/
得到页面所在服务器的全路径:
lPath
结果:D:Develop
D:Develop
Filesapache-tomcat-5.5.15apache-tomcat-5.5.15tomcat的安装路径
的Class中获得相对路径,绝对路径的方法
类的绝对路径:
h);
结果:为2016
19 / 26
精品文档
/E:/workspace/workspace_tcc/DemoWeb/WebRoot/WEB-INF/classes/
n);
结果:
file:/E:/workspace/workspace_tcc/DemoWeb/WebRoot/WEB-INF/classes/demo1/
得到工程的路径:perty
结果:E:workspaceworkspace_tccDemoWeb
/*
* 文件块的读取*/
import edReader;
import tFoundException;
import ader;
import ption;
开始入手一个新的 java web 应用应该遵循这样一个原则
1 、首先是整体框架,也就是通常所说的三层构架:
数据库 + 应用服务器 + 应用
、其此是框架各个部分所处的环境
就是数据库,应用服务器的 os 都是什么,怎么沟通,怎么在对应 os 下调配数据库以及应用服务器
2016
20 / 26
精品文档
、再次应该是应用服务器和数据库的连接
这点很重要,要查找相关资料怎么配置应用服务器和数据库连接,以及使用的数据库连接池技术
、然后才是了解应用的构架
也就是所谓的项目源码了,具体使用了那种 mvc 模式,使用了什么日志工具,测试工具、编译工具,还用要是你去熟悉一个公司的项目的话,这个公司可能有自己的 web 相干开发工具
我用 visio 做了一个图形应该是这样的顺序
用我最近的具体例子来做说明吧:
1、 首先是 层构架
数据库是 mysql
应用服务器是 resin
应用基本上是 struts+hibernate
这里明确了学习目标应该是
mysql 的相关使用方法
resin 的相关使用方法
2、 其次是 os
数据库和应用服务器放在一台主机上, OS 是 linux
但是日常的开发环境是 windows
所以用到了常用的 ssh 对主机进行管理
这里明确了学习目标应该是
2016
21 / 26
精品文档
Unix 相关命令
Ssh 的使用方法
3、 然后是数据库和应用服务器的连接方法
使用 mysql 的 jdbc 接口
这里明确了学习目标应该是
Resin 对数据库连接的配置方法
Mysql 对数据去连接有什么要求
4、 最后是应用代码层
这层应该是最后学习,但是我们往往习惯对整个系统没有弄清框架就开始这层的研究,这就导致在研究中不断出现有关框架的各种问题,而又要中断当前学习,开始查找另一个资料。我开始就犯了这个毛病,所以进度缓慢
这里我的项目使用了 hibernate+struts 作为基本框架,用 Ant 进行编译发布工作,使用 eclipse 作为 ide ,另外用到的 java 工具有 jfreechart,quartz 等,再有自己公司开发的 web 框架工具包
这里明确了学习目标应该是
边参照源码一边学习 Struts , hibernate , ant ,
eclipse , jfreechart , quartz ,自己公司的工具包
然后再在数据库的角度对整个业务逻辑做出理解
当然,以上四步中肯定是有些工具和技术已经掌握了,我们所要面向的是我们没有掌握方面,然后最终达到掌握系2016
22 / 26
精品文档
统的目的!要注意我们的目的是上手新平台不是学习新技术!
学习心得
在写心得之前总结下中级部分学习的内容,我们的中级部分主要学习了html,css,javacript,xml,dtd/scheam,以及java ee 中的jsp,servlet,过滤器,监听器,JSTL,EL,jQuery,Ajax。
下面就各个模块进行总结:在学习html时,我是对这个没太在意的,因为里面全部是标签,没有需要理解的内容,全部是属于识记的,所以在学习时相对轻松,对于html常用的标签都是非常清楚的form中的十一种类型,常用的有text,password,hidden,submit,button,radio,checkbox,等其他的标签如div,table,span,select都是重要的标签.
Css的学习:虽然说在标签中也可以定义样式,但是这么做看起来不是那么明智,我在学CSS时还是比较努力的,所有的样式效果都测试过,并且写了相应的案例,只是过了不到3个月就忘了一大半,很多时候都是查文档才能写出来的,虽然CSS对于我们来说不必要非常精通,但是我觉得掌握的东西越多,以后的工作就越轻松,所以在中级结束后也会去看看前面的笔记和案例。
Javascript:js 我认为是最重要的,甚至于超过servlet,jsp,在上课期间,讲的内容还是比较少的,就2016
23 / 26
精品文档
javascript中创建对象来说吧,应该只讲过3中方法,虽然在一般的情况下是用不上的,但是我觉得还是有必要学习的,这样有助于看懂别人写的框架,在javascript这部分学习中讲的最多的还是dom操作,不过我觉得用dom操作太繁琐了,写的代码太多,而且效率看起来也不高,后面就是讲的事件,事件也算是简单的,只是对触发的事件进行相应的响应。除了这些就是javascript流程控制,对象一些基本语法,这些和java类似,所以在上课时没有讲得太多。
Xml: Extensible Markup Language可扩展标记语言。它是由SGML发展而来的,允许开发者自定标签,可以将标签和内容有效的分离。在XML技术里,可以编写一个文档来约束XML文档的书写规范,称之为XML约束。本文主要介绍DTD与Schema两种约束,在这里学习了dtd,scheama,定义XML约束,这部分的学习是我感觉最累的一部分,DTD还算好,SCheama里面的内容,现在都忘了,没有任何记忆,只知道在XML约束中有着两中方式,还好这些在刚开始工作时是用不上的,因此我也没有用很多时间来学习。
Servlet:我觉得是比较简单的,可能是因为它是java代码,容易理解。首先讲的是开发环境的配置,安装tomcat,了解tomcat下的目录,以及web工程下的目录。后来是讲了servlet的访问方式,post和get的区别,处理中文乱码是servlet中一个重要的知识点,几乎每个项目都会遇到这2016
24 / 26
精品文档
个问题。主要乱码有get,post乱码,是通过设置request或者response的编码方式来实现的。Servlet间的跳转方式有重定向和转发,对于重定向和转发的区别,现在理解的很透彻了,重定向是不能获取request中参数,是客户端的两次请求,而转发是服务器内部跳转,不过,两种在设置过滤器的情况下,都要通过过滤器才能跳转。Servlet的生命周期是笔试的必考题,其实这是很简单的,只需要理解,没必要死记硬背的,session算是重要的知识点,很多数据都是存储在内存中,如购物车,用户信息等,还可以对session设置生存时间。说到session就必须说说四种会话跟踪技术,cookie,URL重写,表单域隐藏和session。
JSP:JSP实际上和servlet是一样的,只不过两者侧重点不同,JSP的内置对象和作用域大致是一样的,JSP中还有动作,常用的有操作JavaBean的动作,页面跳转的动作,以及包含的动作。这里重点提到两种包含的区别。在JSP还讲过jstl和EL表达式,都是基础的应用,不过写自定义的标签还是要有一定的java基础的,我开始不太理解标签的解析过程,后来看了几个例子,发现自定义的已不是那么难。
jQuery:jQuery可以说是中级部分学的最好的,主要是它方便了,特别是选择器,而且避免了一些浏览器的差异,所以在学习jQuery后,就再也不想用javascript来获取元素了。不仅如此,jQuery中封装的Ajax操作也是非常简单,2016
25 / 26
精品文档
不需要自己封装一个类,$.get和$.post 能够省去很多麻烦,jQuery的监听事件也是很简单,不需要在标签中添加对应事件,可以动态的绑定事件。还有就是dom操作更是方便。我在学习完Ajax,json后就发现,即使是没有JSP,也能做出一个动态页面出来,只是会存在效率问题。
总结:虽然说这上面的知识大部分都掌握了,但是能否灵活运用才是重点,所以在今后的学习中多思考问题是否有多种解决方法。
2016
26 / 26
版权声明:本文标题:javaweb项目总结 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1702923912a436125.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论