Java框架SpringIOC笔记.docx

上传人:b****7 文档编号:16255766 上传时间:2023-07-12 格式:DOCX 页数:19 大小:21.02KB
下载 相关 举报
Java框架SpringIOC笔记.docx_第1页
第1页 / 共19页
Java框架SpringIOC笔记.docx_第2页
第2页 / 共19页
Java框架SpringIOC笔记.docx_第3页
第3页 / 共19页
Java框架SpringIOC笔记.docx_第4页
第4页 / 共19页
Java框架SpringIOC笔记.docx_第5页
第5页 / 共19页
Java框架SpringIOC笔记.docx_第6页
第6页 / 共19页
Java框架SpringIOC笔记.docx_第7页
第7页 / 共19页
Java框架SpringIOC笔记.docx_第8页
第8页 / 共19页
Java框架SpringIOC笔记.docx_第9页
第9页 / 共19页
Java框架SpringIOC笔记.docx_第10页
第10页 / 共19页
Java框架SpringIOC笔记.docx_第11页
第11页 / 共19页
Java框架SpringIOC笔记.docx_第12页
第12页 / 共19页
Java框架SpringIOC笔记.docx_第13页
第13页 / 共19页
Java框架SpringIOC笔记.docx_第14页
第14页 / 共19页
Java框架SpringIOC笔记.docx_第15页
第15页 / 共19页
Java框架SpringIOC笔记.docx_第16页
第16页 / 共19页
Java框架SpringIOC笔记.docx_第17页
第17页 / 共19页
Java框架SpringIOC笔记.docx_第18页
第18页 / 共19页
Java框架SpringIOC笔记.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Java框架SpringIOC笔记.docx

《Java框架SpringIOC笔记.docx》由会员分享,可在线阅读,更多相关《Java框架SpringIOC笔记.docx(19页珍藏版)》请在冰点文库上搜索。

Java框架SpringIOC笔记.docx

Java框架SpringIOC笔记

Day01:

梁建全:

liangjq@

=================

1.框架学习

a.框架有什么作用,能帮我们做什么

b.帮我做了哪些事,需要我们配合做哪些事

c.熟悉框架的设计思想,至于如何实现

以后再去考虑

d.练习时多练习几遍,掌握开发主要步骤

======Spring框架========

1.Spring框架作用

*a.SpringCore(IOC功能)

b.SpringAOP功能

(管理组件对象,维护对象关系,目的:

降低组件耦合度)

c.SpringWebMVC功能

(MVC设计,

目的:

架构一个MVC结构的Web程序)

d.Spring整合其他技术,例如JDBC,MyBatis,Hibernate,Struts等

Spring-->整合API-->调用原有技术API

在Spring中使用整合API编程

Spring-->JdbcTemplate-->Connection,StatemenJdbcTemplate.update(sql,params);

请求-->Servlet-->Service-->多个Dao-》JSP

EmpService

EmpDaodao=newEmpDao();

dao.save();

 

2.SpringIOC应用

a.管理对象

创建、初始化、释放资源、销毁

b.维护对象关系

采用注入方式建立对象关系.

DependencyInjection(DI)依赖注入

依赖注入:

set方法注入,构造器注入

c.搭建SpringIOC开发环境

--引入相关jar包

--在src添加applicationContext.xml

 

ApplicationContext容器对象

-->applicationContext.xml-->

 

List-->存取对象的集合

a.创建List对象

b.往List添加对象元素

c.从List取对象元素

Spring容器-->管理组件及对象关系

a.创建ApplicationContext对象

b.向applicationContext.xml配置

c.利用ApplicationContext对象getBean()

2.Spring创建Bean对象的控制

*a.控制对象创建方式(使用范围)

元素中使用scope属性控制

scope可以支持singleton或prototype

默认值是singleton

该组件在Spring

容器里只有一个bean对象

该组件每次

ac.getBean("id");都返回一个新的对象.

b.指定对象初始化方法

利用元素的init-method指定。

当创建对象后自动执行init-method方法

c.指定对象销毁方法

利用元素的destroy-method指定。

满足下面条件才有效

--组件对象为单例模式

--调用AbstractApplicationContext容器

对象的close()方法

d.控制单例对象创建时机

在默认情况下,单例对象是Spring容器创建时实例化;可以使用元素的

lazy-init=true属性将创建时机推迟到

getBean()方法调用时.

 

IOC概念:

InversionofControl控制反转或反向控制

控制反转:

改变了对象获取方式.之前编码方式采用new构造器方式获取对象;ioc中

采用由容器创建对象之后注入进来使用。

只要修改配置就可以改变对象关系

Day02:

1.自动注入

用于指定自动注入规则.可以使用byType,byName,constructor等.用于简化注入配置.

使用byType类型匹配注入需要注意,有2个及其以上匹配会出异常。

2.各种类型信息的注入配置格式

*a.注入字符串,数值单个数值

*b.注入bean对象

c.注入集合*list,set,map,*properties

d.spring表达式注入

#{表达式}

#{id名.属性}或#{id名.key}

如果是对象属性,需要有getXXX方法

3.利用注解配置应用IOC

在JDK5.0时追加一些新特性

List

for(Strings:

list)

Integeri=10;

注解:

在类定义,方法定义,成员变量定义前面使用,格式为@注解标记名

publicvoidf1(String..s)

a.组件自动扫描

可以按指定的包路径,将包下所有组件扫描,如果发现组件类定义前有以下标记,

会将组件扫描到Spring容器.

@Component//其他组件

@Controller//控制层组件

@Service//业务层组件xxxService

@Repository//数据访问层组件xxxDao

@Named(需要引入第三方标准包)

@Scope控制对象创建.默认单例

@PostConstruct指定init-method

@PreDestroy指定destroy-method

b.注入注解

@Resource:

可以在变量定义前或setXX方法前应用

@Autowired:

可以在变量定义前或setXX方法前应用

一般使用时,功能等价,都可以实现注入。

如果不存在多个匹配类型,使用@Resource

或@Autowired都可以。

如果存在多个匹配类型,建议按名称注入

@Resource(name="指定名称")或

@Autowired

@Qualifier("p")

如果指定名称注入,不会再按类型匹配注入。

Day03:

 

xx

 

listid="">

setid="">

mapid="">

propertiesid="">

#{bean对象id.属性}-->属性getXXX

#{map对象id.key}

#{map对象id['key']}

#{List对象id[0]}

@Resource(name="xxx")//强制按名称

@Autowired

@Qulifier("xxx")//强制按名称

@ResourcesetXxx

@AutowiredsetXxx(Stringxx)

使用建议:

set注入建议用@Resource构造器建议用Autowired

SpringIOC应用:

自己编写的组件建议使用注解配置;框架API只能用XML配置

IOC:

以注入方式应用对象,实现组件解耦

=========SpringWebMVC==========

SpringWebMVC需要使用IOC功能。

用于开发MVC结构的Web程序。

1.MVC思想

将程序组件分为模型,视图,控制器三部分。

2.Spring如何实现MVC

*3.SpringWebMVC处理流程

案例:

hello示例

/hello.do--springwebmvc-->/WEB-INF/hello.jsp

/hello.do

-->DispatcherServlet(配置)

-->HanlderMapping(配置)

-->HelloController(编写+配置)

-->ViewResolver(配置)

-->/WEB-INF/hello.jsp(编写)

a.搭建SpringWebMVC开发环境

--引入ioc,webmvc开发包

--src下添加applicationContext.xml

b.编写HelloController实现规则:

实现Controller接口

 

====================

2.显示登录页面

/tologin.do

-->DispatcherServlet

-->handlermappping

-->ToLoginController

-->ViewResolver

-->/WEB-INF/login.jsp

3.单击登录按钮处理

/login.do(提交表单)

-->DispatcherServlet

-->handlermapping

-->LoginController

(获取提交的用户名和密码,如果用户名为root,密码为1234认为正确,否则错误)

-->ViewResolver

-->错误进入/WEB-INF/login.jsp

正确进入/WEB-INF/ok.jsp

Day04:

 

======SpringWebMVC注解应用=======

a.RequestMappingHanlderMapping组件

@RequestMapping("/login.do")

该标记用在Controller业务方法前

b.Controller编写和配置

取消了实现Controller接口及方法约定

可以允许程序员按需要灵活定义业务方法

publicModelAndView或String

方法名(根据需要定义request,session,response)

(Controller需要扫描到Spring容器,必须使用@Controller)

 

/hello.do

-->DispatcherServlet

-->HandlerMapping

-->HelloController

-->ViewResolver

-->hello.jsp

//进入登录页面

/tologin.do

-->DispatcherServlet

-->Handlermapping

-->LoginController.toLogin

-->ViewResolver

-->login.jsp

/login.do

-->DispatcherServlet

-->Handlermapping

-->LoginController.checkLogin

-->ViewResolver

-->错误login.jsp/正确ok.jsp

========================

1.Controller如何接收请求参数

a.利用HttpServletRequest

*b.利用业务方法参数

--方法参数名与请求参数key保持一致

--利用@RequestParam("key")

*c.利用实体对象当方法参数

使用建议:

少量参数使用b;大量参数使用c

如果客户端表单数据没有格式检查,

遇到非字符串类型参数建议使用a

2.Controller如何向响应JSP传值

*a.利用HttpServletRequest

b.利用ModelAndView做返回值

*c.利用ModelMap方法参数

d.使用@ModelAttribute("key")

publicStringcheckLogin(

@ModelAttribute("user")Stringusername){

return"ok";//ok.jsp使用${user}

}

@ModelAttribute("user")

publicStringgetName(){

return"tom";

}

model.put("user",getName());//${user}

3.Controller如何使用Session

publicStringcheckLogin(

HttpServletRequestrequest){

HttpSessionsession=request.getSession();

session.setAttribute(key,value);

}

publicStringcheckLogin(

HttpSessionsession){

session.setAttribute(key,value);

}

========================

案例:

列表显示功能

/list.do

-->DispatcherServlet

-->Handlermapping

-->ListController

(构建一个List,传递到list.jsp)

-->ViewResolver

-->/WEB-INF/list.jsp(JSTL

foreach>)

Listlist=newArrayList();

for(inti=0;i<10;i++){

Useruser=newUser();

user.setUsername("tom"+i);

user.setPassword("1234"+i);

list.add(user);

}

Day05:

1.任务:

实现登录功能

采用技术:

SpringMVC,SpringIOC,dbcp连接池

SpringMVC:

快速构建MVC结构的程序利用它实现接收请求分发处理的控制

SpringIOC:

管理程序Controller,Dao组件实现解耦

dbcp:

用于管理connection连接

可以控制连接数;

可以避免频繁创建和释放连接

============================

a.搭建开发环境

--jar包

--xml配置文件src/applicationContext.xml

b.设计请求--响应处理流程

/login.do

-->DispatcherServlet(配置)

-->HanlderMapping(配置)

-->LoginController.checkLogin(编写+配置)

-->UserDao(编写+配置)

-->DataSource(dbcp)(配置)

-->user表(查询)

-->ViewResolver(配置)

-->ok.jsp/login.jsp(编写)

c.实现UserDao

--实体类

--UserDao接口及其实现

--配置UserDao-->DataSource

--测试

d.实现LoginController

--编写实现

--配置Controller

--测试

e.配置MVC处理

--配置DispatcherServlet

--配置HanlderMapping

--配置ViewResolver

d.JSP实现

请求-->Filter-->Servlet-->Controller

==========================

2.中文POST提交乱码问题

a.Controller接收乱码

解决方法:

web.xml配置CharacterEncodingFilter

b.写入数据库乱码

解决方法:

url连接字符串,添加

xxx?

useUnicode=true&characterEncoding=utf8

c.查看建表语句,设置建表编码

showcreatetablexxx;//查看

createtablexxx...

defaultcharset=utf8;

3.MVC异常处理

*a.全局异常处理

所有Controller异常都可以交给

SimpleMappingExceptionResolver

*b.局部异常处理

处理某一个Controller异常

在Controller中定义下面方法

@ExceptionHanlder

publicStringxxx(

HttpServletRequestrequest,

Exceptionex){

//异常处理逻辑

return"异常页面名";

}

Day06:

1.Spring与JDBC整合应用

a.提供了编写DAO的工具类

JdbcTemplate

JdbcTemplate.update("insert..",参数);

JdbcTemplate.query();

JdbcTemplate.queryForObject();

selectcount(*)fromemp

introws=JdbcTemplate.queryForInt();

b.提供了AOP式事务管理

(不需要在方法中追加事务提交和回滚)

c.提供了统一的异常处理

DataAccessException

2.Spring整合JDBC步骤

a.搭建spring+jdbc开发环境

引入spring(ioc,aop,dao)开发包

添加src/applicationContext.xml

数据库驱动,dbcp连接池

*b.编写实体类Emp

*c.编写EmpDAO组件

*d.在applicationContext.xml中

扫描EmpDAO,注入JdbcTemplate对象

DBCP()-->JdbcTemplate(

-->EmpDao(扫描)

=======单独使用JDBC=======

a.引入驱动包

b.编写DBUtil

c.编写实体类Emp

d.编写EmpDao

 

==========================

createtablecost(

cost_idintprimarykey,

namevarchar(50)notnull,

base_durationlong,

base_costdouble,

unit_costdouble,

statuschar

(1),

descrvarchar(100),

creatimedate,

startimedate,

cost_typechar

(1)

);

INSERTINTOCOSTVALUES(1,'5.9元套餐',20,5.9,0.4,0,'5.9元20小时/月,超出部分0.4元/时',DEFAULT,DEFAULT,NULL);

INSERTINTOCOSTVALUES(2,'6.9元套餐',40,6.9,0.3,0,'6.9元40小时/月,超出部分0.3元/时',DEFAULT,DEFAULT,NULL);

INSERTINTOCOSTVALUES(3,'8.5元套餐',100,8.5,0.2,0,'8.5元100小时/月,超出部分0.2元/时',DEFAULT,DEFAULT,NULL);

INSERTINTOCOSTVALUES(4,'10.5元套餐',200,10.5,0.1,0,'10.5元200小时/月,超出部分0.1元/时',DEFAULT,DEFAULT,NULL);

INSERTINTOCOSTVALUES(5,'计时收费',null,null,0.5,0,'0.5元/时,不使用不收费',DEFAULT,DEFAULT,NULL);

INSERTINTOCOSTVALUES(6,'包月',null,20,null,0,'每月20元,不限制使用时间',DEFAULT,DEFAULT,NULL);

INSERTINTOCOSTVALUES(7,'mm',10,5,null,0,'',DEFAULT,DEFAULT,NULL);

INSERTINTOCOSTVALUES(8,'nn',10,7,null,0,'',DEFAULT,DEFAULT,NULL);

INSERTINTOCOSTVALUES(9,'qq',10,4,null,0,'',DEFAULT,DEFAULT,NULL);

COMMIT;

Day07:

======MyBatis框架=========

1.MyBatis简介

MyBatis-->iBatis

MyBatis:

封装了JDBC应用,简化了JDBC编程。

--封装了连接获取,生成statement,

执行sql,释放连接过程

--封装了将查询结果转换成实体对象

(需要字段名和实体属性名对应)

--封装了实体对象参数跟SQL中?

映射过程

insertintouser(username,pwd,name)

values(#{属性名},#{属性名},#{属性名})

--封装了根据Mapper接口(Dao)生成实现组件过程

使用MyBatis开发者只需要做一下工作

--搭建MyBatis开发环境

--编写SQL语句

--编写Mapper接口

--使用SqlSession对象触发增删改查操作

2.MyBatis使用

createtablecost(

cost_idintprimarykeyauto_increment,

namevarchar(50)notnull,

base_durationlong,

base_costdouble,

unit_costdouble,

statuschar

(1),

descrvarchar(100),

creatimedate,

startimedate,

cost_typechar

(1)

)defaultcharset=utf8;

 

a.搭建Mybatis开发环境

--引入mybatis.jar和数据库驱动包

--src下添加主配置文件SqlMapConfig.xml

b.获取SqlSession对象资源

c.对表做操作

--编写实体类

--定义SQL语句

--利用SqlSession操作SQL

selectcost_id,name

fromcostwherecost_id=1;

d.Mapper映射器接口(规范)

--方法名与SQL定义的id属性一致

--方法参数类型与SQl定义的parameterType属性一致

--方法返回类型参考SQL定义的resultType

--在SQL定义文件的

namespace指定对应的接口类型

 

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2