struts2 + spring3 + mybatis3 环境搭建
struts2 + spring3 + mybatis3
1. 框架下载
struts2: http://struts.apache.org/ 下载 struts-2.3.14-all.zip
spring3: http://www.springsource.org/spring-framework 下载 spring-framework-3.2.2-dist.zip
mybatis3: http://code.google.com/p/mybatis/ 下载 mybatis-3.2.2.zip 和 mybatis-spring-1.2.0-bundle.zip
2. 建示例工程
在Eclipse中新建示例工程,步骤就不详述了,我把工程取名为ssm_example。
3. struts2配置
3.1 src下创建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>
- <constant name="struts.devMode" value="true" />
- <package name="basic" extends="struts-default">
- <action name="index" class="cn.ssm.sample.action.IndexAction" method="execute">
- <result name="success">/WEB-INF/jsp/Index.jsp</result>
- </action>
- </package>
- </struts>
<?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> <constant name="struts.devMode" value="true" /> <package name="basic" extends="struts-default">
<action name="index" class="cn.ssm.sample.action.IndexAction" method="execute">
<result name="success">/WEB-INF/jsp/Index.jsp</result>
</action>
</package> </struts>
3.2 修改web.xml
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.3 从解压的struts-2.3.14-all的lib文件夹下,挑选了必须的和比较常用的jar包,放入WEB-INF/lib的文件夹下
- commons-fileupload-1.2.2.jar
- commons-io-2.0.1.jar
- commons-lang-2.4.jar
- commons-lang3-3.1.jar
- commons-logging-1.1.1.jar
- commons-logging-api-1.1.jar
- freemarker-2.3.19.jar
- javassist-3.11.0.GA.jar
- ognl-3.0.6.jar
- struts2-core-2.3.14.jar
- xwork-core-2.3.14.jar
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang-2.4.jar
commons-lang3-3.1.jar
commons-logging-1.1.1.jar
commons-logging-api-1.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.6.jar
struts2-core-2.3.14.jar
xwork-core-2.3.14.jar
3.4 建个测试用的IndexAction.java和Index.jsp
- package cn.ssm.sample.action;
- import com.opensymphony.xwork2.ActionSupport;
- public class IndexAction extends ActionSupport{
- @Override
- public String execute() throws Exception {
- // TODO Auto-generated method stub
- return super.execute();
- }
- }
package cn.ssm.sample.action;
import com.opensymphony.xwork2.ActionSupport;
public class IndexAction extends ActionSupport{
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return super.execute();
}
}
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- Hello world!
- </body>
- </html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
Hello world!
</body>
</html>
3.5 测试struts2
运行服务,在浏览器输入http://localhost:8080/ssm_example/index,如果配置没有错误,那么会出现Hello world!
4. spring3配置
4.1 config/spring下创建applicationContext.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:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
- <!-- enable component scanning (beware that this does not enable mapper
- scanning!) -->
- <context:component-scan
- base-package="cn.ssm.sample.action,cn.ssm.sample.service" />
- <!-- enable autowire -->
- <context:annotation-config />
- <!-- enable transaction demarcation with annotations -->
- <tx:annotation-driven />
- </beans>
<?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:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> <!-- enable component scanning (beware that this does not enable mapper
scanning!) -->
<context:component-scan
base-package="cn.ssm.sample.action,cn.ssm.sample.service" /> <!-- enable autowire -->
<context:annotation-config /> <!-- enable transaction demarcation with annotations -->
<tx:annotation-driven /> </beans>
4.2 修改web.xml
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/classes/applicationContext.xml
- </param-value>
- </context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml
</param-value>
</context-param>
4.3 添加相关jar包
- aopalliance-1.0.jar
- spring-aop-3.2.2.RELEASE.jar
- spring-beans-3.2.2.RELEASE.jar
- spring-context-3.2.2.RELEASE.jar
- spring-core-3.2.2.RELEASE.jar
- spring-expression-3.2.2.RELEASE.jar
- spring-jdbc-3.2.2.RELEASE.jar
- spring-tx-3.2.2.RELEASE.jar
- spring-web-3.2.2.RELEASE.jar
- struts2-spring-plugin-2.3.14.jar
aopalliance-1.0.jar
spring-aop-3.2.2.RELEASE.jar
spring-beans-3.2.2.RELEASE.jar
spring-context-3.2.2.RELEASE.jar
spring-core-3.2.2.RELEASE.jar
spring-expression-3.2.2.RELEASE.jar
spring-jdbc-3.2.2.RELEASE.jar
spring-tx-3.2.2.RELEASE.jar
spring-web-3.2.2.RELEASE.jar
struts2-spring-plugin-2.3.14.jar
4.4 修改struts.xml文件
添加:<constant name="struts.objectFactory" value="spring"></constant>
并且把class="cn.ssm.sample.action.IndexAction"改成class="indexAction"
4.5 修改Action
在IndexAction的类上,加上@Controller,这样Spring就能自动实例化成indexAction对象了。
4.6 测试spring
运行服务,在浏览器输入http://localhost:8080/ssm_example/index,如果配置没有错误,那么依然会出现Hello world!
5. mybatis3配置
5.1 数据库准备
这里采用mysql,下面的sql文来运行。
- CREATE SCHEMA `ssmsample` DEFAULT CHARACTER SET utf8 ;
- CREATE TABLE `ssmsample`.`user` (`id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(45) NULL, PRIMARY KEY('id') );
- INSERT INTO `ssmsample`.`user` (`id`,`name`) VALUES (1,'Ethan');
CREATE SCHEMA `ssmsample` DEFAULT CHARACTER SET utf8 ;
CREATE TABLE `ssmsample`.`user` (`id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(45) NULL, PRIMARY KEY('id') );
INSERT INTO `ssmsample`.`user` (`id`,`name`) VALUES (1,'Ethan');
5.2 修改applicationContext.xml
- <!-- 数据源配置 -->
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
- destroy-method="close">
- <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
- <property name="url"
- value="jdbc:mysql://localhost:3306/ssmsample?useUnicode=true&characterEncoding=utf8"></property>
- <property name="username" value="root"></property>
- <property name="password" value="admin"></property>
- </bean>
- <!-- transaction manager, use JtaTransactionManager for global tx -->
- <bean id="transactionManager"
- class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="dataSource" />
- </bean>
- <!-- define the SqlSessionFactory -->
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="typeAliasesPackage" value="cn.ssm.sample.dto" />
- </bean>
- <!-- scan for mappers and let them be autowired -->
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="cn.ssm.sample.dao" />
- </bean>
<!-- 数据源配置 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url"
value="jdbc:mysql://localhost:3306/ssmsample?useUnicode=true&characterEncoding=utf8"></property>
<property name="username" value="root"></property>
<property name="password" value="admin"></property>
</bean> <!-- transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean> <!-- define the SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="cn.ssm.sample.dto" />
</bean> <!-- scan for mappers and let them be autowired -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.ssm.sample.dao" />
</bean>
5.3 创建和修改相关类
UserMapper.java
- package cn.ssm.sample.dao;
- import cn.ssm.sample.dto.User;
- public interface UserMapper {
- User getUser(int id);
- }
package cn.ssm.sample.dao;
import cn.ssm.sample.dto.User;
public interface UserMapper {
User getUser(int id);
}
UserMapper.xml(和UserMapper.java同目录)
- <?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="cn.ssm.sample.dao.UserMapper">
- <select id="getUser" parameterType="int" resultType="User">
- SELECT *
- From user where id = #{id}
- </select>
- </mapper>
<?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="cn.ssm.sample.dao.UserMapper">
<select id="getUser" parameterType="int" resultType="User">
SELECT *
From user where id = #{id}
</select>
</mapper>
User.java
- package cn.ssm.sample.dto;
- public class User {
- int id;
- String name;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
package cn.ssm.sample.dto;
public class User {
int id;
String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
IndexSvr.java
- package cn.ssm.sample.service;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import cn.ssm.sample.dao.UserMapper;
- import cn.ssm.sample.dto.User;
- @Service
- public class IndexSvr {
- @Autowired
- UserMapper userMapper;
- public User getUser(int id) {
- return userMapper.getUser(id);
- }
- }
package cn.ssm.sample.service; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import cn.ssm.sample.dao.UserMapper;
import cn.ssm.sample.dto.User; @Service
public class IndexSvr { @Autowired
UserMapper userMapper; public User getUser(int id) {
return userMapper.getUser(id);
}
}
IndexAction.java
- package cn.ssm.sample.action;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import cn.ssm.sample.dto.User;
- import cn.ssm.sample.service.IndexSvr;
- import com.opensymphony.xwork2.ActionSupport;
- @Controller
- public class IndexAction extends ActionSupport{
- private User user;
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- @Autowired
- IndexSvr indexSvr;
- @Override
- public String execute() throws Exception {
- user = indexSvr.getUser(1);
- return super.execute();
- }
- }
package cn.ssm.sample.action; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import cn.ssm.sample.dto.User;
import cn.ssm.sample.service.IndexSvr; import com.opensymphony.xwork2.ActionSupport; @Controller
public class IndexAction extends ActionSupport{ private User user; public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} @Autowired
IndexSvr indexSvr; @Override
public String execute() throws Exception {
user = indexSvr.getUser(1);
return super.execute();
} }
index.jsp
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- Hello world! ${user.name }
- </body>
- </html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
Hello world! ${user.name }
</body>
</html>
5.4 添加jar包
- commons-dbcp-1.4.jar
- commons-pool-1.6.jar
- mybatis-3.2.2.jar
- mybatis-spring-1.2.0.jar
- mysql-connector-java-5.1.13-bin.jar
commons-dbcp-1.4.jar
commons-pool-1.6.jar
mybatis-3.2.2.jar
mybatis-spring-1.2.0.jar
mysql-connector-java-5.1.13-bin.jar
5.5 测试ssm
运行服务,在浏览器输入http://localhost:8080/ssm_example/index,如果配置没有错误,那么依然会出现Hello world!Ethan
struts2 + spring3 + mybatis3 环境搭建的更多相关文章
- Struts2+Spring3+Mybatis3开发环境搭建
本文主要介绍Struts2+Spring3+Mybatis3开发环境搭建 Struts和Spring不过多介绍. MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBa ...
- struts2+Hibernate4+spring3+EasyUI环境搭建之一:准备工作
SSHE环境搭建第一步:安装软件(经验:安装软件路径最好不要有空格.括弧.中文等特殊符号)1.Jdk72.tomcat73.maven34.MyEclipse10.7 破解及优化设置(设置本地安装jd ...
- struts2 框架 的环境搭建 与配置
一,Struts2简介: 1,来由:Struts(金属支架),在程序中表示起支撑作用的通用程序代码,Struts2是在Struts1框架的基础上融合了WebWork优秀框架升级得到的. 2,解释:St ...
- Eclipse 搭建struts2 spring3 hibernate3环境实战 待完善
1.struts2 目前是2.3版本,下载地址http://struts.apache.org/download.cgi struts2包 struts2-core-2.3.16.3.jar stru ...
- struts2+Hibernate4+spring3+EasyUI环境搭建之三:引入sututs2以及spring与sututs2整合
1.引入struts2 <!-- struts2 和心包 排除javassist 因为hibernate也有 会发生冲突--> <dependency> <groupId ...
- struts2+Hibernate4+spring3+EasyUI环境搭建之二:搭建spring
三.搭建spring3 1.引入spring3依赖 <!-- spring3 --> <dependency> <groupId>org.springframewo ...
- struts2+Hibernate4+spring3+EasyUI环境搭建之四:引入hibernate4以及spring3与hibernate4整合
1.导入hibernate4 jar包:注意之前引入的struts2需要排除javassist 否则冲突 <!-- hibernate4 --> <dependency> & ...
- struts2+Hibernate4+spring3+EasyUI环境搭建之五:引入jquery easyui
1.下载jquery easyui组件 http://www.jeasyui.com/download/index.php 2.解压 放到工程中 如图 3.jsp引入组件:必须按照如下顺序 ...
- Struts2+Spring3+MyBatis3整合以及Spring注解开发
分类: Web(2) 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在做一个SpringMVC+spring+MyBatis的项目,突然想起以前自己要搭建一个Struts2+Sprin ...
随机推荐
- Litjson序列化
var jsonStr = JsonMapper.ToJson(tmpType); var tmpObject = JsonMapper.ToObject<TestClass>(jsonS ...
- ubantu 文件系统的目录结构
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要, ...
- VC++ 获取本地IP和计算机名
主要是两个函数的使用,gethostname();.gethostbyname(); 自定义两个函数GetLocalHostName获取计算机名.GetIPAddress获取IP地址 int CIPD ...
- LeetCode: Merge Intervals 解题报告
Merge IntervalsGiven a collection of intervals, merge all overlapping intervals. For example,Given [ ...
- 用C#写一个实现进程监控的自动关机工具
今天QA部门需要进行Performance测试,因为跑job的时间会很长,下班也跑不完.所以想要做一个job运行完毕自动关机的工具. 原理就是检查进程的名称,如果检查不到相应的进程,就说明job已经跑 ...
- Qt学习之路3---Qt中的坐标系统
-Qt使用统一的坐标系统定位窗口部件和位置大小 -Qt部件类提供成员函数在坐标系统中进行定位 -QWidget类提供了窗口部件所需的坐标系统成员函数 代码测试 #include "widge ...
- 【Visual Studio】解决方案未保存,请先保存你的解决方案,然后再管理Nuget包
上网下的Demo,文件夹中没有.sln文件,用VS打开.csproj文件来打开方案.此时可能因为一些引用问题想打开Nuget包管理器,会弹出如下提示: 解决方案未保存,请先保存你的解决方案,然后再管理 ...
- error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 "int __cdecl invoke_main(void)”中被引用
一,问题描述 MSVCRTD.lib(exe_winmain.obj) : error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 "int __cdecl invo ...
- linux下获取服务器硬件信息的脚本
这是个简单的脚本,便于查询服务器的硬件信息: #!/bin/bash # # Description: # Used to get the hardware config information. # ...
- 对于REST中无状态(stateless)的一点认识(转)
在请求中传递SessionID被普遍认为是unRESTful的,而将用户的credentials包含在每个请求里又是一种非常RESTful的做法.这样一个问题经常会造成困扰.本文就REST的一些概念进 ...