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


本文标签: 页面 方法 属性 进行