本文主要介绍Struts2+Spring3+Mybatis3开发环境搭建

Struts和Spring不过多介绍。
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plan Old Java Objects,普通的 Java 对象)映射成数据库中的记录。
 
环境:
Struts-2.3.14
Spring-3.2.1
MyBatis-3.2.2
 
在apache-tomcat-7.0.39下测试通过
 
Project目录结构
lib文件夹下的依赖包:
 
入口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_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>test_ssm</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <!-- 配置spring资源 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/applicationContext-*.xml</param-value>
</context-param> <!-- 配置spring -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <!-- 配置Struts2 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,/config/struts.xml</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> </web-app>
Spring配置文件
applicationContext-common.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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> <!-- 启用spring注解支持 -->
<context:annotation-config /> <!-- 配置DataSource数据源 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean> <!--创建sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:config/mabatis-config.xml" />
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:com/jialin/mapper/**/*.xml" /> </bean> <!-- 配置事务管理器,注意这里的dataSource和SqlSessionFactoryBean的dataSource要一致,不然事务就没有作用了 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean> <!-- 配置事务的传播特性 -->
<bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="edit*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="del*">PROPAGATION_REQUIRED</prop>
<prop key="*">readOnly</prop>
</props>
</property>
</bean> </beans>

applicationContext-beans.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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> <bean id="userInfoDao" class="org.mybatis.spring.mapper.MapperFactoryBean"
scope="prototype">
<property name="mapperInterface" value="com.jialin.dao.UserInfoDao" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean> <bean id="userInfoService" class="com.jialin.service.UserInfoService"
scope="prototype">
<property name="userInfoDao" ref="userInfoDao" />
</bean> <!-- 为IRegisterService接口配置事务拦截器,baseTransactionProxy是事务拦截器,在Controller中获取这个对象 -->
<bean id="IUserInfoService" parent="baseTransactionProxy">
<!-- 实现类 -->
<property name="target" ref="userInfoService" />
</bean> <bean id="userManageAction" class="com.jialin.action.UserManageAction"
scope="prototype">
<property name="userInfoService" ref="IUserInfoService" />
</bean> </beans>
Struts配置文件
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 将Action的创建交给spring来管理 -->
<constant name="struts.objectFactory" value="spring" /> <!-- 更改struts2请求Action的后缀名,默认为action。若想去掉后缀,设为","即可 -->
<constant name="struts.action.extension" value=","></constant> <package name="abstract_struts" abstract="true" extends="struts-default"
namespace="/">
<!-- 公共东西可以放到这个抽象包下 -->
</package> <!-- 包含的配置文件 -->
<include file="/config/struts-user.xml"></include>
</struts>

struts-user.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="MyActions" extends="struts-default">
<action name="*_*" class="userManageAction" method="{1}">
<result name="success" type="redirect">/{2}.jsp</result>
</action>
</package> </struts>
Mybatis配置文件
mabatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <typeAliases>
<typeAlias alias="userinfo" type="com.jialin.entity.UserInfo"/>
</typeAliases> <!-- 因为已经在applicationContext-common中指定了映射文件的位置,这里就省略了 -->
<!-- <mappers>
<mapper resource="com/jialin/dao/registerMapper.xml"/>
</mappers> --> </configuration>

UserManageAction.java

package com.jialin.action;

import com.jialin.entity.UserInfo;
import com.jialin.service.IUserInfoService; public class UserManageAction { private IUserInfoService userInfoService; public IUserInfoService getUserInfoService() {
return userInfoService;
} public void setUserInfoService(IUserInfoService userInfoService) {
this.userInfoService = userInfoService;
} private UserInfo userInfo; public UserInfo getUserInfo() {
return userInfo;
} public void setUserInfo(UserInfo userInfo) {
this.userInfo = userInfo;
} public String insertUser() { userInfoService.insertUser(userInfo);
return "success";
} public String editUser() { userInfoService.edit(userInfo);
return "success";
} public String removeUser() { userInfoService.remove(userInfo);
return "success";
} public String getUserById() {
userInfoService.get(userInfo);
return "success";
} public String getListByName() { userInfoService.getList(userInfo); return "success";
} public String getAllUser() {
userInfoService.getAllUser();
return "success";
} }

IUserInfoService.java

package com.jialin.service;

import java.util.List;

import com.jialin.entity.UserInfo;

public interface IUserInfoService {
public void insertUser(UserInfo user); public void edit(UserInfo user); public void remove(UserInfo user); public UserInfo get(UserInfo user); public List getList(UserInfo user); public List getAllUser();
}

UserInfoService.java

package com.jialin.service;

import java.util.List;

import java.util.Iterator;

import com.jialin.dao.UserInfoDao;
import com.jialin.entity.UserInfo; public class UserInfoService implements IUserInfoService { private UserInfoDao userInfoDao; public UserInfoDao getUserInfoDao() {
return userInfoDao;
} public void setUserInfoDao(UserInfoDao userInfoDao) {
this.userInfoDao = userInfoDao;
} @Override
public void insertUser(UserInfo user)
{
userInfoDao.insertUser(user);
} @Override
public void edit(UserInfo user) {
userInfoDao.edit(user); } @Override
public void remove(UserInfo user) {
userInfoDao.remove(user); } @Override
public UserInfo get(UserInfo user) {
UserInfo user1=userInfoDao.get(user);
System.out.println(user1.getUsername());
return user1;
} @Override
public List getList(UserInfo user) {
List list=userInfoDao.getList(user); for(Iterator iter=list.iterator();iter.hasNext();)
{
UserInfo user1=(UserInfo)iter.next();
System.out.println(user1.getUsername()+",");
} return list;
} @Override
public List getAllUser() {
List list= userInfoDao.getAllUser();
for(Iterator iter=list.iterator();iter.hasNext();)
{
UserInfo user=(UserInfo)iter.next();
System.out.println(user.getUsername()+",");
} return list;
} }

UserInfoDao.java

package com.jialin.dao;

import java.util.List;

import com.jialin.entity.UserInfo;

public interface UserInfoDao {

    public void insertUser(UserInfo user);

    public void edit(UserInfo user);

    public void remove(UserInfo user);

    public UserInfo get(UserInfo user);

    public List getList(UserInfo user);

    public List getAllUser();
}

UserInfo.java

package com.jialin.entity;

public class UserInfo {
private int id;
private String username;
private String password;
private String ismanager; public void setIsmanager(String ismanager) {
this.ismanager = ismanager;
} public String getIsmanager() {
return ismanager;
} public void setUsername(String username) {
this.username = username;
} public String getUsername() {
return username;
} public void setPassword(String password) {
this.password = password;
} public String getPassword() {
return password;
} public void setId(int id) {
this.id = id;
} public int getId() {
return id;
} }

Mybaitis映射文件

userinfo-mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.jialin.dao.UserInfoDao">
<!-- 自动生成id策略 -->
<insert id="insertUser" parameterType="userinfo" useGeneratedKeys="true" keyProperty="id">
insert into userinfo(username,password,ismanager) values (#{username},#{password},#{ismanager})
</insert> <!-- userInfoResultMap是userinfo-resultmap.xml中定义的resultmap -->
<select id="getList" parameterType="userinfo" resultType="list" resultMap="userInfoResultMap">
select * from userinfo where username like '%' #{username} '%'
</select> <select id="getAllUser" resultType="list" resultMap="userInfoResultMap">
select * from userinfo
</select> <select id="get" parameterType="userinfo" resultType="com.jialin.entity.UserInfo" resultMap="userInfoResultMap">
<![CDATA[
select * from userinfo where id = #{id}
]]>
</select> <update id="edit" parameterType="userinfo">
update userinfo set
username = #{username},
password = #{password}
where id = #{id}
</update> <delete id="remove" parameterType="userinfo">
delete from userinfo where id = #{id}
</delete> </mapper>

userinfo-resultMap.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jialin.dao.UserInfoDao">
<resultMap type="com.jialin.entity.UserInfo" id="userInfoResultMap">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="password" column="password"/>
<result property="ismanager" column="ismanager"/>
</resultMap>
</mapper>

测试jsp

<%@ page contentType="text/html; charset=UTF-8"%>

<html>
<head>
<title></title> <script type="text/javascript"> function insertUser()
{
var myform=document.forms[0];
myform.action="insertUser_success";
myform.method="post";
myform.submit();
} function getUserByName()
{
var myform=document.forms[0];
myform.action="getListByName_success";
myform.method="post";
myform.submit();
} function getAllUser()
{
var myform=document.forms[0];
myform.action="getAllUser_success";
myform.method="post";
myform.submit();
} function editUser()
{
var myform=document.forms[0];
myform.action="editUser_success";
myform.method="post";
myform.submit();
} function getUserById()
{
var myform=document.forms[0];
myform.action="getUserById_success";
myform.method="post";
myform.submit();
} function removeUser()
{
var myform=document.forms[0];
myform.action="removeUser_success";
myform.method="post";
myform.submit();
}
</script> </head>
<body>
<h1>用户管理</h1>
<hr>
<form name="myform" >
id:<input type="text" name="userInfo.id"> <br>
用户名:<input type="text" name="userInfo.username"> <br>
密码:<input type="text" name="userInfo.password"> <br>
是否为管理员:<input type="text" name="userInfo.ismanager"><br>
<input type="button" name="btninsert" onclick="insertUser()" value="增加" />
<input type="button" name="btnedit" onclick="editUser()" value="修改" />
<input type="button" name="btnremove" onclick="removeUser()" value="删除" /><br>
<input type="button" name="btnget" onclick="getUserById()" value="按id查询" />
<input type="button" name="btngetlist" onclick="getUserByName()" value="按名称查询" />
<input type="button" name="btngetall" onclick="getAllUser()" value="查询全部" />
</form>
</body>
</html>

本文转自:http://www.cnblogs.com/Augusdi/archive/2013/06/12/3132813.html

Struts2+Spring3+Mybatis3开发环境搭建的更多相关文章

  1. 【转】SpringMVC+Spring3+Hibernate4开发环境搭建

    原文地址: SpringMVC+Spring3+Hibernate4开发环境搭建

  2. SpringMVC+Spring3+hibernate4 开发环境搭建以及一个开发实例教程

    刚刚接触了SpringMVC这个框架,因此有必要把它拿过来同hibernate.Spring框架进行集成和开发一个实例,在真正企业从头开发的项目中往往一个稳定的开发环境至关重要,开发一个项目选择什么样 ...

  3. schemamvcSpringMVC+Spring3+Hibernate4开发环境搭建

    上班之余抽点时间出来写写博文,希望对新接触的朋友有帮助.今天在这里和大家一起学习一下schemamvc <?xml version="1.0" encoding=" ...

  4. 使用Maven搭建Struts2框架的开发环境

    一.创建基于Maven的Web项目

  5. struts2 + spring3 + mybatis3 环境搭建

    struts2 + spring3 + mybatis3 1. 框架下载 struts2: http://struts.apache.org/ 下载 struts-2.3.14-all.zip spr ...

  6. SpringMVC+Spring3+Hibernate4开发环境的搭建

    在项目早期比较简单,大多用JSP .Servlet + JDBC 直接获取,以后使用 Struts1(Struts2)+Spring+Hibernate, 严格格按照分层概念驱动项目开发.利用这段时间 ...

  7. Struts2开发环境搭建,及一个简单登录功能实例

    首先是搭建Struts2环境. 第一步 下载Struts2去Struts官网 http://struts.apache.org/ 下载Struts2组件.截至目前,struts2最新版本为2.3.1. ...

  8. mybatis实战教程(mybatis in action)之一:开发环境搭建

    mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载. 首先建立一 ...

  9. spring mvc4.1.6 + spring4.1.6 + hibernate4.3.11 + mysql5.5.25 开发环境搭建及相关说明

    一.准备工作 开始之前,先参考上一篇: struts2.3.24 + spring4.1.6 + hibernate4.3.11 + mysql5.5.25 开发环境搭建及相关说明 struts2.3 ...

随机推荐

  1. spring boot实战(第十二篇)整合RabbitMQ

    前言 最近几篇文章将围绕消息中间件RabbitMQ展开,对于RabbitMQ基本概念这里不阐述,主要讲解RabbitMQ的基本用法.Java客户端API介绍.spring Boot与RabbitMQ整 ...

  2. maven No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

    maven install项目时出错,提示信息如下: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-pl ...

  3. 父页面刷新 保持iframe页面url不变

    思路:点击父页面时写cookies-->刷新时从cookies中奖内容读取出来. 本文转自:http://blog.163.com/sdolove@126/blog/static/1146378 ...

  4. Android 和iOS中 View的滚动

    在最近的程序中用到了Android中的View的滚动,记录一下,待总结.

  5. iOS __block类型变量作用域

    看下图 在c语言中,2个独立的函数是不可能互相访问局部变量的,但是__block提供了这个功能,它不单单能读变量,还可以对变量进行写!上图说明,block获得了i最后的真实值5,没有只取得0,这都是& ...

  6. 【USACO】checker

    一看题目 经典的8皇后问题 不过是皇后数量可变而已 不用想 回溯法. 需要个生成每次可选择序列的函数, 在存储可选择的序列时按照先大后小的顺序排的.这样每次找最小和去掉最小都很方便,只要有个记录数量的 ...

  7. 【USACO】beads

    题目: You have a necklace of N red, white, or blue beads (3<=N<=350) some of which are red, othe ...

  8. July 30th, Week 31st Saturday, 2016

    No matter how far you may fly, never forget where you come from. 无论你能飞多远,都别忘了你来自何方. No matter how fa ...

  9. Android下利用Bitmap切割图片

    在自己自定义的一个组件中由于需要用图片显示数字编号,而当前图片就只有一张,上面有0-9是个数字,于是不得不考虑将其中一个个的数字切割下来,需要显示什么数字,只需要组合一下就好了. 下面是程序的关键代码 ...

  10. Fresco 源码分析(三) Fresco服务端处理(1) ImagePipeline为何物

    4.3 服务端的处理 备注: 因为是分析,而不是设计,所以很多知识我们类似于插叙的方式叙述,就是用到了哪个知识点,我们再提及相关的知识点,如果分析到了最后,我想想是不是应该将这个架构按照设计的方式,重 ...