`
chenhua_1984
  • 浏览: 1251016 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

spring2.5学习笔记之一:IOC和MVC

阅读更多

       1spring2.5的使用在配置上已经有了很大的改进。特别在自动装配上面的改进最为明显。我的项目里用spring2.5和ibatis2.3来开发的,其中spring2.5就是用ioc,mvc,还有就是数据持久ibatis。现在贴一部分代码出来,分析分析。

       页面index.jsp

 

 

jsp页面 写道
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form name="form1" action="<c:url value='/userdao/checklogin.do '/>" method="post" >
<input type="text" name="username" id="usernaem" value=""/>
<input type="password" name="password" id="password" value=""/>
<br>
<input type="submit " name="submit" id="submit" value="submit"/>
</form>
</body>
</html>

   上面的页面是一个测试的jsp页面,其中action提交请求到后台控制器,代码如下。

LoginController 写道
package com.spring.web;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.spring.manageri.UserDaoManager;
@Controller
public class LoginController {

@Autowired
private UserDaoManager userDaoManager;

@SuppressWarnings("unchecked")
@RequestMapping(value="/userdao/checklogin.do ")
public ModelAndView checkLogin (HttpServletRequest request,HttpServletResponse response){
return new ModelAndView("/welcome");
}

}

 在控制器里面的RequestMapping(value="/userdao/checklogin.do ")这个值和页面上的action 相对应。在页面提交的时候spring2.5容器便可以找到这个链接来处理请求(注意这个value="/userdao/checklogin.do "必须是全局唯一的。) 

 另外还有就是注解

 @Autowired
 private UserDaoManager userDaoManager;

UserDaoManager是一个接口,并且有它自己的实现类UserDaoManagerImpl,这个类用来处理业务逻辑。代码如下。

UserDaoManager 写道
package com.spring.manageri;

import java.util.List;

public interface UserDaoManager {

public abstract List getUserList();

}
 
UserDaoManagerImpl 写道
package com.spring.impl;

import java.util.List;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.spring.common.IbatisDaoSupport;
import com.spring.manageri.UserDaoManager;

@Service
@Transactional

public class UserDaoManagerImpl extends IbatisDaoSupport implements UserDaoManager {

@Override
public List getUserLists() {
// TODO Auto-generated method stub
return null;
}

}

 其中IbatisDaoSupport是一个自定类,代码如下。

IbatisDaoSupport 写道
package com.spring.common;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

import com.ibatis.sqlmap.client.SqlMapClient;

public class IbatisDaoSupport extends SqlMapClientDaoSupport {

@Autowired
public void setSqlMapClientForAutowire(SqlMapClient sqlMapClient) {
super.setSqlMapClient(sqlMapClient);
}


}
 

这里采用这个类主要是为了避免每一次去操纵数据库都要去配置文件里注入sqlMapClient的问题,采用继承,业务逻辑的实现类只需要继承它即可。ibatis的配置文件。sqlmapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
    PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
    "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
    <settings cacheModelsEnabled="true" lazyLoadingEnabled="true"
        enhancementEnabled="true" errorTracingEnabled="true"
        useStatementNamespaces="false" maxRequests="30" maxSessions="20"
        maxTransactions="10" />
     <sqlMap
        resource="com/spring/domain/user.xml" />
</sqlMapConfig>

 com.spring.domain.user.xml这个文件就是ibatis的业务逻辑的实现文件,里面是对数据库的操作代码(sql).还有就是user.xml对应的pojo,user.java:

User.java 写道
 
User.java 写道
package com.spring.domain;

import java.io.Serializable;
import java.util.Date;

public class User implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String username;
private String password;
private String picture;
private String address;
private Integer trustlevel;
private String tel;
private String qq;
private String email;
private String ip;
private Date jointime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
..........................
}
 

 

 配置文件是这样的。

 首先是 applicationcontext-web.xml

applicationcontext-web.xml 写道
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<import resource="applicationContext-propertyConfigurer.xml"/>

<context:component-scan base-package="com.spring.web"/>

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/jsp"/>
<property name="suffix" value=".jsp"/>
</bean>

<bean id="urlFilenameViewController"
class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:order="1"/>


</beans>

 <context:component-scan base-package="com.spring.web"/>明确要扫描的控制包。

1<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
2<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

其中1和2用来处理通过方法名称的映射。是页面请求提交到后台的路径的解释器。

Autowired 写道
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:annotation-config/>
<context:component-scan base-package="com.spring.impl" />
</beans>

 这个配置文件指明了处理业务逻辑的包,这样Spring容器可以制动装配类对象。下面的配置文件用来连接数据库:并且把数据源注入到ibatis中

applicationContext-propertyConfigurer.xml 写道
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!-- c3p0 datasource -->
<!-- bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" p:driverClass="${jdbc.driverClass}"
p:jdbcUrl="${jdbc.jdbcUrl}" p:user="${jdbc.user}"
p:password="${jdbc.password}">
<property name="initialPoolSize"
value="5" />
<property name="maxPoolSize" value="10" />
</bean-->
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" p:driverClass="oracle.jdbc.driver.OracleDriver"
p:jdbcUrl="jdbc:oracle:thin:@127.0.0.1:1521:oracle9" p:user="dgdr"
p:password="dgdr">
<property name="initialPoolSize"
value="5" />
<property name="maxPoolSize" value="10" />
</bean>
<!-- Transaction manager for a single JDBC DataSource (alternative to JTA) -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource" />

    <tx:annotation-driven transaction-manager="transactionManager"/>

<bean id="lobHandler"
class="org.springframework.jdbc.support.lob.DefaultLobHandler" />

<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation"
value="/WEB-INF/config/ibatis/sqlmap-config.xml">
</property>
<property name="dataSource" ref="dataSource"></property>
<property name="lobHandler" ref="lobHandler"/>
</bean>

</beans>
 

  <bean id="sqlMapClient"
   class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    <property name="configLocation"
    value="/WEB-INF/config/ibatis/sqlmap-config.xml">
   </property>
   <property name="dataSource" ref="dataSource"></property>
   <property name="lobHandler" ref="lobHandler"/>
</bean>

把数据源注入到ibatis中。下面是web.xml的综合配置。

web.xml 写道
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>spring</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/applicationContext-propertyConfigurer.xml
/WEB-INF/config/applicationContext-business.xml

</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/config/log4j.properties</param-value>
</context-param>
<filter>
<filter-name>Encoding</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener </listener-class>
</listener>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/applicationContext-web.xml
</param-value>
</init-param>
   <load-on-startup>1</load-on-startup>
</servlet>
  <servlet-mapping>
     <servlet-name>spring</servlet-name>
     <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
     <welcome-file>jsp/index.jsp</welcome-file>
   </welcome-file-list>
</web-app>
 

 

 

分享到:
评论
1 楼 快乐让让 2009-12-21  
我改天帮你整理下吧,看起来有点不舒服。

相关推荐

    Spring2.5学习笔记

    ### Spring2.5 学习笔记详解 #### 一、Spring 框架简介 Spring 是一个开源的轻量级 ...以上就是关于 Spring2.5 学习笔记的主要知识点,通过这些内容的学习,可以更好地理解和掌握 Spring 框架的基本原理和使用方法。

    spring2.5 学习笔记

    ### Spring2.5 学习笔记关键知识点概览 #### 面向抽象编程与Spring框架 面向抽象编程是Spring框架的核心理念...以上是Spring2.5学习笔记中的核心知识点概述,每个主题都值得深入研究和实践,以掌握Spring框架的精髓。

    spring ioc aop mvc boot-学习笔记.docx

    Spring框架是Java开发中不可或缺的一部分,它为开发者提供了强大的依赖注入(IOC)和面向切面编程(AOP)功能,以及用于构建Web应用程序的MVC框架。Spring Boot则是基于Spring框架构建的应用程序启动器,旨在简化...

    Spring学习笔记&源码

    本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...

    Spring2.5、3.0、3.1轻松入门+中级+高级教程14合一

    - **基于注解的spring_3[1].0.x_MVC学习笔记**: 这份笔记将详细解释Spring 3.0.x版本中的注解驱动开发,包括依赖注入、AOP和数据绑定等。 - **Spring入门教程**: 这是Spring框架的基础教程,涵盖了Spring的核心概念...

    Spring框架学习笔记

    Spring框架是Java开发中广泛应用的轻量级...这份"Spring框架学习笔记"会深入探讨以上各个知识点,通过PDF文档的形式,提供详细的讲解和实例,对于想要深入了解和学习Spring框架的人来说,无疑是一份实用的学习资源。

    马士兵老师spring框架学习笔记

    马士兵老师是知名的Java教育专家,他的Spring框架学习笔记深入浅出,对于初学者和进阶者来说都是一份宝贵的资源。这份笔记涵盖了Spring的核心概念、配置、AOP(面向切面编程)、DI(依赖注入)等关键知识点。 1. **...

    学习笔记:尚硅谷Spring6基础篇

    ### 学习笔记:尚硅谷Spring6基础篇 #### 一、Spring框架概述 ##### 1.1 Spring是什么? Spring是一款主流的Java EE轻量级开源框架,由“Spring之父”Rod Johnson提出并创立。Spring的主要目标是简化Java企业级...

    Spring学习笔记(精华全记录)

    ### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...

    Spring学习笔记+学习源码.zip

    这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...

    spring指南学习笔记

    标题和描述均提到了“spring指南学习笔记”,这意味着文档聚焦于Spring框架的学习心得与关键概念。Spring是一个开源的Java企业级应用框架,以其强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect ...

    Spring相关的笔记,包含ioc、DI、AOP、Spring事务等等

    这份笔记涵盖了Spring的核心概念和技术,包括IOC(Inverse of Control,控制反转)、DI(Dependency Injection,依赖注入)、AOP(Aspect Oriented Programming,面向切面编程)以及Spring事务管理。以下是对这些...

    spring mvc学习笔记

    ### Spring MVC 学习笔记之 AOP 面向切面编程详解 #### 一、AOP 概念概述 面向切面编程(Aspect Oriented Programming, AOP)是一种编程范式,它允许程序员定义“切面”来封装那些与业务逻辑本身无关的功能,比如...

    spring培训学习笔记

    IoC是Spring的核心特性之一,它反转了传统对象创建和管理的流程。在没有IoC的情况下,对象会自行创建依赖的对象,而在Spring中,这一过程被容器接管,对象的创建和依赖关系的管理由Spring容器负责。这样做的好处在于...

    Spring学习笔记.doc

    ### Spring学习笔记知识点详解 #### 一、Spring框架概述 **1.1 什么是Spring** Spring框架是一个开源的轻量级应用框架,主要用于简化企业级应用程序的开发过程。它的核心特性在于提供了一种灵活的方式来组织和...

    javaSpring学习笔记

    在“Java Spring学习笔记”中,你将找到对Spring框架的全面介绍,包括IoC(控制反转)和DI(依赖注入)原理、AOP(面向切面编程)、Spring MVC、Spring Boot等核心内容。每个主题都结合了理论知识和实际示例,帮助你...

    SPRING学习笔记2

    Spring学习笔记2涵盖了Spring框架的核心概念和重要特性,旨在帮助开发者深入理解并熟练掌握Spring的使用。 1. **依赖注入(Dependency Injection, DI)**:这是Spring最核心的设计原则,它允许对象之间的依赖关系在...

    spring5学习笔记

    本学习笔记将深入探讨Spring 5的各个方面,包括基本概念、配置、核心组件以及最新特性。 首先,我们来了解一下Spring框架的核心概念。Spring的核心是IoC(Inversion of Control)容器,它负责管理对象的生命周期和...

Global site tag (gtag.js) - Google Analytics