`
pingchajava
  • 浏览: 30295 次
  • 性别: Icon_minigender_1
  • 来自: 常德
社区版块
存档分类
最新评论

spring2.5+spring MVC + ibatis2.3.4 + FreeMarker2.3

    博客分类:
  • java
阅读更多

步骤:


1、 导入jar 包
Spring2.5.jar  commons-logging.jar ,ibatis-2.3.4.726.jar ,mysql-connecotr.jar , freemarker.jar
2、 写实体bean ,dao
3、 配置 该实体bean 的ibatis.xml 文档
      1) 配置结果集
      2) 写相应的sql 语句
4、 配置spring + ibatis 的集成
       1) 配置数据源
       2) 配置sqlMapClient
       3) 事务管理器
       4) 注入sqlMapClient 及其它对象
5、 配置spring + freeMarker 的集成
       1) 控制器的映射
       2) 方法解析
       3) 视图解析
       4) FreeMarker 解析
       5) 当前控制器的注入
6、 写spring MVC 的controll 类
7、 页面开发
8、 Web.xm 配置
      1)、读取spring 配置文件
      2) spring 编码过滤

      3)spring MVC 的DispatcherServlet

 

实例:

javaBean:
public class User implements Serializable {
	private static final long serialVersionUID = 1L;

	private Integer id;
	
	private String name;
	
	private String sex;
	
	private Integer age;
	
	private String phone;
              
               get .... 
               set ...... 方法
}

 

实体bean的ibatis 文件 userModel.xml

<sqlMap namespace="User">

  <!-- Use type aliases to avoid typing the full classname every time. -->
  <typeAlias alias="User" type="com.figure.entry.User"/>

  <!--定义了一个结果集 -->
  <resultMap id="userResult" class="User">
    <result property="id" column="id"/>
    <result property="name" column="name"/>
    <result property="age" column="age"/>
    <result property="sex" column="sex"/>
    <result property="phone" column="phone"/>
  </resultMap>

  <!-- Select with no parameters using the result map for Account class. -->
  <select id="selectAllUser" resultMap="userResult">
    select * from user
  </select>

  <!-- A simpler select example without the result map.  Note the 
       aliases to match the properties of the target result class. -->
  <select id="selectUserById" parameterClass="Integer"  resultClass="User">
    select
      id ,
      name,
      sex,
      age,
      phone
    from user
    where id = #id#
  </select>
   
  <!-- Insert example, using the Account parameter class -->
  <insert id="insertUser" parameterClass="User">
    insert into user (
      id,
      name,
      sex,
      age,
      phone )
    values ( #id#, #name#, #sex#, #age#,#phone# )
  </insert>

  <!-- Update example, using the Account parameter class -->
  <update id="updateUser" parameterClass="User">
    update user set
      name = #name#,
      sex = #sex#,
      age = #age#,
      phone=#phone#
    where
      id = #id#
  </update>

  <!-- Delete example, using an integer as the parameter class -->
  <delete id="deleteUserById" parameterClass="integer">
    delete from user where id = #id#
  </delete>

</sqlMap>

 

userDaoImpl 类

public class UserDaoImpl implements UserDao {
	
	private SqlMapClient sqlMapClient;

	public void setSqlMapClient(SqlMapClient sqlMapClient) {
		this.sqlMapClient = sqlMapClient;
	}

	public void del(Integer id) throws Exception {
		this.sqlMapClient.delete("deleteUserById",id);

	}

	public void save(User user)throws Exception {
		this.sqlMapClient.insert("insertUser",user);
	}

	public void update(User user)throws Exception {
		this.sqlMapClient.update("updateUser",user);
	}

	public List<User> users()throws Exception {
		return this.sqlMapClient.queryForList("selectAllUser");
	}

	public User getUser(Integer id) throws Exception {
		return (User) this.sqlMapClient.queryForObject("selectUserById",id);
	}

}

 

   springCommon.xml配置

 <bean id="dataSource"  class="org.springframework.jdbc.datasource.DriverManagerDataSource">      
             <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>      
             <property name="url" value="jdbc:mysql://localhost/first_test"></property>      
             <property name="username" value="root"></property>      
             <property name="password" value="root"></property>      
           </bean>     

	<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="configLocation" value="classpath:SqlMapConfig.xml"/>
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
  <!-- 事务管理器 -->      
 <bean id="ibatisManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">      
  <property name="dataSource" ref="dataSource"></property>      
 </bean>      
   <!-- 事务拦截器 -->      
 <bean id="trInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">      
  <property name="transactionManager" ref="ibatisManager"></property>      
  <property name="transactionAttributes">      
   <props>      
   <prop key="*">PROPAGATION_REQUIRED</prop>      
   </props>      
  </property>      
 </bean>      
 <!-- 自动代理 -->      
 <bean id="autoProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">      
     <property name="beanNames">      
     <list>      
      <value>*DAO</value>      
      </list>      
     </property>      
     <property name="interceptorNames">      
        <list>      
            <value>trInterceptor</value>      
         </list>      
     </property>      
    </bean>
	
	<bean id="userDao" class="com.figure.dao.impl.UserDaoImpl">
		<property name="sqlMapClient" ref="sqlMapClient"></property>	
	</bean>
	
	<bean id="userService" class="com.figure.service.impl.UserServiceImpl">
		<property name="userDao" ref="userDao"></property>
	</bean>

 

   UserFtl.java类

public class UserFtl extends MultiActionController {
	
		private UserService userService;
		public void setUserService(UserService userService) {
		this.userService = userService;
	}
	
	public ModelAndView addUser(HttpServletRequest request,
			HttpServletResponse response,User user) throws Exception{
		System.out.println(user);
		userService.save(user);
		return userList(request,response);
	}
	
	public ModelAndView userList(HttpServletRequest request,
			HttpServletResponse response) throws Exception{
		List<User> list =userService.users();
		Map map = new HashMap();
		map.put("userList", list);
		return new ModelAndView("test",map);
	}

 spring  exampleServlet.xml

 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver">
        </bean>


        <!--配置控制器的映射-->

        <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

                <property name="mappings">
                    <props>
                        <!--  <prop key="*.do">userAction</prop>-->
                        <prop key="*.do">userFtl</prop>
                    </props>
                </property>

        </bean>
        
        <bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
 <property name="paramName">
   <value>method</value>
  </property>
  <property name="defaultMethodName">
   <value>htmlFile</value>
  </property>
      </bean>  
        
        <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
  <property name="templateLoaderPath" value="/WEB-INF/freemarker/"/>
  <property name="freemarkerSettings" >
     <props>
       <prop key="template_update_delay">0</prop>
       <prop key="default_encoding">gbk</prop>
       <prop key="locale">zh_CN</prop>
     </props>
  </property>
 <!--   <property name="exposeSpringMacroHelpers" value="true"/>-->
</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
 <!-- 是否需要缓存 -->
 <property name="cache">
   <value>true</value>
 </property>
 
 <property name="suffix">
  <value>.ftl</value>
 </property>
 
 <property name="prefix">
  <value></value>
 </property>
 
 <!-- 解决中文乱码问题 -->
 <property name="contentType" value="text/html;charset=gbk"></property>
 <property name="viewClass">
  <value>org.springframework.web.servlet.view.freemarker.FreeMarkerView</value>
 </property>
</bean>
        

             <bean id="userFtl" class="com.figure.action.UserFtl">
        <property name="userService" ref="userService"></property>
         <property name="methodNameResolver">
           <ref bean="methodNameResolver"/>
     </property>
        
        </bean>
</beans>

 
web.xml配置文件

<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext-*.xml</param-value>
	</context-param>
	
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>
  
  <filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>gbk</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>
	
	<servlet>
        <servlet-name>exampleServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>         
         <param-name>contextConfigLocation</param-name>         
         <param-value>/WEB-INF/exampleServlet.xml</param-value>
        </init-param>
      <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>exampleServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

 三、常遇到的问题

 
1、 乱码问题:

在freemarker 中 显示乱码:

配置 FreeMarker 的解析中

<prop key="default_encoding">gbk</prop> 换成gbk

  

   插入到数据库时出现乱码:

      在web.xml 中 配置的过滤器中,编码换成gbk

 

2、 找不到freemarker 页面

在配置 FreeMarker 的解析,有一个参数

<property name="templateLoaderPath" value="/WEB-INF/freemarker/"/>

所以在

new ModelAndView("test",map) 跳转页面时,该text.ftl 必须位于当前目录下

 

2)在 new ModelAndView("test",map) 不需要 加上后缀名 ,因为在视图解析时,已经配置了

<property name="suffix"> //所有显示视图的时候,都会+ 上.ftl 的后缀

  <value>.ftl</value>

 </property> , 所以始终会找寻test.ftl 这个文件

 

 

3、 如何知道MultiActionController 中调用了哪个方法

 

通过两个配置,及 在地址栏中输入地址时所带的参数决定 的

1)通过这种配置

<bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">

   …  两个属性

 

2) 通过地址栏访问 (method 所传递的参数就是 要调用的方法名

   http://localhost:8080/firstTest/addUser.do?method=addUser

 

4、 MultiActionController 是如何把页面上的form 封装到实体bean的

该方法应如此写:

  public ModelAndView addUser(HttpServletRequest request,

          HttpServletResponse response,User user)

 

在调用该方法时:

  页面上的名称会通过 反射自动映射到 user 对象 中

 

 

5、 freemarker 中不能这样写

 <#if userList !=null> </#if>

应换成: <#if userList??> </#if>

 

6、 Spring MVC 是如何把查询所得到的结果集带到页面上的

通过map 集合 再 new ModelAndView("test",map)带过去

 

7、 页面上如何获得map 中的值

${key}


 

1
1
分享到:
评论

相关推荐

    struts1.3+spring2.5+ibatis2.3.4整合

    struts1.3+spring2.5+ibatis2.3.4整合

    struts2 + spring2.5 + ibatis2.3.4整合包文件

    这个"struts2 + spring2.5 + ibatis2.3.4整合包文件"包含了这三个框架的集成,用于搭建一个完整的Java Web应用程序。以下是对这些框架及其整合的详细说明: 1. Struts2:Struts2是基于Apache Struts 1的升级版,它...

    Struts2+Spring2.5+Ibatis2.3架构

    总的来说,Struts2+Spring2.5+Ibatis2.3架构是一个成熟且广泛应用的Java Web开发组合,它将MVC设计模式、依赖注入和数据库操作有效地融合在一起,为开发者提供了强大的工具集,便于构建复杂的企业级应用。...

    spring2.5+struts2+ibatis2.3

    标题“spring2.5+struts2+ibatis2.3”揭示了这是一个关于整合Spring 2.5、Struts 2和iBATIS 2.3的项目。这三个技术都是Java开发中的重要组件,主要用于构建企业级Web应用程序。下面我们将深入探讨这三个框架的核心...

    Struts1.1+spring2.5+ibatis2.3+Ajax整合的源代码

    Struts1.1+Spring2.5+Ibatis2.3+Ajax整合是一个经典的Java Web开发框架组合,常用于构建企业级应用。这个源代码集合提供了如何将这四个技术有效地结合在一起的实例,以实现一个功能强大的、具有无刷新特性的用户界面...

    Ext2.0+struts2+spring2.5+ibatis2

    在IT领域,构建高效、可扩展的企业级应用是至关重要的,而"Ext2.0+Struts2+Spring2.5+Ibatis2"的组合就是一种常见的技术栈,用于实现这样的目标。这个技术组合提供了从用户界面到数据访问的全方位解决方案。 **Ext...

    Spring2.5+ibatis2.3+Extjs2.0+Struts2实现用户管理

    本项目以"Spring2.5+ibatis2.3+Extjs2.0+Struts2实现用户管理"为主题,旨在为初学者提供一个全面理解这些技术集成使用的实例。下面将详细阐述这四个关键组件及其在用户管理系统中的作用。 首先,Spring框架是Java...

    SSI(struts2+spring2.5+ibatis2.3)项目实例

    **SSI(Struts2+Spring2.5+Ibatis2.3)项目实例详解** **一、Struts2框架** Struts2是一个基于MVC设计模式的Java Web开发框架,它继承了Struts1和WebWork的优点,提供了一种更灵活、更强大的控制层解决方案。在SSI...

    struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _02部分

    分为:struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _01部分 struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _02部分 只要将这两个包全下载下来,就可以搭建struts2.1.8 + spring 2.5 + ibatis2整合开发的...

    struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _01部分

    分为:struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _01部分 struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _02部分 只要将这两个包全下载下来,就可以搭建struts2.1.8 + spring 2.5 + ibatis2整合开发的...

    Structs2.0+Spring2.5+Ibatis整合例子

    本项目"Structs2.0+Spring2.5+Ibatis整合例子"就是这样一个示例,展示了如何将Struts2、Spring和iBatis这三个流行的技术栈整合在一起,以实现MVC(模型-视图-控制器)架构。以下将详细阐述这三个框架的核心功能以及...

    Struts2.2+Spring2.5+iBatis2.3的ERP项目

    本人主要是项目的SSI环境的搭建及登录功能,并不是完整的一套ERP系统,里面有相关文档,你可以根据相关文档继续开发学习!

    SSI框架实现增删改查(spring2.5 + struts2.1 + ibatis2.3)

    在这个项目中,使用的是Spring 2.5、Struts 2.1和iBatis 2.3版本,这些组件在2000年代末到2010年代初是非常流行的技术。 **Spring框架**: Spring是一个全面的企业级应用开发框架,提供依赖注入(Dependency ...

    ssi框架集成增删改查及存储过程(spring2.5+struts2.1+ibatis2.3)

    在这个项目中,开发者利用了Spring 2.5、Struts 2.1和iBatis 2.3这三个组件来实现数据的增删改查功能,并且结合了存储过程来增强数据库操作的灵活性。同时,通过Junit进行单元测试,确保代码的正确性和稳定性。 ...

    SSI2 Struts2+Spring2.5+IBatis2 配置

    Struts2、Spring2.5 和 iBatis2 是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。下面将详细讲解这三大框架的集成配置以及log4j的相关知识。 首先,Struts2 是一个基于MVC(Model-...

    Struts2.0+Springframework2.5+ibatis2.3完美整合用户登录及增删改查

    本演示示例主要使用目前最新,最流行技术Struts2.1 +Spring 2.5.1+ibatis2.3整合开发而成,这与我以前发布的版本中最大特色是整合了Spring2.5.1中的注解功能和半自动化工具ibatis技术,这是本示例的两大特色,简化了配置...

    Struts2+Spring2.5+Ibatis完整增删改查Demo(含全部jar包)

    Struts2、Spring和iBatis是Java Web开发中经典的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。这个"Struts2+Spring2.5+iBatis完整增删改查Demo"提供了一个完整的集成示例,包括所有必要...

    SSI--struts2+spring2.5+ibatis项目实例

    **SSI(Struts2 + Spring2.5 + iBatis)项目实例详解** SSI,即Struts2、Spring和iBatis的组合,是Java Web开发中常见的技术栈,用于构建高效、灵活的企业级应用程序。这个项目实例展示了如何将这三个框架集成到...

    struts2+spring2.5+ibatis2.3框架整合开发.doc

    Struts2、Spring和iBatis是三个非常流行的开源Java框架,它们分别负责MVC模式中的表现层、业务层和数据访问层。将这三个框架整合在一起可以构建出强大的企业级应用,实现各层的解耦合,提高代码的可维护性和可扩展性...

Global site tag (gtag.js) - Google Analytics