- 浏览: 30295 次
- 性别:
- 来自: 常德
文章分类
最新评论
步骤:
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}
发表评论
-
Eclipse 快捷键大全
2012-11-01 14:37 0Ctrl+1 快速修复 Ctrl+D ... -
jdbc 辅助类 DBHelp
2011-06-16 21:05 1558jdbc 通用dbHepler 类,充分利用jdbc ... -
jsp 验证码
2011-02-25 16:23 1014用jsp 验证码的步骤: 1、导入无缝刷新的js 文件 ... -
java 性能调优
2011-02-20 16:08 7151:循环 ■ 在重要的循环里,消除循环终止判断 ... -
Md5 加密
2011-02-20 12:09 818所谓MD5,即"Message-Digest Alg ... -
java 文件上传
2011-02-19 21:25 990使用 Apache的Commons FileUpload 组件 ... -
java 文件下载
2011-02-18 20:17 1384第一种下载方式: 此方式 下载,在服务器上必须有文 ... -
java 一些小技巧
2011-02-17 21:45 7251.在连接字符串的时候尽量避免使用String = " ... -
javamail 邮件发送
2011-02-17 21:26 7441、java 发送邮件 用java ... -
js 与 java 的嵌套
2011-02-16 20:45 0在javaee 开发中 js 是客户端 解析 ... -
apache And build.xml 文件解读
2011-02-15 17:48 779And 是 Apache软件基金会JAKARTA目录中的一个 ... -
xp 下的jdk 环境配置
2011-02-13 17:26 829在安装好 JDK 之后,我们一般是把JDK 安装在C盘根目录下 ...
相关推荐
struts1.3+spring2.5+ibatis2.3.4整合
这个"struts2 + spring2.5 + ibatis2.3.4整合包文件"包含了这三个框架的集成,用于搭建一个完整的Java Web应用程序。以下是对这些框架及其整合的详细说明: 1. Struts2:Struts2是基于Apache Struts 1的升级版,它...
总的来说,Struts2+Spring2.5+Ibatis2.3架构是一个成熟且广泛应用的Java Web开发组合,它将MVC设计模式、依赖注入和数据库操作有效地融合在一起,为开发者提供了强大的工具集,便于构建复杂的企业级应用。...
标题“spring2.5+struts2+ibatis2.3”揭示了这是一个关于整合Spring 2.5、Struts 2和iBATIS 2.3的项目。这三个技术都是Java开发中的重要组件,主要用于构建企业级Web应用程序。下面我们将深入探讨这三个框架的核心...
Struts1.1+Spring2.5+Ibatis2.3+Ajax整合是一个经典的Java Web开发框架组合,常用于构建企业级应用。这个源代码集合提供了如何将这四个技术有效地结合在一起的实例,以实现一个功能强大的、具有无刷新特性的用户界面...
在IT领域,构建高效、可扩展的企业级应用是至关重要的,而"Ext2.0+Struts2+Spring2.5+Ibatis2"的组合就是一种常见的技术栈,用于实现这样的目标。这个技术组合提供了从用户界面到数据访问的全方位解决方案。 **Ext...
本项目以"Spring2.5+ibatis2.3+Extjs2.0+Struts2实现用户管理"为主题,旨在为初学者提供一个全面理解这些技术集成使用的实例。下面将详细阐述这四个关键组件及其在用户管理系统中的作用。 首先,Spring框架是Java...
**SSI(Struts2+Spring2.5+Ibatis2.3)项目实例详解** **一、Struts2框架** Struts2是一个基于MVC设计模式的Java Web开发框架,它继承了Struts1和WebWork的优点,提供了一种更灵活、更强大的控制层解决方案。在SSI...
分为: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 整合开发包_ _02部分 只要将这两个包全下载下来,就可以搭建struts2.1.8 + spring 2.5 + ibatis2整合开发的...
本项目"Structs2.0+Spring2.5+Ibatis整合例子"就是这样一个示例,展示了如何将Struts2、Spring和iBatis这三个流行的技术栈整合在一起,以实现MVC(模型-视图-控制器)架构。以下将详细阐述这三个框架的核心功能以及...
本人主要是项目的SSI环境的搭建及登录功能,并不是完整的一套ERP系统,里面有相关文档,你可以根据相关文档继续开发学习!
在这个项目中,使用的是Spring 2.5、Struts 2.1和iBatis 2.3版本,这些组件在2000年代末到2010年代初是非常流行的技术。 **Spring框架**: Spring是一个全面的企业级应用开发框架,提供依赖注入(Dependency ...
在这个项目中,开发者利用了Spring 2.5、Struts 2.1和iBatis 2.3这三个组件来实现数据的增删改查功能,并且结合了存储过程来增强数据库操作的灵活性。同时,通过Junit进行单元测试,确保代码的正确性和稳定性。 ...
Struts2、Spring2.5 和 iBatis2 是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。下面将详细讲解这三大框架的集成配置以及log4j的相关知识。 首先,Struts2 是一个基于MVC(Model-...
本演示示例主要使用目前最新,最流行技术Struts2.1 +Spring 2.5.1+ibatis2.3整合开发而成,这与我以前发布的版本中最大特色是整合了Spring2.5.1中的注解功能和半自动化工具ibatis技术,这是本示例的两大特色,简化了配置...
Struts2、Spring和iBatis是Java Web开发中经典的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。这个"Struts2+Spring2.5+iBatis完整增删改查Demo"提供了一个完整的集成示例,包括所有必要...
**SSI(Struts2 + Spring2.5 + iBatis)项目实例详解** SSI,即Struts2、Spring和iBatis的组合,是Java Web开发中常见的技术栈,用于构建高效、灵活的企业级应用程序。这个项目实例展示了如何将这三个框架集成到...
Struts2、Spring和iBatis是三个非常流行的开源Java框架,它们分别负责MVC模式中的表现层、业务层和数据访问层。将这三个框架整合在一起可以构建出强大的企业级应用,实现各层的解耦合,提高代码的可维护性和可扩展性...