前一阵学习了一部分JavaWeb 总结如下:
2015-3-16 9:00
软件安装下载
1、下载jdk http://www.oracle.com/technetwork/java/javase/downloads/index.html
安装JDK,安装完成之后设置环境变量, 在系统path里添加
D:\Program Files\Java\jdk1.8.0_40\bin
新建变量 classpath :D:\Program Files\Java\jdk1.8.0_40\lib\tools.jar
在cmd里测试JDK是否安装成功,运行java,javac
2、下载tomcat http://tomcat.apache.org/
安装tomcat,安装完成后配置
我的电脑右键——管理——服务和程序——服务——找到Apache tomcat 属性将启动类型改为手动,然后右键启动
在浏览器地址栏输入http://localhost:8080/ 测试tomcat是否安装成功
3、下载myeclipse http://www.zhuxiaole.org/716.html
安装myeclipse ,安装完成后进行破解(查看破解说明)
配置编译环境 windows——preferences——Java——install jre——Add——配置自己安装的JDK//配置编译环境为自己安装的JDK//配置服务器tomcat
2015-3-17
1、servlet 服务器端编程
Servlet技术是一种用来实现动态网页的解决方案
C/S架构(Client/Server客户端/服务器架构):采用两层软件组件,一层是客户端程序,另一层就是服务器端的数据库。
B/S架构(Browser/Server浏览器/服务器架构):通过浏览器与网站系统进行交互,网站系统可以实现管理
用来处理动态网页程序的服务器程序被称为引擎。
开发Servlet File|New|Web Project
2、JSP基本语法
代码注释: “//”“/**/”“<%-- --%>”“<!-- -->”
指令(Directive)标记:page(对当前jsp页面的特性进行说明)、 include(包含另外的JSP页面和HTML页面)、taglib(用于JSP技术的标记库)
<%@ 指令标记 属性名=“值”%> (page中的language属性指定JSP页面所使用的脚本语言、extends属性指定JSP页面编译成class文件时所继承的父类、conterntType属性用来设置响应正文的MIME类型,pageEncoding属性用来设置jsp页面的字符所使用的字符集编码)
声明(Declaration)标记
脚本(Scriptlet)标记
表达式(Expression)标记
3、JavaBean组件技术
Javabean是一个公开的类,有一个无传入参数的构造函数,想要取得或者是设定属性时,必须使用getXXX()方法或者setXXX()方法
核心框架初步认识
2015.3.27
1、MVC模式的Structs框架、无侵入性的Spring框架、简单灵活的Guice框架、实现持久化的Hibernate框架、实现JPQL语言的JPA框架、实现数据映射器的iBATIS框架、用于开发用户界面的JSF框架和实现了异步交换的AJAX框架。
2、MVC:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
Model用来封装和显示数据方面的对象
View可以用来表示数据对象的当前状态,作为模型的显示
Controller用来处理用户的请求并进行转发
3、无侵入的Spring框架
Spring Core(Spring核心容器):是框架的基础部分,对该部分要理解3个概念:IOC(控制翻转)、DI(依赖注入)和BeanFactory(Bean工厂)。IOC代表的是一种思想,也是一种开发模式,是解决调用者(Bean)和被调用者(Bean)之间的一种关系。使用IOC不仅使应用中对象的关系清晰、一致,而且还使一切对象可控。DI就是IOC的实现策略,该策略让容器全权负责以来,受控对象只要暴露属性和带参数的构造函数,在初始化对象的时候就可以设置对象间的依赖关系。BeanFactory利用经典的Factory模式来消除对程序性单例的需要,并允许从程序逻辑中分离出依赖关系的配置和描述;
Spring Context(Spring上下文):是一个配置文件可以向Spring框架提供上下文信息。该框架利用一种框架式的对象方法来实现一些企业服务。
Spring DAO(Spring数据访问操作):是JDBC((Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。)的抽象层,利用异常层次结构消除冗长的JDBC编码和解析不同数据库厂商特有的错误代码。同时也提供了一种针对所有操作数据库类的方法来实现编程性和声明性事务管理
Spring AOP(Spring面向切面编程):是Spring的拦截器,借助于面向切面编程可以以声明式的方式使用企业级服务。所谓AOP就是允许定义方法拦截器和切点,来干净地给从逻辑上说应该被分离的功能实现代码解耦。借助于Spring AOP,开发者可以声明式、基于元数据访问企业级服务。
Spring ORM(Spring对象关系映射):ORM就是流行的关系——对象映射,该包为Spring框架提供了关系——对象映射工具,例如JDO、Hibernate和iBATIS SQL MAP。同时Spring框架也为关系——对象映射提供了一些特性,例如通用事务和DAO异常层次结构。
Spring Web(Spring的Web上下文):是Spring的Web上下文,与Spring上下文的区别在于前者是构建在Spring Core的基础上,而后者是构建在应用程序基础上,该模块的主要作用是为基于Web的应用程序提供上下文。
Spring Web MVC(Spring Web应用程序的MVC):是面向Web应用的MVC实现。Spring Web MVC不但使传统MVC框架成为高度可配置,而且还提供了一种清晰分离模式使MVC框架可使用Spring框架的所有其他特性,如校验等。
2015.3.30
4、简单灵活的Guice框架
Spring 和Guice这两种框架虽然都可以实现依赖注入和配置,但是Guice框架和Spring框架之间最主要的区别,可以归结为它们实现依赖关系和配置历年。Spring框架推崇主要的是非侵入性的方式,即以一种完全外部化的方式来对待对象依赖关系。
5、实现持久化的Hibernate框架
对象关系数据库映射(ORM):把对象模型表示的对象映射到基于SQL的关系模型结构,目前最完善和最强悍的ORM产品就是Hibernate框架。(图)
实现数据持久层,在学术界存在两种方向:直接编写JDBC等SQL语句(iBATIS);使用O/R Mapping技术实现的Hibernate。该框架不仅能够管理Java类到数据库表的映射,还提供了数据查询和获取数据的方法。该框架通过支持数据持久化相关的编程来减少开发者人工使用SQL和JDBC处理数据的时间。Hibernate框架的核心接口:
① Session接口:Session接口负责执行被持久化对象化的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)。但需要注意的是Session对象是非线程安全的。Hibernate的Session不同于JSP应用中的HttpSession。HttpSession对象称为用户Session。
② SessionFactory接口:负责初始化Hibernate。充当数据存储源的代理,并负责创建Session对象。一个项目通常只需要一个SessionFactory就够了,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory
③ Configuration接口:configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动过程中,configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
④ Transaction接口:transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码
⑤ Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。
6、实现JPQL语言的JPA框架
JPQL Java Persistence Query Language Java可移植的查询语言
JPA框架全称Java Persistence API。JPA是一个机遇操作持久层的框架,它使用ORM映射将面向模型和关系数据库联系起来。JPA框架由3部分组成
① Java持久化API:通过操作实体对象来对数据库中的数据进行增、删、改、查(CRUD)和事务的操作,该框架在后台替程序员完成所有的事情,使得程序员从繁琐的JDBC和SQL代码中解脱出来
② ORM(对象/关系)映射元数据:JPA框架支持XML和JDK5.0注解两种元数据描述形式通过使用元数据描述对象和表之间的映射关系,从而将实体对象持久化到数据库表中。
③ 查询语言:作为持久化操作中很重要的一个方面,JPA框架通过面向对象而不是面向数据库的查询语言查询数据,避免程序中SQL语句的紧密耦合
7、实现数据映射的iBATIS框架
iBATIS单词是由internet和abatis两个单词组合而成,该词实际上就是数据映射器(data mapper)。所谓映射器,是用于在对象和数据库之间搬运数据,同时保证对象、数据库以及映射器本身都相互独立。
在具体使用iBATIS框架时,该框架通过配置文件加载数据源、映射字段与Java对象的属性来完成数据的持久化。通常需要两个配置文件,一个用来配置iBATIS框架自身的一些属性信息、缓冲机制、事务处理方式及数据源;另一个是映射文件,将数据表映射到领域模型对象。
8、对于开发服务器端用户界面的JSF框架
JSF JavaServer Faces框架,该框架主要用来开发Java Web应用程序的服务器端用户界面。从网页设计人员的角度来看,JSF提供了一套标准动态标签,这些标签不同于HTML标签,可以与后端的动态程式结合,在具体设计网页时网页设计人员不需要理解后端的动态部分,甚至不太需要了解动态标签,就可以实现动态的显示。 注意:JSF提供的标准标签不仅可以与网页编辑程式结合在一起,而且还可以允许网页设计人员自己定制。开发人员只要处理Java代码就可以,而不需处理请求对象、会话对象、请求参数等。
9、实现了异步交换的AJAX框架
当浏览器向web服务器发送一个请求时,服务器接收并处理传来的表单,然后返回一个新的网页。这个做法浪费了许多带宽,因为在前后两个页面中的大部分HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。所以就出现了AJAX,这种技术不仅向服务器发送并取回必需的数据,而且它使用SOAP或其他一些基于XML的Web Service接口,在客户端采用JavaScript处理来自服务器的响应。因此在服务器和浏览器之间交换的数据大量减少,结果就能很快看到响应。同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。AJAX所包含的技术有:
① HTML用于建立Web表单并确定应用程序其他部分使用的字段
② JavaScript代码是运行AJAX应用程序的核心代码,帮助改进与服务器应用程序的通信。使用XMLHttpRequest来和服务器进行异步通信
③ DHTML或Dynamic HTML,用于动态更新表单。我们将使用div、span和其他动态HTML元素来标记HTML
④ 文档对象模型DOM用于(通过JavaScript代码)处理HTML结构和(某些情况下)服务器返回的XML
优势:
① 通过异步模式,提升了用户体验
② 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了宽带占用;
③ AJAX引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。
MyEclipse开发工具对各种框架的支持
1、使用JSP的两种模式
Model1:JSP+JavaBean
创建JavaWeb;创建JSP;在java一新建类中编写一个成员变量,接着右击该变量,在弹出的快捷菜单中选择Source|Generate Getters and Setters
Model2:Servlet+JSP+JavaBean
创建JavaWeb,添加JSP和JavaBean组件;
Servlet组件。创建servlet程序:file|new|servlet
2、struts框架的实现
1、下载和分析Struts1.x、Struts2.x框架包
Struct1的最新版本为struts 1.3.10 ,full Distribution完整版本,Library类库,Source完整源代码,examples示例应用,documentation相关文档,下载地址为:http://struts.apache.org/download.cgi#struts2320 下载时选择Full Distribution。
解压文档,文件夹包含如下的文件结构:
apps:包含基于struts1.3.10的示例应用
Docs:包含了该版本的相关文档,包括该版本的快速入门、struts 1.3.10的文档和API等内容。
Lib:该版本结构的核心类库
Src:全部源代码。
如果想在JavaWeb 中使用struts2.3.20,只要把下载文件解压后lib文件夹下的struts-core-2.1.6.jar、xwork-2.1.2.jar、ognl-2.611.jar、freemarker-2.3.13.jar和commonslogging-1.0.4.jar这5个必要的类库,复制到javaweb应用的WEB-INF/lib路径下就可以。
2、用MyEclipse实现Struts1.x框架环境
1) 新建一名为struts1的WebProject
2) 为项目增加Struts1.x框架的相关类库与文件,需要在Package Explorer视图中右击该项目,在弹出的快捷菜单中选择MyEclipse|Project facets (Capabilities)|install struts(1.x)(或者通过选择MyEclipse|Project Capabilities|Add Struts Capabilities命令来实现)
Struts config path:用来设置配置文件(Struts-config.xml)的存储位置,该选项一般不需要修改
Struts specification:用来选择struts的版本,设置为struts1.3
ActionServlet 那么:ActionServlet的名称,该选项一般不需要修改
URL pattern:指定了将来交给Struts控制的URL类型,该选项一般选择“*.do”
Bse package for new classes:用来指定生成类的默认包。一般要修改为com.cjg.struts
3、用MyEclipse实现Struts1.x项目
熟悉一下Struts配置文件编辑器,通过双击Struts-config.xml文件可以打开struts配置文件编辑器
File|Import|general|existing projects into workspace 导入struts1.0项目在浏览器输入URL:http://localhost:8080/struts1.0/login.jsp
4、用Myeclipse实现struts2.x项目
导入struts2的文件包:新建一个用户库;将库加入该项目中;建一个配置文件struts.xml
2015.4.3
5、分析struts1.x框架
浏览器《——》控制器(ActionServlet)《——》Actionform《——》(Action2、Action3、Action4)——》JavaBean EJB
浏览器发出请求,请求被核心控制器(ActionServlet)拦截,ActionServlet将请求打包在ActionForm中并转交给Action。该Action根据请求处理从相应模型中传过来的封装信息,然后把处理完的信息交给ActionServlet。最后由ActionServlet根据处理后的信息,转向相应的页面。
① 核心控制器:作用就是截取所有请求,然后根据struts-config.xml配置文件把打包到组件中的请求转发到相应的业务层控制器上。
② 封装信息的组件ActionForm:其实际上是一种JavaBean,主要用于进行师徒和控制器之间表单数据的传递
③ 业务控制器Action:通常每个动作对应一个Action,其会调用业务逻辑模型的方法、更新业务模型的状态和控制业务流程
④ 业务逻辑模型:对于大型应用来说,其一般由JavaBean或EJB来实现,主要用于实现业务的逻辑
⑤ Struts-config.xml文件:ActionServlet会根据该文件决定将请求发给哪个Action对象。
Struts1.x框架的工作流程,ActionServlet接受到一个请求时,将执行如下流程:
① 把请求信息保存到ActionForm对象中,根据配置信息决定是否需要表单验证,如果需要,则调用ActionForm的vaildate()方法。
② ActionServlet根据配置文件信息决定把请求转发给哪个Action,如果相应的Action实例不存在就创建该实例,然后调用改Action的execute()方法。
③ Action的excuse()方法会返回一个ActionForward对象,ActionServlet会把请求转发给ActionForward对象指向的JSP组件。
④ ActionForward对象指向的JSP组件生成动态网页返回给浏览器