struts1+ hibernate3

44
1邓文俊 ([email protected]) 清华大学教育技术研究 Struts Hibernate 原理与应用

Upload: edanwade

Post on 15-Jul-2015

155 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Struts1+ hibernate3

第 1页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 和 Hibernate

原理与应用

Page 2: Struts1+ hibernate3

第 2页

邓文俊 ([email protected]) 清华大学教育技术研究所

内容

• Struts• Hibernate

Page 3: Struts1+ hibernate3

第 3页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts

Page 4: Struts1+ hibernate3

第 4页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 是一个基于 MVC 的框架。

An open source framework for building Servlet/JSP based web applications based on the Model-View-Controller (MVC) design paradigm

Page 5: Struts1+ hibernate3

第 5页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 是一个基于 MVC 的框架

Page 6: Struts1+ hibernate3

第 6页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 是一个基于 MVC 的

框架:

1 、完成一项工作;

2 、定义一个流程;

3 、包含若干组件。

框架

Page 7: Struts1+ hibernate3

第 7页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 是一个基于 MVC 的

现场报名处

报名网站

学校封装

考试

1

2

3

框架:

1 、完成一项工作;

2 、定义一个流程;

3 、包含若干组件。

框架

Page 8: Struts1+ hibernate3

第 8页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 是一个基于 MVC 的

现场报名处

报名网站

学校封装

考试

1

2

3

框架:

1 、完成一项工作;

2 、定义一个流程;

3 、包含若干组件。

框架

考研

网报,现场报,考试

网站,报名处,学校

Page 9: Struts1+ hibernate3

第 9页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 是一个基于 MVC 的框架

框架 软件框架

工作 程序

流程 设计模式

组件 对象

Page 10: Struts1+ hibernate3

第 10页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 是一个基于 MVC 的

现场报名处

报名网站

学校封装

考试

1

2

3

框架

框架 代码框架

工作 程序

流程 设计模式

组件 对象

Page 11: Struts1+ hibernate3

第 11页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 是一个基于 MVC 的

现场报名处

报名网站

学校封装

考试

1

2

3

框架

+网上报名()+现场报名()+考试()

考研

+提供个人信息()

-个人信息

+安排考场()+监考()+改卷()

学校

+照相()+收费()+封装并快递报名信息()

报名点

+审核个人信息()+安排考点()+安排报名点()

国家行政部门

应届 非应届

1

1

1

*

1

*

1

*

框架 代码框架

工作 程序

流程 设计模式

组件 对象

Page 12: Struts1+ hibernate3

第 12页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 是一个基于 的框架MVC

Page 13: Struts1+ hibernate3

第 13页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 是一个基于 的框架MVC

MVC :

•View 显示

•Control 控制、分发

•Model 内容、数据

Page 14: Struts1+ hibernate3

第 14页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 是一个基于 的框架MVC

MVC :

•View 显示

•Control 控制、分发

•Model 内容、数据

V吃

M食物

C分发食物

食堂

你菜 厨师

打饭打菜的师傅

打饭打菜的师傅

打饭打菜的师傅

窗口一

窗口二

窗口三

Page 15: Struts1+ hibernate3

第 15页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 是一个基于 的框架MVC

MVC :

•View 显示

•Control 控制、分发

•Model 内容、数据

MVC 框架:

•工作:根据浏览器要求,获取并显示数据。

•流程:访问请求流分发请求分获取数据获显示数据

•组件

●View

●Control

●Model

Page 16: Struts1+ hibernate3

第 16页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 如何实现 MVC 框架

ClientBrowse

ActionServlet

JSP

Action

Data

ActionForm

Request

Response

填充

获取/填充

Request

获取

获取

Request

1

2

3

4

5

8

6

9

返回

7

V

C

M

Page 17: Struts1+ hibernate3

第 17页

邓文俊 ([email protected]) 清华大学教育技术研究所

我需要做什么?

ClientBrowse

ActionServlet

JSP

Action

Data

ActionForm

Request

Response

填充

获取/填充

Request

获取

获取

Request

1

返回

Web.xml

2

Struts-config.xml3

4

Page 18: Struts1+ hibernate3

第 18页

邓文俊 ([email protected]) 清华大学教育技术研究所

我需要做什么?①

Page 19: Struts1+ hibernate3

第 19页

邓文俊 ([email protected]) 清华大学教育技术研究所

我需要做什么?①……

<servlet>

<servlet-name>action</servlet-name>

<servlet-class>

org.apache.struts.action.ActionServlet

</servlet-class>

<init-param>

<param-name>config</param-name>

<param-value>

/WEB-INF/home/struts/config/struts-config.xml

</param-value>

</init-param>

</servlet>

……

<servlet-mapping>

<servlet-name> action</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

……

Page 20: Struts1+ hibernate3

第 20页

邓文俊 ([email protected]) 清华大学教育技术研究所

我需要做什么?

ClientBrowse

ActionServlet

JSP

Action

Data

ActionForm

Request

Response

填充

获取/填充

Request

获取

获取

Request

1

返回

Web.xml

2

Struts-config.xml3

4

Page 21: Struts1+ hibernate3

第 21页

邓文俊 ([email protected]) 清华大学教育技术研究所

我需要做什么?②

Page 22: Struts1+ hibernate3

第 22页

邓文俊 ([email protected]) 清华大学教育技术研究所

我需要做什么?②<struts-config>

<form-beans>

<form-bean

name="edanForm"

type="org.edanwade.EdanForm"/>

</form-beans>

<action-mappings >

<action

path="/edanPath2“ name="edanForm"

validate = "false“ scope="request"

type=" org.edanwade.EdanAction" >

<forward name="forward"

path="/default.jsp" />

<forward name="transform"

path="/edanPath1.do" redirect="true"/>

</action>

</action-mappings >

</struts-config>

Page 23: Struts1+ hibernate3

第 23页

邓文俊 ([email protected]) 清华大学教育技术研究所

我需要做什么?

ClientBrowse

ActionServlet

JSP

Action

Data

ActionForm

Request

Response

填充

获取/填充

Request

获取

获取

Request

1

返回

Web.xml

2

Struts-config.xml3

4

Page 24: Struts1+ hibernate3

第 24页

邓文俊 ([email protected]) 清华大学教育技术研究所

我需要做什么?③

Page 25: Struts1+ hibernate3

第 25页

邓文俊 ([email protected]) 清华大学教育技术研究所

我需要做什么?③

public class EdanAction extends Action{

public ActionForward execute(

ActionMapping actionMapping,

ActionForm actionForm,

HttpServletRequest httpServletRequest,

HttpServletResponse httpServletResponse) throws Exception {

……

……

}

}

Page 26: Struts1+ hibernate3

第 26页

邓文俊 ([email protected]) 清华大学教育技术研究所

我需要做什么?

ClientBrowse

ActionServlet

JSP

Action

Data

ActionForm

Request

Response

填充

获取/填充

Request

获取

获取

Request

1

返回

Web.xml

2

Struts-config.xml3

4

Page 27: Struts1+ hibernate3

第 27页

邓文俊 ([email protected]) 清华大学教育技术研究所

我需要做什么?④

Page 28: Struts1+ hibernate3

第 28页

邓文俊 ([email protected]) 清华大学教育技术研究所

我需要做什么?④

<td>

<spring:message code="label.edanwade.title"/>

<span class="select">

<html:select property=“propName" onchange="changeAction()">

<html:optionsCollection property=“propList" label="name" value="id"/>

</html:select>

</span>

</td>

Page 29: Struts1+ hibernate3

第 29页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 不是全部。还需要什么知识和技能?

1. Request 与 Response

2. JSP 页面

● EL 表达式

● JSTL 标签

● 自定义标签

3. Valuelist

4.国际化

Page 30: Struts1+ hibernate3

第 30页

邓文俊 ([email protected]) 清华大学教育技术研究所

Struts 小结

• 核心

● MVC

● M: javaBean

● V: JSP

● C: Action + struts-config.xml

Page 31: Struts1+ hibernate3

第 31页

邓文俊 ([email protected]) 清华大学教育技术研究所

Hibernate

Page 32: Struts1+ hibernate3

第 32页

邓文俊 ([email protected]) 清华大学教育技术研究所

Hibernate 是关系数据库持久化方案。Hibernate - Relational Persistence for Idiomatic Java

Page 33: Struts1+ hibernate3

第 33页

邓文俊 ([email protected]) 清华大学教育技术研究所

Hibernate 是 持久化方案。

关系数据库

Page 34: Struts1+ hibernate3

第 34页

邓文俊 ([email protected]) 清华大学教育技术研究所

Hibernate 是 持久化方案。

关系数据库

关系数据库:

1 、关系:二维表

2 、数据库:存关系,管理关系

Page 35: Struts1+ hibernate3

第 35页

邓文俊 ([email protected]) 清华大学教育技术研究所

Hibernate 是关系数据库 方案。

持久化

Page 36: Struts1+ hibernate3

第 36页

邓文俊 ([email protected]) 清华大学教育技术研究所

Hibernate 是关系数据库 方案。

持久化

持久化:

1 、持久:断电后仍有。

2 、持久化

● 从内存到硬盘。

● 从对象到关系。

Page 37: Struts1+ hibernate3

第 37页

邓文俊 ([email protected]) 清华大学教育技术研究所

Hibernate 的核心:对象 - 关系的映射

Page 38: Struts1+ hibernate3

第 38页

邓文俊 ([email protected]) 清华大学教育技术研究所

Hibernate 的核心:对象 - 关系的映射对象 - 关系 的映射:2. 映射: HBM.XML 文件3. 查询: HQL 和 SQL4. 操作: update 、 saveOrUPdate() 、 delete()

Page 39: Struts1+ hibernate3

第 39页

邓文俊 ([email protected]) 清华大学教育技术研究所

public class Customer { private int id; private String username; private String password;

public int getId() { return id; } public void setId(int id) { this.id = id; } …… }

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping> <class name="Customer" table="CUSTOMER"> <id name="id" column="CID"> <generator class="increment" /> </id> <property name="username" column="USERNAME" /> <property name="password" column="PASSWORD" /> </class></hibernate-mapping>

1. 映射:基础

CREATE TABLE CUSTOMER( CID INTEGER NOT NULL PRIMARY KEY, USERNAME VARCHAR(12) NOT NULL, PASSWORD VARCHAR(12) );

Page 40: Struts1+ hibernate3

第 40页

邓文俊 ([email protected]) 清华大学教育技术研究所

HQL:

Query query = session.createQuery("from Customer as c");

List customers = query.list();

2. 查询: HQL 与 SQL

SQL:

Query query = session.createSQLQuery(“select * from customer");

List customers = query.list();

Page 41: Struts1+ hibernate3

第 41页

邓文俊 ([email protected]) 清华大学教育技术研究所

3. 操作

临时状态

持久化状态

游离状态

New()

get()load()

query.list

save()saveOrUpdate()

persist()merge()

evict()close()clear()

save()saveOrUpdate()

delete()

Page 42: Struts1+ hibernate3

第 42页

邓文俊 ([email protected]) 清华大学教育技术研究所

public class Customer { private int userid; private String username; private String password; private Set orders = new HashSet();

public int getId() { return id; } public void setId(int id) { this.id = id; } …… }

<hibernate-mapping> <class name="Customer" table="CUSTOMER"> <id name=“userid" column=“USERID"> <generator class="increment" /> </id> <property name="username" column="USERNAME" /> <property name="password" column="PASSWORD" /> <set name="orders"> <key column=“userid "/> <one-to-many class=“order"/> </set> </class></hibernate-mapping>

4. 映射:关系CREATE TABLE CUSTOMER( USERID INTEGER NOT NULL PRIMARY KEY, USERNAME VARCHAR(12) NOT NULL, PASSWORD VARCHAR(12));

Page 43: Struts1+ hibernate3

第 43页

邓文俊 ([email protected]) 清华大学教育技术研究所

Hibernate 小结

• 核心:

● 数据映射,配置 XML

● 数据获取, HQL 与 SQL

Page 44: Struts1+ hibernate3

第 44页

邓文俊 ([email protected]) 清华大学教育技术研究所

谢谢