- 浏览: 52735 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
kenche1:
峰哥,翻了几篇文章,终于确定你是BigHan出来的了,方便交流 ...
webservice客户端调用复杂对象报错,求帮助啊!!! -
yaoyun229:
写的很好,看你的文章之前,我也一直以为 mvc == 三层架构 ...
三层架构,MVC浅谈【一】 -
dicmo:
解决了吗??是不是JDK版本问题
webservice客户端调用复杂对象报错,求帮助啊!!! -
cd1989929:
请问这个问题解决了吗?我也遇到了
webservice客户端调用复杂对象报错,求帮助啊!!! -
高成锋:
我发布这个问题的时候是希望能人帮我解决,哎,等到最后还是 ...
tomcat服务启动中但是不能访问服务下的项目,怎么办?
1.1. 依赖注入
当我们把依赖对象交给外部容器去创建时,那么PersonServiceBean类可修改如下:
public class PersonServiceBean{
private PersonDao persondao;
//通过构造参数,让容器把创建好的依赖对象注入到PersonServiceBean中,当然也可以通过setter方法进行注入。
public PersonServiceBean(PersonDao persondao){
this.persondao = persondao;
}
public void save(){
persondao.add();
}
}
<bean id="persondao" class="com.sun.demo.PersonDaoBean" />
<bean id="personService" class="com.sun.demo.PersonServiceBean" >
<property name="persondao" ref="persondao" />
</bean>
//通过setter方法注入而不能同时存在构造方法。
<constructor-arg ref="persondao" />
//构造器注入
注意:在配置文件中若同时配置了构造器和setter方法注入,那么类中也必须对应的有构造方法和setter方法,后台配置中用setter方法则类中不能有构造器对注入属性进行赋值。两种方法必须对应出现,优先以构造方法为主。
<property name="persondao">
<bean class="com.sun.demo.PersonDaoBean" />
</property>
//区别于以上两种方式,这个是内部注入的方式,这个bean只能为当前bean调用
除此以外,还可以对一些基本类型属性进行赋值
<property name="username" value="zhanshan" />
集合类型的装配:
对于一些集合类型的属性
private Set<String> sets = new HashSet<String>();
<bean id="personService" class="com.sun.demo.PersonServiceBean">
<property name="sets">
<set><value>需要注入的值</value></set>
</property>
<property name="properties">
<props><prop key="key值">value值</prop></props>
</property>
<property name="maps">
<map><entry key="key值" value="value值" /></map>
</property>
</bean>
前台打印方式:
for(String value : personService.getSets()){
System.out.println(value);
}
for(Object key : personService.getProperties().keySet()){
System.out.println(personService.getProperties().getProperty((String)key));
}
for(String key : personSetvice.getMaps().keySet()){
System.out.println(personSerive.getMaps().get(key));
}
使用Field注入【用于注解方式】
1.2. 实例化spring容器
(1)Resource resource = new ClassPathResource("applicationContext.xml");
XmlBeanFactory factory = new XmlBeanFactory(resource);
(2)InputStream is = new FileInputStream("d:/config/applicationContext.xml");
Resource rs = new InputStreamResource(is);
XmlBeanFactory factory = new XmlBeanFactory(rs);
(3)ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
(4)ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[] {"d:\\bean.xml"});
(5)String[] configFile = {applicationContext.xml};
ApplicationContext ctx = new ClassPathXmlApplicationContext(configFile);
BeanFactory bean = (BeanFactory)ctx;
1.3. 连接Hibernate访问数据库
(1)Resource resource = new ClassPathResource("applicationContext.xml");
XmlBeanFactory factory = new XmlBeanFactory(resource);
SessionFactory sessionFactory = factory.getBean("mySessionFactory");
//mySessionFactory在配置文件中已经配置好
HibernateTemplate template = new HibernateTemplate();
template.setSessionFactory(sessionFactory);
List list = template.find("select userId from com.sun.demo.UserInfo");
(2)主要就是获取配置文件中的上下文,进而提取Bean节点,另一种方法就是将其设为类的属性,在生成一个类的时候自动加载配置文件中的信息进行依赖注入属性值
template.find();
template.load();
template.save();
template.update();
template.get();
(3)部分代码同上
HibernateTemplate ht = new HibernateTemplate(mySessionFactory);
final String hql = "update UserInfo set password = ''1234";
Object obj = ht.execute(new HibernateCallBack()){
public Object doInHibernate(Session session)throws HibernateException,....{
String hql = "update ......";
Query query = session.createQuerty(hql);
return query.execueteUpdate();
}
};
HibernateDaoSupport
可以简化模板,不用再生成新对象HibernateTemplate,也不用可以类属性SessionFactory,直接用this.getHibernateTemplate()
JdbcDaoSupport
注意:同种方法有不同的实现体,即重载方法,可以进行参数的动态给予。
1.4. SSH框架整合
注意添加需要的jar包
(1)新建一个action类继承ActionSupport,则:
ApplicationContext ctx = this.getWebApplicationContext();
在struts-config.xml文件中配置如下信息加载applicationContext.xml
<plug-in calssName="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property
property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
(2)在web.xml文件中配置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
(3)在web.xml中配置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>自定义名称</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
以上三种方式都是在action类继承了ActionSupport之后的配置
(4)IOC依赖注入,继承SSH框架
以往我们在访问login.do的时候都是根据配置文件,去查找对应得Action类
<action path="/login" scope="request" type="com.sun.demo.LoginAction" />
现在我们需要修改一下type的值
<action path="/login" type="org.springframework.web.struts.DelegatingActionProty" />
同时需要以上三种配置方式中的一种方式来指定查找的spring配置文件applicationContext.xml,在spring的配置文件中根据path去查找bean节点的name值,进而去访问action类,同时对于某些可能用到的用户自定义类也可以配置为Action类的属性,进而直接调用。
发表评论
-
实战剖析三层架构
2011-01-13 11:10 862转自: http://hi.baidu.com/myaspdo ... -
三层架构,MVC浅谈【三】
2011-01-10 16:55 14431. SSH三层架构 为了实现web层(struts)和 ... -
三层架构,MVC浅谈【二】
2011-01-10 16:54 13531. 如果理解业务逻辑呢 ... -
三层架构,MVC浅谈【一】
2011-01-10 16:52 3597首先感谢那些无私奉献自己知识的师长们。 其实一直以来我对所谓 ... -
spring学习总结【一】
2011-01-07 16:14 10551. Spring简介 Spring使用简单的javabea ... -
struts2学习笔记【十二】 / 标签
2011-01-07 16:09 9191. Struts2标签库 1.1. Struts2标签库概 ... -
struts2学习笔记【十一】 / Interceptor(2)
2011-01-07 16:07 9091.5. 权限认证 一般情况下,在WEB-INF下的内容不登 ... -
struts2学习笔记【十一】 / Interceptor(1)
2011-01-07 16:05 8951. Interceptor拦截器 1.1. 拦截器简介 ... -
struts2学习笔记【十】/ OGNL
2011-01-07 16:03 1023Ognl【Object-Graph Navigation la ... -
struts2学习笔记【九】/ 获取request,Session的方法
2011-01-06 14:07 8771. 获取request,session的方法 1.1. 非 ... -
struts2学习笔记【八】/ struts.xml--action
2011-01-06 14:05 12171. action详解 Action自身的设置在packag ... -
struts2学习笔记【七】/ struts.xml--package
2011-01-06 14:03 1381package详解 1.1. action A)na ... -
struts2学习笔记【六】/ 配置文件之struts.xml
2011-01-04 13:50 10221. struts.xml详解 1.1. bea ... -
struts2学习笔记【五】/配置文件之struts.properties
2011-01-04 13:48 869我自己也做了一些总结,但是篇幅比较大,所以,大家不妨访问 ... -
struts2学习笔记【四】/配置文件简介
2011-01-04 13:46 8161.1. Web.xml 服务启动文件 1.2. stru ... -
struts2学习笔记【三】/处理用户输入信息
2011-01-04 13:42 8251. Struts2处理用户输入信息 1.1. 领域对象 ... -
struts2学习笔记【二】/开发设置
2011-01-04 13:41 8281. 开发设置 有的时候,struts2中没有标签提示,这个 ... -
struts2学习笔记【一】/第一次接触
2011-01-04 13:38 1052总是在用struts1.2开发,不过总是存在着一种危机感似的, ...
相关推荐
二、Spring的核心特性 1. **依赖注入**:Spring通过DI使对象之间的关系在运行时动态配置,而不是在代码中硬编码。这使得组件的使用和实现解耦,更便于测试和维护。 2. **面向切面编程**:AOP允许开发者定义"切面",...
spring学习笔记
### Spring Security核心概念与实践详解 #### Spring Security概述 在深入了解Spring Security之前,我们先回顾一下没有Spring Security的权限管理场景。在传统架构中,权限验证逻辑往往与业务逻辑紧密交织,导致...
除此之外,官方文档、GitHub仓库、Stack Overflow和各种在线课程都是深入学习Spring Security的好资源。 总的来说,Spring Security是一个功能强大且灵活的安全框架,它的核心机制包括用户认证、权限授权,以及丰富...
课程学习时候的笔记总结,这里面没有代码部分,全是知识点的总结,方便大家去面试回答
以上就是Spring学习笔记的初步概述,涵盖了Spring的基本架构、配置文件的创建和加载,以及依赖注入的主要方式。随着学习的深入,还可以涉及AOP、Spring MVC、Spring Boot、Spring Data等更高级的主题,从而更好地...
在这个学习记录总结中,我们将深入理解Spring MVC的核心概念、主要组件以及其工作流程。 1. Spring MVC 概述 Spring MVC 是Spring框架的一部分,它基于Spring IoC(Inversion of Control,控制反转)容器,简化了...
【狂神说】Spring PDF学习总结笔记主要涵盖了Spring框架的核心概念、优点、组成部分以及相关扩展。Spring是一个由Rod Johnson创建的开源框架,旨在简化企业级应用开发的复杂性,它结合了众多现有技术,如SSH(Struct...
SpringSecurity是Java开发中用于构建安全Web应用的框架,它提供了强大的身份验证、...在学习过程中,分析提供的源代码和示例将有助于深入理解SpringSecurity的工作原理,并能帮助你在实际项目中有效地应用这些知识。
《Spring学习深度剖析》 Spring框架作为Java领域最广泛应用的轻量级框架,以其强大的功能、灵活的设计和广泛的社区支持,成为了开发企业级应用的重要工具。这篇总结将深入探讨Spring的核心概念、主要特性以及实际...
### Spring学习总结(不含整合其他框架) #### 一、Spring框架简介 **Spring** 是一个开源框架,旨在简化企业级应用开发。通过使用Spring,即使是简单的JavaBean也可以实现原本只有EJB才能完成的功能。Spring的...
【Spring Security 学习总结】 Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于保护基于 Java 的应用程序。本学习总结文档主要针对初学者,旨在剖析一个不安全的应用程序并阐述如何通过 ...
在"Spring Security学习总结一(补命名空间配置)"的文件中,可能涵盖了如何在Spring Security的XML配置中补充命名空间的步骤。命名空间的引入是为了简化配置,例如`<http>`元素用于配置安全拦截和访问规则,`...
**Spring框架概述** Spring是一个开源的Java平台,它主要为构建企业级应用提供全面的框架支持。...通过阅读提供的文档、教程和知识点总结,可以系统地学习和理解Spring,从而提升自己的开发能力。