文档库 最新最全的文档下载
当前位置:文档库 › 仿hibernate,spring框架手动写

仿hibernate,spring框架手动写

仿hibernate,spring框架手动写
仿hibernate,spring框架手动写

最近学习了hibernate 底层技术和spring 的底层技术,觉得很不错,所以想分享下

,要是说的不够详细,可以去下载资源自己查看下载链接

技术的体现是在实际中的。现在大体介绍一下吧

首先介绍hibernate 手动写:

仿HIBERNATE

hibernate 是属于DAO,专门又来管理数据的,connection 中还要考虑多线程的情况,同一个线程还要必须要是相同的connection 对象,这就需要ThreadLocal 来实 现。

1,connection 考虑需要多线程,需要采用多例模式来实现,

2,读取配置文件,如真的hibernate 中的配置文件(自己写的只有mysqld 的)

3,当需要进行事物处理的时,需要采用同一个connection 对象,需要用到ThreadLocal 对象进行设置

4,当connection 关闭时,而不是直接关闭,只是将其还回线程池中。

具体代码呈上:

/*

* 我们需要采用线程池避免线程冲突,多例模式----》获得时候需要上锁

* pool 中的数量是有限的,我们采用了代理模式,修改 con.close(),将连接换回来

* 为了保证统一线程是一个用户,我们采用threadlocal 本地线程技术

*/

public class hibernateFactory2 {

private static final int NUM=3;

private static List pool =new ArrayList();

private static ThreadLocal t=new ThreadLocal< static{

//读取配置文件

Properties p =new Properties();

try {

p.load(hibernateFactory2.class.getClassLoader().getResourceAsStream("jdbc.properties")); //读取里面的值,一直修改配置文件即可

String driver=p.getProperty("driver");

String url=p.getProperty("url");

String user=p.getProperty("username");

String password=p.getProperty("password");

//System.out.println(driver+url+user+password);

Class.forName(driver);

for(int i=0;i

final Connection con=DriverManager.getConnection(url, user, password);

//采用动态代理开始进行对 Object o =Proxy.newProxyInstance(hibernateFactory2.class.getClassLoader(), new Class[]{C new InvocationHandler() {

@Override

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

if(method.getName().equals("close")){

pool.add((Connection)(proxy));

System.out.println("换回来了。。。");

return null;

}

return method.invoke(con, args);

}

});

pool.add((Connection)o);

}

// System.out.println("初始化完毕"+con);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static synchronized Connection getCon() throws Exception{

/*

* 把自动会到一个它所维护的那个map 中去取,把以“当前线程对象”为key 所对应的

那个

Connection c=t.get();

if(c==null){

while(pool.size()<=0){

System.out.println("池中已经乜有连接");

Thread.sleep(1000);

}

c=pool.remove(0);//为事物处理方便了,当出现错误的时候,多表一个都不能存储。采用一个connection

t.set(c);

}

return c;

}

}

仿Spring

这一层基本上进行的是业务逻辑处理

1,刚开始时候,将事务处理写在这一层,但是对于单个的函数的,每一个需要写,代码太繁琐了,所以直接将从servlet转到service的时候(切面技术),采用代理模式代理一下,在代理模式里面,我们采用进行事物处理,需要的我们拦截进行事物处理,不需要的,我们直接放行,做他自己的事情。

2,在使用代理模式的时候,为了让外面注入不需要强转,proxy里面采用了泛型的引入。

具体代码呈上:

public class Tx implements InvocationHandler{

private Object srcobj;

private Object returnValue;

public Tx(Object srcobj) {

this.srcobj=srcobj;

}

//这里写的是通用版本,代理模式

//这个需要强转,所以引入了下面的那个不需要强转

// public static Object getProxy(Object srcobj){

// Object o =Proxy.newProxyInstance(

// Tx.class.getClassLoader(),

// srcobj.getClass().getInterfaces(),

// new Tx(srcobj));

// return o;

// }

/*

* 下面这个是升级版本,返回的类型不用强转

*/

public static T getProxy(Object srcobj){

Object o =Proxy.newProxyInstance(

Tx.class.getClassLoader(),

srcobj.getClass().getInterfaces(),

new Tx(srcobj));

return (T)o;

}

@Override

public Object invoke(Object proxy, Method method, Object[] args)

throws Throwable {

//所有的代理在这里开始

Connection con=null;

if(method.isAnnotationPresent(MyTrans.class)){//这里采用注解的方式

System.out.println("被拦截了");

try {

con =hibernateFactory2.getCon();

con.setAutoCommit(false);

returnValue=method.invoke(srcobj, args);//调用被代理的自己去执行

https://www.wendangku.net/doc/ab13528510.html,mit();

System.out.println("事物提交成功");

} catch (Exception e) {

try {

System.out.println("回滚了"+e.getMessage());

con.rollback();

}catch (SQLException e1) {

throw new RuntimeException("回滚失败"+e.getMessage());

}

}finally{

try {

con.setAutoCommit(true);

con.close();//这里关闭,是还回池中,采用代理模式修改过

}catch (SQLException e) {

throw new RuntimeException("关闭数据库连接失败11"+e.getMessage());

}

}

}else{

System.out.println("不拦截,放行!!");

return method.invoke(srcobj, args);

return returnValue;

}

}

这是自己写的注解类

package cn.hncu.publs.tx;

import https://www.wendangku.net/doc/ab13528510.html,ng.annotation.ElementType;

import https://www.wendangku.net/doc/ab13528510.html,ng.annotation.Retention;

import https://www.wendangku.net/doc/ab13528510.html,ng.annotation.RetentionPolicy;

import https://www.wendangku.net/doc/ab13528510.html,ng.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)//作用于运行时,默认在编译器@Target(value=ElementType.METHOD)//作用于方法

public @interface MyTrans {

}

源代码已上传下载链接

欢迎各位大神指点

Sofa学习总结

Sofa学习总结 作者版本时间 吕方V0.0.12008-11-13

1.搭建sofa平台运行环境: 首先需要对从confluence中下载一个支持包,地址: https://www.wendangku.net/doc/ab13528510.html,:8080/pages/viewpage.action?pageId=3703045 或者直接使用链接: https://www.wendangku.net/doc/ab13528510.html,:8080/download/attachments/3703045/sofa-cor e-archetype.zip 下载后解压工程,然后Maven打包并install到本地资源仓库中。如果没有将这个小工程放到Maven的本地资源仓库中则后面操作都会有很多小麻烦。接下来开始建立一个小的sofa平台: step1:运行命令:E:\>mvn ar chetype:generate-DarchetypeCatalog=local 运行后命令行内容提示如下: step2:根据提示,输入信息如下:Choose a number:(1):1 继续执行,提示输入内容如下:Define value for sofa_app_name::demo 继续执行,提示输入内容如下:Define value for ar tifactId::demo 继续执行,如果不想改变版本信息,就直接留空不用输入任何信息,直接往下执行。 运行后命令行提示内容如下:

step4:生成eclispe工程,导入IDE,可以导入9个子工程。其中demo-test-test工程用于测试 step5:对com.alipay.sofa.demo.test.service.T estDemoCalcFacade类进行修改。 找到代码: 修改后如下: 运行测试用例,进行环境测试。如果通过则说明平台搭建OK了。 2.demo-cor e-engine使用总结: a.关于demo-core-engine.xml: 其中扩展点名字为:executor 在生成好的demo中,engine向下提供了一个扩展点。所有的扩展点都被封装成了一个com.alipay.sofa.demo.cor e.engine.api.DemoCalcExecutorDescr iptor对象。 其中的annotation为各个扩展提供了配置的节点关系及相关属性。如DemoCalcExecutor Descr iptor类中:

hibernate架构图

.Hibernate 架构图 Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC 进行了非常轻量级的对象封装,使得Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate 可以应用在任何使用JDBC 的场合,既可以在Java 的客户端程序使用,也可以在Servlet/JSP 的Web 应用中使用,最具革命意义的是,Hibernate 可以在应用EJB 的J2EE 架构中取代CMP ,完成数据持久化的重任。 Hibernate 的核心接口一共有5 个,分别为:Session 、SessionFactory、Transaction 、Query 和Configuration 。这5 个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。 ·Session 接口:Session 接口负责执行被持久化对象的CRUD 操作(CRUD 的任务是完成与数据库的交流,包含了很多常见的SQL 语句。) 。但需要注意的是Session 对象是非线程安全的。同时,Hibernate 的session 不同于JSP 应用中的HttpSession 。这里当使用session 这个术语时,其实指的是Hibernate 中的session ,而以后会将HttpSesion 对象称为用户session 。 ·SessionFactory 接口:SessionFactory 接口负责初始化Hibernate 。它充当数据存储源的代理,并负责创建Session 对象。这里用到了工厂模式。需要注意的是SessionFactory 并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory 就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory 。

Spring MVC使用总结

Org . springframework . ui . ModelMap传递数据供视图所用 ${base}取的是当前页面所在的路径。它随页面的位置改变而改变。 web开发一共有四个作用域,范围从高到低分为appliaction作用域(全局作用域),session 作用域,request作用域和page作用域。 ${base}是el表达式语法,它会自动先从page作用域开始查找,如果没有再找request作用域,然后是session,最后再是application作用域。 动态网页项目,页面直接访问的是webcontent下的。 Weblogic.xml配置文件作用: weblogic.xml主要配置web容器的一些属性,比较JSP编译时间间隔、编译路径等web.xml是配置整个应用工程的属性,如servlet等 你用tomcat jboss等web容器和weblogic一样,它们单独有自己的配置文件 视图解析器 SpringMVC用于处理视图最重要的两个接口是ViewResolver和View FreeMarkerViewResolver 是继承自springmvc的一个接口,只是和freemarker同名而已 XmlViewResolver 貌似工具库里面定义好了(如ftl、分词库),然后在common中用 <@s.m "error.errorMessage"/>什么意思?? 视频 spring mvc freemarker

金磊https://www.wendangku.net/doc/ab13528510.html,/jinlei/index.jhtml 怎么发布到网上(FTP??) 搭个‘Android Lib安卓库’网站(有论坛、博客、下载、尚学宝) 1、界面 QQ互联 https://www.wendangku.net/doc/ab13528510.html,/article/5225f26b0ed354e6fb09085d.html 今天问题 VECTOR- 脚本语言- 注解-- 为什么frame要经过FrameAct.java一下,再返回?? @Controller是spring的Controller控制器? 为什么我新建的html是 别人是 <body>浏览器不支持Frames框架时显示的内容</body> jar包 apache下的jar包 apache-ant-zip-1.8.0.jar(ant是什么??它的jar包??ant是脚本引擎,脚本语言有

发展经济学讲义

D e v e l o p m e n t e c o n o m i c s 《发展经济学》讲义 参考书目:《发展经济学》——增长与发展经济学译丛 [美]Debraj ray着陶然等译北京大学出版社 2002年10月第1版 黄景贵院长教授博士 孙建军副教授博士 目录 第一讲导论 第二讲经济发展:概览 第三讲经济增长 第四讲新增长理论 第五讲历史、预期和发展 第六讲经济不平等 第七讲不平等和经济发展:相互的联系 第八讲贫困与营养不良 第九讲人口增长与经济发展 第十讲农村和城市 第十一讲农业中的市场:一个初步的介绍 第十二讲土地 第十三讲劳动 第十四讲信贷 第十五讲保险 第十六讲国际贸易 第十七讲贸易政策 第十八讲贸易政策的多边方法 序言 发展经济学是研究发展中国家经济转变的学科,本讲义提供了发展经济学的一个介绍。 本讲义主要面向高年级的本科生,帮助他们学习初级或中级经济理论、运用现代主流经济学的统一分析框架对各种发展问题作深入浅出的分析。尤其在方法论上,本讲义结合近年来经济理论在不完全信息、契约理论、博弈论和新增长理论等方面的最新进展,分析发展中国家的经济发展问题。 本讲义将对学生数学的要求降到了最低。具体而言,不使用微积分,而尝试主要通过语言、图表来说明问题,有时也使用基础代数来讲解有关理论。 第一讲导论 一、两个定义 发展经济学:研究发展中国家经济转变的学科(debraj ray,2002)。 发展中国家(developing country):人均年收入低于9000美元的国家,而高于9000美元的国家称为发达国家(developed country)。——世界发展报告(world bank,1996) 二、本讲义的思维框架——贯穿两条主线: 1、或多或少地远离一个传统观点:即发展中国家问题只有在其所处的国际环境中才能得到最好的理解; 2、关于方法论的,尽可能用统一的分析方式来研究经济发展的问题,并在市场失灵与政府干预的可能性方面取一

WEB框架总结

概述 开发框架的选择,始终是个仁者见仁、智者见智的事情。尤其是Web层的开发框架,数量非常多,而且各有特色,如:Struts、WebWork、Spring MVC、Tapestry、JSF、WebPage3.0......等等。他们各自的优、缺点: 框架使用背景 一:使用框架的必然性 框架,即framework。其实就是某种应用的半成品,把不同应用程序中有共性的一些东西抽取出来,做成一个半成品程序,这样的半成品就是所谓的程序框架。 软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。这样每次开发就不用白手起家,而是可以在这个基础上开始搭建。 使用框架的最大好处:减少重复开发工作量、缩短开发时间、降低开发成本。同时还有其它的好处,如:使程序设计更合理、程序运行更稳定等。基于这些原因,基本上现在在开发中,都会选用某些合适的开发框架,来帮助快速高效的开发应用系统。 了解了使用框架的必然性,下面来看看如何选择,当然我们的话题集中在Web层的开发框架。在谈这个问题之前,先来看看我们在Web开发中究竟需要做些什么工作: 二:Web层开发的工作 在J2EE开发中,分层是基本的思想,3层架构或者多层架构早已深入人心,在这里我们就把目光集中到Web层,看看到底Web层开发做了那些工作: 1:数据展示 Web层需要从逻辑层获取需要展示的数据,然后以合理的方式在页面进行展示 2:人机交互 用户需要从界面上输入数据,在界面上进行按钮点击,进而触发事件,标准的事件驱动模型,然后跟后台进行数据交换,出现新的界面。 3:收集数据,调用逻辑层接口 Web层收到用户的事件请求,需要调用相应的逻辑层接口来进行处理,Web层是不会有任何逻辑处理的。调用逻辑层接口,需要传递参数,这时需要收集用户在界面上输入的数据,然后进行组织,组织成为逻辑层接口需要的数据封装形式(通常都是ValueObject)。 4:根据逻辑层的数据来重新展示页面 逻辑层处理完了,需要返回数据或信息到界面上。这个时候Web层需要根据返回的值选择合适的页面,然后展示这些数据或者信息。 从上面可以看出,Web层开发的主要工作集中在展示上,也就是图形用户界面。这一部分是用户直观感受应用程序的窗口,也是用户要求最多的地方,其表现形式也是最丰富的。 三:Web层开发的步骤 下面再来总结一下Web层开发的大致步骤(也就是需要开发人员做的工作): 注意:这里讨论的Web层开发,是不使用任何开发框架时候的开发。 1:写页面Html,到底有哪些数据需要在界面上表现

整合SSH三大框架介绍

一.在MyEclipse里先建立一个Web project 的项目,选最新版本的java ee。 二.添加struts2框架支持 1.引入struts2必须得几个jar包,放在WebRoot->WEB-INF->lib 目录下。 2.将WEB应用部署到tomcat服务器上:找到tomacat的安装目录Tomcat6.x\apache-tomcat-6.0.33\conf,打开其中的server.xml文件,在文件末尾上面加入例如 这样的句子,其中path的值为你需要访问网站的上下文,docBase的值为该web项目的WebRoot所在的目录,最后一个readloadable最好选true。 3.在WebRoot->WEB-INF->web.xml中加入struts2的过滤

器将部署好的应用纳入到struts2的管辖范围类,具体代码如下 struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPre pareAndExecuteFilter struts2 /* 4.在web项目的src目录下,建一个struts.xml文件,这里是处理struts整个流程的文件。在其中加入 上面的name随便取,extends绝对不能变。 5.这样以后,启动tomcat服务器看看能不能正常启动,如果正常启动后,在浏览器上访问,http://localhost/上下文/index.jsp看能不能进入,若能进入则表示struts2的框架已经成功加到web项目中了,可以开始下一步了。

Struts2和hibernate框架整合实现简单的注册登陆功能

Struts2和hibernate框架整合实现简单 的注册登陆功能 项目结构: LoginAction.Java package action; import https://www.wendangku.net/doc/ab13528510.html,er; import https://www.wendangku.net/doc/ab13528510.html,erDAO; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; private User user; public User getUser() { return user;} public void setUser(User user) { https://www.wendangku.net/doc/ab13528510.html,er = user;} public String execute()throws Exception{ if((user=new UserDAO().LoginCheck(user.getUsername(), user.getPassword(),user.getRole()))==null){

return ERROR; } if(user.getRole()=="1"){ return "admin"; }else{ return SUCCESS;} } } RegistAction.java package action; import https://www.wendangku.net/doc/ab13528510.html,er; import https://www.wendangku.net/doc/ab13528510.html,erDAO; import com.opensymphony.xwork2.ActionSupport; public class RegistAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; private User user=null; private String repassword; public String getRepassword() { return repassword; } public void setRepassword(String repassword) { this.repassword = repassword; } //UserDAO userDao=new UserDAO(); @Override public String execute() throws Exception { User selectUser=new User(); if((selectUser=new UserDAO().selectRegist(user.getUsername()))==null){ User u=new User(); u.setUsername(user.getUsername()); u.setPassword(user.getPassword()); new UserDAO().saveRegist(u); return "success"; }else{ return "error";

区域经济学知识点总结

区域经济学 第一二章 1.基本概念:区域、区域经济、区域经济学 区域:区域经济学的研究对象 区域是区域经济学研究的起点。它是一个多维度、多层次的概念,对其进行界定或定义,需要从地理学、政治学、经济学等多学科的角度出发。 地理学的区域概念:地理学时最早提出区域概念的学科。为了便于考查,地理学把地球空间按照其相互关系进行分类,或者是区分,并用一定的事先设定的法则,将其划分为各种区域,诸如海洋区、陆地区、高原区,平原区、丘陵区等等。由于每一类区域不同的特征以及温度、降雨和生物物种分布等的巨大差异,使每一个区域的内容更加丰富和更多样化。 地理学对区域研究的贡献,是把区域定义为地球表面的一个地域单元。 政治学的区域概念:政治学是从行政管理的角度去观察和分析各种不同的地点,根据人口居民点和社会经济活动的位置及分布状况,划分系统的地方单元。政治学中的区域不但表示地理区域的概念,而且还包含地方公民间的文化联结、惯例认同、心理归属、民族历史、社会经济关系等意义。 政治学对区域研究的贡献,是把区域定义为行政管理的一个地方单元。 社会、文化区域:根据人类社会活动的特征,在人口、民族、宗教、语言、

政治等因素交互影响下而产生的附加在自然景观上的“人类活动形态”——文化景观特定性质的相似性和差异性而划分出来的地域单元,如华人文化圈、东方文化圈、穆斯林文化圈等; 经济学的区域概念:经济学的区域概念就是区域经济学的区域概念。经济学的区域是在地理学和政治学关于区域概念的基础上,考虑某个地域空间的人口、经济、资源、环境、公共设施和行政管理的特点,是居民高度认同、地域完整、功能明确、内聚力强大的地域单元。 它一般以两种形式存在:同质区域和极化区域。 区域的特征:内在整体性、空间界线的客观性与模糊性 区域经济:区域的经济活动和经济关系的总和。 如果我们把全国的国民经济看做是一个整体,那么区域经济就是整体的一部分,是国民经济整体不断分解的结果。 区域经济的特点包括: 区域性——区域经济最根本的特点 非均衡性 阶段性和连续性 开放性

hibernate框架必问的面试题

108.为什么要使用 hibernate? hibernate 是对 jdbc 的封装,大大简化了数据访问层的繁琐的重复性代码。 hibernate 是一个优秀的 ORM 实现,很多程度上简化了 DAO 层的编码功能。 可以很方便的进行数据库的移植工作。 提供了缓存机制,是程序执行更改的高效。 109.什么是 ORM 框架? ORM(Object Relation Mapping)对象关系映射,是把数据库中的关系数据映射成为程序中的对象。 使用 ORM 的优点:提高了开发效率降低了开发成本、开发更简单更对象化、可移植更强。 115.hibernate 中如何在控制台查看打印的 SQL 语句? 在 Config 里面把 hibernate. show_SQL 设置为 true 就可以。但不建议开启,开启之后会降低程序的运行效率。 116.hibernate 有几种查询方式? 三种:hql、原生 SQL、条件查询 Criteria。 117.hibernate 实体类可以被定义为 final 吗? 实体类可以定义为 final 类,但这样的话就不能使用 hibernate 代理模式下的延迟关联提供性能了,所以不建议定义实体类为 final。 118.在 hibernate 中使用 Integer 和 int 做映射有什么区别? Integer 类型为对象,它的值允许为 null,而 int 属于基础数据类型,值不能为 null。 119.hibernate 是如何工作的? 读取并解析配置文件。 读取并解析映射文件,创建 SessionFactory。 打开 Session。 创建事务。 进行持久化操作。 提交事务。 关闭 Session。 关闭 SessionFactory。 120.get()和 load()的区别? 数据查询时,没有 OID 指定的对象,get() 返回 null;load() 返回一个代理对象。 load()支持延迟加载;get() 不支持延迟加载。

SpringMVC深入总结

一、前言: 大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了。Spring3 MVC结构简单,应了那句话简单就是美,而且他强大不失灵活,性能也很优秀。 官方的下载网址是:https://www.wendangku.net/doc/ab13528510.html,/download(本文使用是的Spring 3.0.5版本) Struts2也是比较优秀的MVC构架,优点非常多比如良好的结构。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降。Struts2的多层拦截器、多实例action性能都很好。可以参考我写的一篇关于Spring MVC与Struts2与Servlet比较的文章https://www.wendangku.net/doc/ab13528510.html,/admin/blogs/698217 Spring3 MVC的优点: 1、Spring3 MVC的学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。 2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分) 3、Spring3 MVC的灵活是你无法想像的,Spring的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。 Struts2的众多优点:略... (呵呵,是不是不公平?) 众多文章开篇时总要吹些牛,吸引一下读者的眼球,把读者的胃口调起来,这样大家才有兴趣接着往后看。本文也没能例外。不过保证你看了之后不会后悔定有收获。

Struts+Spring+Hibernate框架搭建

整合SSH框架 整合框架版本:hibernate-distribution-3.6.0.Final-dist + spring-framework-2.5.6.SEC01-with-dependencies + struts-2.1.8.1 一、搭建工具 Windows 、Tomcat 6.0+ 、MyEclipse、SQLServer2008 R2 、Google 二、创建工程 新建WEB项目工程(MyEclipse),包含web.xml配置文件。 三、添加框架环境Junit4 右击新建的项目,选择Build Path —> Add Library —> Junit —> 选择Junit4 —> 确定完成单元测试的添加。 四、添加框架环境Struts2 1.解压struts- 2.1.8.1 ,如下图所示: 可在apps文件里,随机选择一个.war文件解压,到WEB-INF→lib下的基础jar文件:

复制黏贴添加到项目工程的lib下。也可将lib下的全部jar(71个)都复制到项目中来,不过很多用不到。我们崇尚即用即加的原则…… 2. 配置struts.xml和web.xml文件,如下: web.xml: ItcastOA struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndE xecuteFilter struts2 /* index.html index.htm index.jsp default.html default.htm default.jsp struts.xml:

javaweb开发要学习的所有技术和框架总结:

学习javaweb开发要学习的技术和框架总结: 前言:当初想学习javaweb开发的时候,希望能够全方面地学习(这样找工作时就胸有成足了)。但是对这个根本不理解,又不认识从事这方面的熟人,所以学习起来无从下手。经过了一年的‘死’学习,从网上,从书本,从视频里面深入了解了java。想从事java的朋友,只要把这些技术全学会了,哪就业肯定没有问题了。 前端技术: HTML, CSS, JA V ASCRIPT, JQUERY, AJAX HTML “超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。 超文本标记语言的结构包括“头”部分(外语:Head)、和“主体”部分(外语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。 CSS 级联样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。 JavaScript JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。 jQuery jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发。如今,jQuery已经成为最流行的javascript库,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。

精选-发展经济学期末复习资料

1 发展经济学复习资料 根据老师所划重点制作的精简版仅作为进行教材复习时的参考资料, 祝大家顺利通过考试! 考试题型: 一、名词解释5×6’ 二、简答题4×10’ 三、论述题2×30’ 说明:1、不考模型2、边看书边补充,资料有局限性。 一、第1、2章综合(名词解释) 李约瑟之谜:即中国古代的科学技术已经相对十分发达,为什么工业革命没有发生在中国?该问题的回答可以分为两个方面:1、为何工业革命发生在欧洲?2、为何工业革命没有发生在中国?至今尚无定论。 马尔萨斯陷阱:如果一个国家人口的增长速度超过了这个国家经济增长的速度,那么这个国家仅仅是经济总量的增加,而居民的平均社会福利水平却是在下降,这种经济总量的增加与平均社会福利下降同时出现的现象 人口转型:指人口生育率、死亡率和人口结构的变化。分为三个阶段:第一阶段高出生率、高死亡率、低人口增长率;第二阶段高出生率、低死亡率、高人口增长率;第三阶段低出生率、低死亡率、低人口增长率 人口红利:针对第二阶段后半段,这个阶段劳动人口相对于被抚养的人口更丰裕,从而可能有利于经济增长。 二、第三章、农业与经济发展(大题) (一)农业对经济发展的贡献? 答:1、保障粮食供给2、提供就业3、缓解贫困4、促进劳动力转移和工业化进程。(二)农业在国民经济中下降的原因? 答:两个方面:从供给方面,现代农业的进步率高于制造业和服务业。技术进步的实质是单位产品的成本下降,因此,在其他条件不变的情况下,技术进步较快的产业的相对价格会降低。这样劳动力将转移到技术进步率较低但相对价格较高的产业;从需求方面,农产品主要是食品这样的必需品,而必需品的弹性小于1,故但收入增加时,越来越多的收入份额会用到非食物产品上,从而降低了食品消费占经济总消费的比例,进而导致农业在国民经济总量中的份额不断下降。 (三)对农业的过度汲取及其后果? 答:对农业的过度汲取表现为:实行统购统销和人民公社,形成农产品价格上的剪刀差,用于工业的积累。 后果体现为三个方面:首先农业生产效率的严重下降;其次农民被固着在土地上,农村开始呈现完全等同于农业的态势;最后是城市农产品供应空前紧张。 我们能逃避的只是逃避的本身—卡夫卡; 我们所恐惧的只是恐惧的本身—罗斯福

Struts、Spring、Hibernate三大框架的原理和优点

Struts的原理和优点. Struts工作原理 MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。MVC的工作原理,如下图1所示: Struts 是MVC的一种实现,它将Servlet和JSP 标记(属于J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的工作原理, 视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP 标签库:Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。 控制:在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。ActionServlet是一个通用的控制组件。这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。另外控制组件也负责用相应的请求参数填充Action From(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。最后动作类把控制权传给后续的JSP 文件,后者生成视图。所有这些控制逻辑利用Struts-config.xml文件来配置。 模型:模型以一个或多个java bean的形式存在。这些bean分为三类:Action Form、Action、JavaBean or EJB。Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。 流程:在Struts中,用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,由ActionBean完成相应的业务操作,如文件操作,数据库操作等。每一个*.do均有对应的FormBean名称和ActionBean名称,这些在Struts-config.xml中配置。 核心:Struts的核心是ActionSevlet,ActionSevlet的核心是Struts-config.xml。 Struts优缺点 优点: 1.开源软件,能更深入的了解其内部实现机制。 2.Taglib标记库,灵活动用,能大大提高开发效率。 3.页面导航使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。

Spring与ibatis整合学习心得

Spring与ibatis整合学习心得 梁飞虎首先,明确一下ibatis在此工程中的作用相当于hibernate,就是进行数据库的访问,也就是连接操作数据库用的。因此常说的SSH结构也可用SSI来取代,只是ibatis是一个轻量级的框架。 在spring.jar包中有org.springframework.orm.ibatis.SqlMapClientFactoryBean类,此类用于读取ibatis中的配置文件(总配置文件)sqlMapConfig.xml,具体的配置位置是在applicationContext.xml中: 标记1 WEB-INF/sqlMapConfig.xml 而sqlMapConfig.xml文件中包含ibatis的map文件信息,这点不再详述。SqlMapClientFactoryBean,这个class实现了两个interface:FactoryBean和InitializingBean,InitializingBean只有一个方法afterPropertiesSet() spring调用构造函数后,发现它实现了InitializingBean接口,所以还会调用afterPropertiesSet来进一步初始化此class。 sqlMapClient 就是在这里面创建的。 至此一个完整的工厂创建完成。 FactoryBean接口主要方法就是public Object getObject(); 要知道SqlMapClientFactoryBean是一个工厂类,他的作用就是你需要的时候调用它的一个方法,它就会返回你一个你需要的对象。 当然此处返回的就是一个sqlMapClient 对象。 所以这里的getObject实现就是把sqlMapClient 返回给调用者。 spring就是根据接口里的定义来调用getObject方法的,这样可以忽略到底是调用的那个对象的实例(也就是不关心调用的是哪个factory)。 也不关心返回的是什么对象,spring只知道调用了getObject就可以得到此factory所创建的对象就够了。标记2

发展经济学小论文!!!

《发展经济学——从贫困到富裕》评述 简介:本文是对速水佑次郎和神门善久的《发展经济学—从贫困到富裕》一书的评述。 关键词:发展中国家 脱贫 技术进步 制度机制 一、 主要内容介绍及该书的组织 发展经济学的主要任务是探索发展中国家摆脱贫困的可能性,它着重研究贫困特别严重的低收入发展中国家。当今世界上的低收入经济体如何才能进入经济持续发展的轨道,实现脱贫减困的近期目标和赶上富有的发达经济体的长期目标呢?发展经济学的最终目标就是获得这一问题的答案。这也是发展中经济的视野——脱贫减困,实现经济可持续发展。 当今世界是以国家之间非常大的收入不平等为特征的。通过经济发展摆脱贫困和苦难是低收入国家的共同目标。而本书也旨在阐述发展中国家在新千年面临的新问题,重点探讨低收入国家追赶高收入经济体的发展问题。该书基本围绕着“提出问题——分析问题——解决问题——总结问题”的思路构思,具体组织如下: 第一章 经济发展的理论框架 第一章旨在建立全书的理论框架。按照这个理论框架,社会体制的发展是经济子系统和文化——制度子系统辩证的相互作用的过程。在本书中,考察的是消除当今世界上低收入的发展中国家和高收入的发达国家之间极大的人均收入差距所需的经济发展,如果不考察社会组织和人的价值体系必不可少的重大变化,是无法领悟如此广泛的经济增长的。理解经济变量(诸如资本和劳动力)数量扩张与文化、制度相互作用进而产生出一种有利于人均收入增长的社会制度的过程,应该是发展经济学的最终目标。作为达到该目标的第一步,这章提出了一种分析经济、文化和制度变化之间的复杂关系的理论框架。 文化——制度 子系统 经济子系统 上图即是一个有关社会体制发展的广义的概念性框架。该图是阐述社会体制如何在经济和文化——制度变量之间辩证的相互作用的过程中演进的模型。 之后本章又阐述了经济增长来源于三方面的因素:生产要素的增加、技术进步和效率提高。第三节用这种理论框架观察发展中经济,指出,当今发展中国家的主要问题是资源禀赋(人口爆炸性增长,土地资源稀缺性加剧)和技术变化的速度缓慢,即所谓的“提出问题”。进而提出其核心思想,发展中国家和发达国家在技术和制度上存在巨大的差距,但这些差距同时可能是发展中国家经济文化 (价值系统) 制度 (规则) 资源 (生产要素) 技术 (生产函数)

Struts+Hibernate+Spring+三个框架简介

Struts 是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Java Servlet和JSP构建Web应用的一项非常有用的技术。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,因而吸引了众多的开发人员的关注。 首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Command 模式,每个继承Action的子类都必须实现一个方法execute。 struts重要的表单对象ActionForm是一种对象,它代表了一种应用,这个对象中至少包含几个字段,这些字段是Jsp页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将事件粒度细化到表单中这些字段时,也就是说,一个字段对应一个事件时,单纯使用Struts就不太可能,当然通过结合JavaScript也是可以转弯实现的。 Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。 Struts框架可分为以下四个主要部分: 1、模型(Model),本质上来说在Struts中Model是一个Action类(这个会在后面详细讨论),开发者通过其实现商业逻辑,同时用户请求通过控制器(Controller)向Action的转发过程是基于由struts- config.xml文件描述的配置信息的。 2、视图(View),View是由与控制器Servlet配合工作的一整套JSP定制标签库构成,利用她们我们可以快速建立应用系统的界面。 3、控制器(Controller),本质上是一个Servlet,将客户端请求转发到相应的Action类。

SpringBoot学习总结

SpringBoot 区别 Springboot是springMVC的升级版,两者没有必然联系,可直接学习springBoot,springBoot是伴随着Spring4.0诞生的 SpringBoot的特点 1.化繁为简,简化配置 2.备受关注,是下一代框架 3.微服务的入门级框架(微服务是当下比较流行的架构spring为微服务架构提供了一整套组件,统称为SrpingCloud,,springcloud是建立在springBoot的基础之上的) 4.使编码变得简单,使配置变得简单,使部署变得简单,使监控变得简单 程序配置 引入jar包

启动类上班必须有@SpringBootApplication注解,controller类要加@RestController注解,方法上配置@RequestMaping注解 注解与模板 讲解: @Controller注解:处理http请求 @RestController注解:Spring4之后新加的注解,等同于返回json注解的@ResponseBody+controller注解的组合注解 @RequestMapping注解:配置url配置 @PathVariable 获取url中的数据 @RequestParam 获取请求参数的值 如果仅仅使用@Controller,返回的字符串就是页面的名称,需要加入srping官方的模板引擎,在pom.xml中配置,

属性配置 application.properties为springboot的默认配置文件,可配置端口server.port=8081可配置项目路径server.context-path=/gril ,访问路径时的路径就变成localhost:8081/gril/controller名称 application.yml文件是springboot的另一种配置文件,这种文件可以减少重复值(推荐,注意:冒号后要加空格) 在yml文件中自定义属性时,在controller中使用@Value(“${gril}”) 属性映射到bean 创建Gril.java的java文件,类上加@Component和@ConfigurationProperties(prefix="gril"),创建private String name;和private Integer age;属性创建get和set方法,获取配置文件前缀是gril 的配置映射到javabean属性中,