java开发技术总结

时间:2024.3.31

数据库

oracle-->数据库管理系统-->SQL、PL/SQL-->Java(JDBC+SQL)

DBA,数据库编程程序员

1.概念导论

1)什么是数据库

有组织和结构存储数据。可以存储

字符、字节、图形、图像等类型数据

DB(数据库):数据集合

DBMS(数据库管理系统):对数据集合进行管理和操作的软件

--Oracle

--DB2

--MySQL

--SQLSERVER

JDBC

1.什么是JDBC

全称Java DataBase Connection,Java数据库访问。

JDBC是Java访问数据库的一项技术

JDBC是SUN推出的Java访问数据库的一套标准。由一系列接口构成。 各个数据库厂商负责提供JDBC接口API的实现包。

开发者只需要掌握JDBC接口的使用,就可以实现对各种数据库的操作,不需要了解开发商的实现类。

XML

1、什么是xml(xtendsible markup language可扩

展的标记语言)?

1)定义

基于文本的通用的数据保存格式。

(1)通用的点的坐标

Point类 point对象(x=10,y=20)

a,序列化

b,数据库表

c,文件

...

(2)数据格式

<point>

<x>10</x>

<y>20</y>

</point>

HTML

知识准备

1、分层:表现层:UI界面(DOS界面、桌面类型、web类型)

业务层:

数据层:文件、Oracle数据库

2、Web类型的应用程序----B/S 类型 打开 Browser,输入 URL,浏览器将请求发送到服务器 服务器得到请求,分析,返回响应 浏览器得到响应,解析(翻译),显示为页面 3、web 学习阶段 客户端技术:HTML+CSS+Javascript---Web 基础 服务器端技术:JSP、PHP、ASP.NET 4、web基础的课程 HTML:页面的创建 CSS:页面的外观 JavaScript:页面的动态效果和交互行为--3

一:HTML 概述

1、超文本标记语言:一种编写页面的纯文本的标记语言,文件以.html或者.htm 为后缀,依靠浏览器运行显示----解释性的语言

2、标记:一些用 <> 括起来的内容,特殊的显示

3、主流浏览器:IE/Firefox/Chrome/

4、浏览器兼容性:符合标准规范,具体问题

CSS

一:CSS 概述

1、CSS:级联样式表(层叠样式表)

2、特征:为页面定义外观的语言,实现内容和表现的分离,多个样式可以合为一个,如果冲突,以优先级为准

二:基础语法

1、语法: 属性名称:值;属性名称:值;比如--color:red;

2、如何应用

方式一(内联方式):<元素 style="" />---将样式直接定义在元素的 style 属性里 方式二(内部样式表):在页面的 head 里的 style 里定义样式

方式三(外部样式表):定义一个单独的.css的文件(定义样式);然后,在页面的 head 里用 link 引入---推荐方式

3、外部样式表的优点:实现内容和表现的分离,提高代码的可重用性和可维护性

---可以准备多套样式---换皮肤/主题 4、样式表,如果重复定义 a、样式不同,取并集 b、相同,按照优先级 内联 > 内部或者外部 c、相同优先级下,以最后定义的为准

javascript

一:javascript 概述

1、什么是 javascript:一种基于对象和事件驱动的解释性脚本语言,嵌入到网页上

2、历史:js代码---W3C定义了标准规范的 js 代码

3、浏览器兼容问题:标准代码,个别情况个别对待

4、怎么写

方式一:直接写在事件里,仅限于代码很少

方式二:写在 head 的 script 里,仅限于当前页面重用

方式三:写在 js 文件里,html 页面的head 里用 script 引入

5、js的特征53………………………………………………..

一种解释性的脚本语言,适用于为网页添加动态效果和交互行为

6、错误:

二:基础语法

1、写法:以 ;结束,大小写敏感

2、标识符:以字母、数字和下划线还有 $组成,不以数字开头---不能和系统关键字重3、变量 ***----声明变量,以 var 开始 var i = 1; var s = "mary"; var b = true; js是一种弱类型的语言---变量声明时不需要确定类型,数据类型以赋值为准 4、数据类型 简单类型:string、number、bool 特殊类型:null、undefined var i; alert(i);---undefined 复杂类型:对象 5、(string)字符串类型 var s = "mary"; var s = 'mary';

特殊字符:使用转义---转换为普通字符,解决汉字的问题 "hello\'w\"or\nld" alert("一"); alert("\u4e00"); [\u4e00-\u9fa5] 6、number:并不区分整数和小数 var n = 12; var n1 = 12.34; 7、bool:true(1) 和 false(0) 8、数据类型之间的转换 var n = 18; var name = "mary"; 隐式转换(直接) string + number-- number + bool-- bool + bool-- string + bool-- 显式转换(调用方法)*** xxx.toString() parseInt(xxx); parseFloat(xxx);--确实能转,如果不能转,将返回 NaN NaN---not a number 判断 isNaN("aaa")--is not a number--返回 bool 9、运算符 算术运算符、比较、逻辑、位。。。 特殊一:*** === 严格相等:值和类型 if( a == b) if( a === b)

servlet

1、web开发的背景知识(了解)

b/s架构:

特点:

客户端使用浏览器,服务器端使用web服务器, 客户端与服务器端使用标准化的http协议来进行通信。 优点:

与c/s架构相比,有两个优点:

a,客户端不需要单独安装 b,开发相对简单(因为c/s架构需要自定义协议,开发相应的 通信模块,而b/s使用标准化的http协议,浏览器与 web服务器都提供了相应的通信模块)。

2、什么是servlet?

sun公司制订的一种用来扩展web服务器功能的组件规范。

(1)扩展web服务器功能

早期的web服务器(iis,apache ws等等),只能够处理静态 资源的请求(即需要事先将html文件写好并保存到web服务器 相应的文件夹下面),不能够处理动态资源的请求(即需要进行 计算,然后生成相应的html)。

a,可以使用cgi程序来扩展。

cgi程序可以使用c/c++,perl等语言来开发,但是, 程序比较复杂,而且可移值性不好,性能也比较差, 现在用得不多。

b,servlet可以扩展这些web服务器的功能。

浏览器发送请求给web服务器(apache ws),web服务器 检查请求是否需要计算,如果需要,web服务器会访问 servlet容器,servlet容器会调用servlet来进行计算。

(2)组件规范

1)什么是组件?

符合一定规范,实现部分功能,并且需要部署到 相应的容器里面才能运行的软件模块。

2)什么是容器?

符合一定规范,为组件提供运行环境及相应服务的 程序。

3、如何开发一个servlet?

step1,先写一个java类,实现Servlet接口或者继承

HttpServlet类(一般会使用继承的方式)。

step2,编译

step3,打包(创建一个具有如下结构的文件夹)

appname(应用名称)

WEB-INF

classes(放.class文件)

lib(可选,放.jar文件)

web.xml(部署描述文件)

step4,部署

将step3创建好的文件夹拷贝到servlet容器指定的 某个文件夹下面(比如,如果容器是tomcat,可以拷贝到 webapps文件夹下面)。

注意:也可以使用jar命令将step3创建好的文件夹 压缩成一个以".war"为后缀的文件,然后拷贝。

step5,启动servlet容器,访问servlet

http://ip:port/appname/servlet-url

6、servlet是如何运行的?

比如,在浏览器地址栏输入

http://ip:port/web01/hello

step1,浏览器依据ip,port建立与servlet容器(容器同时 也是一个简单的web服务器)之间的连接。 step2,浏览器将请求数据打包(按照http协议,该数据包 也称为请求数据包)。 step3,浏览器发送请求数据包给容器。 step4,容器收到请求数据包之后,解析该数据包,并将 解析之后得到的数据封装到request(请求数据包)对象上,同时,容器 还要创建response对象。 step5,容器要依据请求资源路径("/web01/hello")找到 servlet的配置,然后创建servlet对象。 step6,容器调用servlet对象的service方法。容器会将事先 创建好的request,response作为参数传递给service方法。 step7,在service方法里面,可以通过request对象获得 请求参数,并进行相应的处理,处理结果会放到response对象 里面。 step8,容器从response对象中取出处理结果,然后打包( 按照http协议,该数据包称之为响应数据包)。然后将 响应数据包发送给浏览器。 step9,浏览器收到响应数据包之后,解析处理结果,然后生成 相应的页面。 http://localhost:8080/web01/hello?uname=jetty ?后是请求参数,其中uname是参数名,jetty是参数值。

JSP

1、什么是jsp(java server page java服务器端页面技术)?

1)定义

sun公司制订的一种服务器端动态页面生成技术规范。

2)理解

a,因为直接使用servlet,虽然也可以生成动态页面, 但是比较繁琐(需要使用out.println语句),并且维护困难 (如果页面发生改变,必须修改java代码),所以,sun 在servlet规范制订之后,又添加了jsp规范。

b,jsp其实就是一个以".jsp"为后缀的文本文件, 该文件会被容器(比如tomcat)转换成一个servlet。

2、如何写一个jsp文件?

step1,写一个以".jsp"为后缀的文件。

step2,在该文件里面,可以添加如下的内容:

1)html(css,javascript)

直接写即可(不用out.println)

2)java代码

a, java代码片断

<% java代码; %>

b, jsp表达式

<%= java表达式 %>

3)指令

a,什么是指令?

告诉容器,在容器将.jsp文件转换成.java文件时

做一些额外的处理,比如导包。

b,基本语法

<%@指令名称 属性名称=属性值 %>

c,page指令

import属性:导包,比如

<%@page import="java.util.*"%>

<%@page import="java.util.*,java.text.*"%> contentType属性:设置

response.setContentType的内容,比如

<%@page contentType="text/html;charset=utf-8"%> pageEncoding属性:告诉容器jsp文件的编码。

因为容器需要读jsp文件的内容(也就是 说,需要解码,某些容器,如果没有该

属性,默认情况下会按照iso-8859-1

去解码,会产生乱码问题)。

4)隐含对象

a,什么是隐含对象?

在jsp文件里面可以直接使用的对象,比如

out,request,response。

b,为什么可以直接使用这些隐含对象?

因为容器会自动添加创建这些对象的语句。

3、jsp是如何运行的?

step1,容器要将.jsp文件转换成.java文件(其实就是

一个servlet类)。

a, html(css,javascript) --->

在service方法里,使用out.write输出。 (out.write方法会将null转换成""输出) b,<% %> ----->

在service方法里,照搬。

c, <%= %> ----->

在service方法里,使用out.print输出。

step2,容器调用servlet来处理请求。

4、转发

(1)什么是转发?

一个web组件(servlet/jsp)将未完成的处理通过 容器交给另外一个web组件继续完成。

最常见的情况:

一个servlet获得数据,然后转发给一个jsp来展现 这些数据。

(2)如何转发?

step1,绑订数据到request对象上。

request.setAttribute(String name,Object value);

说明: name:绑订名称 value:绑订值 step2,获得转发器 RequestDispatcher rd = request.getRequestDispatcher(String uri); 说明: url : 转发的目的地 step3,转发 rd.forward(request,response); request对象的其它和绑订相关的方法: 依据绑订名称找到绑订值,如果找不到对应的 值,返回null。 Object request.getAttribute(String name); 解除绑订 request.removeAttribute(String name) (3)转发的特点 a,转发之后,浏览器地址栏的地址不变。 b,转发的目的地必须是同一个应用内部某个 web组件的地址。

Ajax

1、ajax是什么?

(asynchronous javascript and xml 异步的javascript 和xml)

ajax是一种用来改善用户体验的技术,其实质是 利用浏览器提供的一个特殊的对象(XMLHttpRequest 对象,一般称之为ajax对象)异步地(当ajax对象向 服务器发请求时,浏览器不会销毁当前页面,用户

仍然可以对当前页面做其它的操作)向服务器发送请求。

服务器返回的数据不再是一个完整的新的页面, 而是部分数据,利用这些数据,更新当前页面。整个 过程,页面无刷新,不打断用户的操作。

2、如何获得ajax对象?

XMLHttpRequest没有标准化,要区分浏览器。 function getXhr(){

var xhr = null;

if(window.XMLHttpRequest){

} //非ie浏览器 xhr = new XMLHttpRequest(); }else{ //ie浏览器 xhr = new ActiveXObject('MicroSoft.XMLHttp'); } return xhr;

4、编程步骤

step1,获得ajax对象。

比如:

var xhr = getXhr();

step2,使用ajax对象发请求。 1)发送get请求 xhr.open('get', 'check_username.do?username=tom',true); xhr.onreadystatechange=f1; xhr.send(null); 注意: true:发送异步请求(ajax对象发请求时, 浏览器不会销毁当前页面,用户仍然可以 做其它操作)。 false:发送同步请求(ajax对象发请求时, 浏览器不会销毁当前页面,浏览器会锁定 当前页面,用户不能操作当前页面)。 step3,编写服务器端的处理代码,一般不再需要返回 一个完整的页面,只需要返回部分数据。 step4,编写事件处理函数 function f1(){ if(xhr.readyState == 4){ var txt = xhr.responseText; 更新当前页面 } }

jQuery

1、jQuery介绍

(1)特点

利用选择器查找要操作的节点,并且会将这些节点 封装成一个jQuery对象。通过调用jQuery对象的属性 或者方法来实现对底层节点的操作,这样做的好处有 两个:一是兼容性更好了,另外,代码得到简化。

(2)编程步骤

step1,使用jQuery选择器查找要操作的节点。 step2,调用jQuery对象的方法或者属性。

(3)一个简单例子 first.html

(4)jQuery对象与dom对象如何相互转换?

1)dom对象 ---> jQuery对象

$(dom对象)

2)jQuery对象 ---> dom对象

2、选择器

(1)选择器是什么?

jQuery借鉴了css选择器的语法,用来查找要操作的 节点。

(2)基本选择器 selector / s1.html

#id

.class

element

select1,select2..selectn

*

(3)层次选择器 selector / s2.html

select1 select2:查找所有的后代

select1>select2:只查找子节点

select1+select2:下一个兄弟

select1~select2:下面所有兄弟

(4)过滤选择器

1)基本过滤选择器 selector / s3.html

:first

:last

:not(select) 排除满足select要求的节点 :even :odd :eq(index) :gt(index) :lt(index) 2)内容过滤选择器 selector / s4.html :contains(text) 匹配包含给定文本的元素 :empty 匹配所有不包含子元素或者文本的空元素

:has(select) 匹配含有选择器所匹配的元素的元素 :parent 匹配含有子元素或者文本的元素 3)可见性过滤选择器 selector / s5.html :hidden 匹配所有不可见元素, 或者type为hidden的元素 :visible 匹配所有的可见元素 4)属性过滤选择器 selector / s6.html [attribute] [attribute=value] [attribute!=value] 5)子元素过滤选择器 selector / s7.html :nth-child(index/even/odd) 注意: 下标从1开始。 6)表单对象属性过滤选择器 selector / s8.html :enabled :disabled :checked :selected (5)表单选择器 :input :text :pasword :radio :checkbox :submit :image :reset :button :file :hidden

3、dom

1)查询 dom / d1.html

找到节点之后,可以读取或者修改节点的 html内容,文本,值,属性。

a, html() 读取或者修改节点的html内容 b, text() 读取或者修改节点的文本内容 c, val() 读取或者修改节点的值 d, attr() 读取或者修改节点的属性

2)创建 dom / d2.html

$(html);

3)插入节点

append():作为最后一个孩子添加进来。 prepend():作为第一个孩子添加进来。 after():作为下一个兄弟

before():作为上一个兄弟 4)删除节点 dom / d3.html remove() remove(selector) empty():清空节点 5)数据与行为分离 dom / d4.html d5.html 即不用修改html文件,通过引入外部的js文件来 为页面提供动态效果。 $(fn); fn是一个函数的名称 或者 $(function(){ //当整个页面加载完毕,会执行这儿的代码。 }); 6)复制节点 dom / d6.html clone() clone(true):使复制的节点也具有行为(将事件 处理代码一块复制) 7)属性操作 读取:attr('id'); 设置: attr('id','d1') 或者一次 设置多个 attr({"id":"d1","class":"s1"}); 删除:removeAttr('id') 8)样式操作 dom / d7.html 获取和设置: attr("class","") attr("style","") 追加:addClass('') 移除:removeClass('') 或者removeClass('s1 s2') 或者removeClass()//会删除所有样式 切换样式:toggleClass,有该样式,就删除,没有, 就添加。 是否有某个样式 hasClass('') 读取css('') 设置css('','')或者 css({'':'','':''})//设置多个样式 9)遍历节点 dom / d8.html children()/children(select):只考虑子元素, 不考虑其它后代元素。 next()/next(select):下一个兄弟 prev()/prev(select):上一个兄弟 siblings()/siblings(select):其它兄弟 find(select):从当前节点向下查找所有的后代 (满足select要求的) parent():父节点

struts

1、什么是Struts?

Struts是基于MVC的轻量级框架,主要处理请求分发的问题,重心在控制层和表现层。 --基于MVC:实现了MVC,满足MVC的设计思想。

--轻量:侵入性低,是我们业务代码对框架的依赖程度很小,既很少需要import Struts包。

--框架:基础的代码,引入之后可以减少我们的开发工作量,提高开发效率。

2、为什么用Struts?

1)对比Servlet

--Servlet优缺点

优点:直接、效率高

缺点:业务代码耦合度高,不便于维护

--Struts优缺点

优点:将业务代码解藕,便于维护

缺点:效率低

--Servlet中的MVC与Struts中的MVC,

参考图理解

2)对比其他框架

--健壮性(4*):稳定程度

--易用性(4*):好学、好用

--扩展性(5*):就软件未来而言,将来有更复杂

的需求时,是否有处理方式。

--侵入性(4*):与依赖性/耦合度成正比

3、Struts发展史

1)Struts1,结构简单、易用,由Apache推出。

与Servlet/JSP耦合紧密,导致发展受限。

2)WebWork,技术先进,核心是XWork。

3)Struts2,基于XWork,在此基础上发展形成。

面试题:Struts1和Struts2的区别和联系?

--Struts2与Struts1差别很大,不能理解为Struts1

的升级版本。

--Struts2以XWork为核心,可以理解为WebWork

的升级版本。

*4、Struts2使用步骤,HelloWorld

--使用版本Struts2.1.8

1)创建web项目

2)导包

3)配置前端控制器(filter)

--在web.xml中配置filter

--控制请求分发的控制器

4)创建struts.xml --放在src根路径 --名称必须是struts.xml 5)*创建Action --控制业务流程的控制器 6)*创建JSP 7)*配置struts.xml --体现请求和Action的关系 --体现Action和JSP的关系

*5、扩展HelloWorld

目标:掌握Action与JSP页面数据交换的方式。

1)Action如何向页面发送数据?

--通过EL表达式

2)*Action如何从页面接收数据?

--注入:调用JavaBean的set方法,为其属性赋值 的行为称之为注入。

*a、基础属性注入

--Action中定义基本类型的属性,给它set方法 --表单中,文本框的name="属性名"

--表单提交时,Struts2会自动将表单的内容, 传递给Action里的属性。

--Struts2会自动初始化属性

--注意:Action跳转的页面,EL表达式${属性名} *b、域模型注入

--Action中定义JavaBean类型的属性, 给他set方法

--表单中,文本框的name="对象名.属性名" --表单提交时,Struts2会自动将表单的内容, 传递给Action里定义的对象

--Struts2会自动的初始化对象

--注意:Action跳转的页面,

EL表达式${对象名.属性名}

c、模型驱动注入(了解即可)

--需要Action实现接口ModelDriven

*6、使用Struts2实现NetCTOSS中的资费列表

--准备:分析需求、了解表结构、建表

1)创建web项目

2)导包

3)前端控制器(filter)

4)创建struts.xml

5)创建Action

-->filter->struts.xml->Action

-->DAO-->DBUtil,Entity a、Entity b、DBUtil c、DAO d、Action 6)JSP 7)配置struts.xml

Hibernate

1、什么是Hibernate

1)Hibernate是数据访问层的框架,对JDBC进行了 封装,是针对数据访问层的面向对象的解决方案。

2)Hibernate允许我们直接访问对象,然后将访问

自动转化为SQL去执行,从而达到间接访问数据库 的目的,简化代码开发,提升开发效率。

2、为什么使用Hibernate

1)使用JDBC开发出现的问题

--需要在代码中写大量的SQL

--需要给大量的?赋值

--需要将结果集转换为实体对象

--在SQL中可能会写数据库特定的函数, 移植性差。

2)使用Hibernate可以解决上面的问题

--基本上不需要写SQL,因为Hibernate可以 自动生成SQL并执行

--可以自动给?赋值

--可以自动将结果集转换为实体对象

--Hibernate提供通用的API来访问不同的数据库, 移植性好。

3)补充JDBC与Hibernate的优缺点

a、JDBC优点:

效率高

b、Hibernate缺点:

效率相对于JDBC要低

*3、Hibernate的设计原理

1)Hibernate是采用了ORM的思想,对JDBC进行的 封装。

2)ORM:Object Relation Mapping,即对象关系 映射,指的是Java对象和关系数据库的映射。 --之前使用JDBC开发时,需要知道数据库表和实体 对象的关系,以及字段和对象属性的关系,比如

需要知道COST表和Cost对象的关系。那么这种 关系我们之前是手动维护的,比如: cost.setName(rs.getString("name")); ps.setString(2,cost.getName()); --ORM思想是希望将这种关系的维护提炼出来, 用一个公共的组件描述,那么在我们访问数据库 时,需要使用这种关系时,可以复用基于ORM 思想提炼出来的关系 --正是由于存在这样通用关系的描述,Hibernate 才可以让我们直接访问Java对象,从而通过 关系转换成SQL自动执行。 --Hibernate中将这种关系定义在XML配置文件中。

4、Hibernate体系结构

1)hibernate.cfg.xml

是Hibernate的主配置文件,用于配置数据库连接 参数,以及Hibernate框架参数。

2)实体类

是Java类型,用于封装表中的数据

3)xxx.hbm.xml

是关系映射文件,用于配置表与实体类的关系, 以及表中字段与类中属性的关系。

4)Hibernate底层API

主要是用于解析主配置文件,以及关系映射文件, 然后根据关系自动生成SQL并执行。

5、Hibernate常用API

1)Configuration

用于解析主配置文件的

2)SessionFactory

用于创建Session的

3)Session

是数据库连接会话,相当于是数据库连接。 注意:此Session和HttpSession没有任何关系。

4)Transaction

用于控制事务

5)Query

用于做特殊查询

*6、Hibernate使用步骤

1)导包

2)引入主配置文件hibernate.cfg.xml

3)创建实体类Emp

4)*创建关系映射文件Emp.hbm.xml

--该配置文件必须和实体类同名 --该配置文件必须和实体类位于同一个包下 --在主配置文件中引入该关系映射文件 5)使用Hibernate的API,来进行增、删、改、查

Spring

1.什么是Spring,有什么作用

Spring框架属于一个解决方案框架

可以对其他技术和框架进行整合

应用。

*好处是:将程序中的各个组件和

框架技术进行解耦,便于日后系统

维护,升级和扩展操作。

在SSH中,会将Action,DAO组件都

交给Spring框架管理,由Spring

框架创建这些对象,建立这些对象

关联。

*2.Spring都含有哪些功能

--可以创建和管理程序组件对象

(相当于工厂的作用)

--提供了IoC机制实现组件对象关系的解耦

--提供了AoP机制实现共通组件低耦合的调用。 (例如事务处理)

--提供了对其他技术,例如JDBC,

Hibernate,Struts等框架整合API

--提供了一个Spring MVC框架实现

*3.Spring基本使用

1)创建和管理程序组件对象

--引入Spring IOC开发包

--在src下添加Spring配置文件

--将Bean组件定义到Spring配置

文件中

--(编码)实例化Spring容器对象

利用getBean获取Bean对象实例

*a.控制Bean对象创建模式

在使用时,可以在<bean>定义

部分利用scope属性指定bean对象

采用单例模式创建还是原型模式

创建。

scope="singleton"表示单例模式

(默认值)

scope="prototype"表示原型模式, 每次调用getBean都返回一个新的 Bean对象。

b.控制Bean对象创建时机

scope="singleton"时,Bean对象

是在容器实例化时创建。

在<bean>中使用lazy-init="true"

可以将Bean创建推迟到getBean方法 scope="prototype"时,Bean对象 是在getBean方法时创建。

c.追加初始化和销毁方法

在<bean>中利用init-method指定 一个初始化方法。可以在对象创建 之后自动调用。

<bean init-method="myinit">

创建Bean对象后,会自动执行

myinit方法。

同理destroy-method="mydestroy" 在容器销毁时,也释放单例的Bean 对象,此时会自动调用mydesctory 方法。(该属性仅适用于singleton 模式的Bean对象)

2)Spring的核心IoC容器

a.IoC概念

Inversion of Control 控制反转

或反向控制(控制转移)

2004 Martin fowler提出的IoC思想.

IoC思想:两个组件之间调用(例如A调用B) 原有方式是A负责创建B对象;现在变成了 B对象由第三方框架或容器负责实例化, 然后给A对象注入。即A对象获取B对象的 方式发生了反转。

IoC技术方案有两种:依赖注入和依赖查找 Spring采用依赖注入技术实现IoC控制。 依赖技术主要以下两种方式:

--set方式注入(推荐)

在A中定义setB(B b),接收传进来的B对象 --构造方式注入

在A中定义构造方法 public A(B b){}

DI:Dependency Injection依赖注入

b.IoC使用方法

--编写Action,定义到Spring配置中 --编写DAO,定义到Spring配置中

--在Action中定义DAO接口类型变量和 setter方法

--在Action的<bean>配置中使用下面 配置

<bean id="addCostAction"...> <property name="属性名"

ref="要注入的Bean对象id值"> </property>

</bean>

更多相关推荐:
java项目总结

项目总结这是一次比较完整的团队合作项目,它要求团队各成员对系统的主体设计搭成一定的共识,这包括数据库设计,需求分析,以及其它一些细节,因此在编码之前的准备工作一定要充分。在设计之前,我们两组对于数据库的设计进行…

Java Web项目开发总结

1InAction1根据添加信息insert来考虑表中的字段进行建表使用PD画出ER图要注意字段的数据类型的确定以及建表要满足三范式减少数据冗余2表建好后根据表中各个字段来建pojo中的属性要注意属性的数据类型...

java开发日常总结_20xx0428

Java开发日常总结Java开发日常总结撰写作者王浩编写日期20xx年4月28日1Java开发日常总结目录1111111212112213131132133221211212213222324331311323...

Java应用项目开发总结报告_新

闽南师范大学计算机科学与工程系Java应用项目开发总结报告

java开发实训心得体会

伴随着新年钟声的到来,我不知道我是否是应该高兴还是悲伤。因为伴随自己三个月的华迪实训即将结束。转眼之间三个月的华迪实训就这样在忙碌中过去了。通过此次短暂的java开发习,回顾一下自己这三个月的每一天,觉得过的十…

java项目总结

DBHelp类packagecomxunpoitprodbimportjavasqlConnectionimportjavasqlDriverManagerimportjavasqlSQLExceptionim...

研发部java开发工程师20xx年工作总结

20xx年年度总结尊敬的领导您好在20xx年11月我很荣幸地进入公司加入了研发部Java技术开发团队认识了友善严谨的领导热心和睦且技术优秀的同事很是开心在这一年里通过自身的努力不断完善自己的知识结构向同事虚心请...

基于java技术的软件开发架构总结

基于java技术的软件开发架构总结在具体的实现中表现层可为StrutsJSF等业务层访问层可为JavaBean或EJB等资源层一般为数据库宏观上的层次就是这样在具体现实中有如下几种实现形式1轻量级实现表现层使用...

java总结

Java的基本数据类型byte占1个字节默认值为0封装类Bytechar占2个字节默认值为u0000封装类Charactarint占4个字节默认值为0封装类Integerfloat占4个字节默认值为0封装类Fl...

总结java socket编程

总结javasocket编程一网络编程中两个主要的问题一个是如何准确的定位网络上一台或多台主机另一个就是找到主机后如何可靠高效的进行数据传输在TCPIP协议中IP层主要负责网络主机的定位数据传输的路由由IP地址...

陕西西安北大青鸟培训学习:Java开发中文件读取方式华美校区总结

1JAVA开发中免不了要读文件操作读取文件首先就需要获取文件的路径路径分为绝对路径和相对路径在文件系统中绝对路径都是以盘符开始的例如Cabc1txt什么是相对路径呢相对路径就是相对与其他文件的路径比如说有这么一...

总结java_socket编程

总结javasocket编程一网络编程中两个主要的问题一个是如何准确的定位网络上一台或多台主机另一个就是找到主机后如何可靠高效的进行数据传输在TCPIP协议中IP层主要负责网络主机的定位数据传输的路由由IP地址...

java开发总结(23篇)