ssi项目(1)环境搭建
1.环境准备
导包(jdk1.8只支持spring4.0以上的版本)
mysql驱动包
c3p0驱动包
mybatis包
spring-core、spring-aop、spring-web、spring-orm、spring-jdbc
jackson(spring对json的支持包)
mybatis_spring包
2.测试spring-mybatis整合
applicationContext.xml
<!-- 配置数据源,记得去掉myBatis-config.xml的数据源相关配置 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/mybatis" />
<property name="user" value="root" />
<property name="password" value="juaner767" />
</bean>
<!-- 配置session工厂 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:myBatis-config.xml" />
</bean> <!-- 配置事务管理器,管理数据源事务处理 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 配置事务通知 -->
<tx:advice id="advice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 默认只处理运行时异常,可加rollback-for="Exception/Throwable"等处理所有异常或包括错误 -->
<tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="update*" propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="*" propagation="SUPPORTS" />
</tx:attributes> </tx:advice>
<!-- 配置切面织入的范围,后边要把事务边界定在service层 -->
<!-- 把事务边界定在service层 -->
<aop:config>
<aop:advisor advice-ref="advice" pointcut="execution(* com.juaner.scm.dao.impl.*.*(..))"/>
</aop:config>
<context:component-scan base-package="*"></context:component-scan>
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
myBatis-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 type="com.juaner.scm.entity.Dept" alias="Dept"/>
</typeAliases>
<mappers>
<mapper resource="com/juaner/scm/entity/DeptMapper.xml" />
</mappers>
</configuration>
Dept实体及映射文件
public class Dept implements Serializable{
private Integer deptId;
private String deptName;
private String deptAddress;
public Dept(){
}
public Integer getDeptId() {
return deptId;
}
public void setDeptId(Integer deptId) {
this.deptId = deptId;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String getDeptAddress() {
return deptAddress;
}
public void setDeptAddress(String deptAddress) {
this.deptAddress = deptAddress;
}
@Override
public String toString() {
return "Dept{" +
"deptId=" + deptId +
", deptName='" + deptName + '\'' +
", deptAddress='" + deptAddress + '\'' +
'}';
}
}
<?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.juaner.scm.entity.DeptMapper">
<resultMap id="deptResultMap" type="Dept">
<id property="deptId" column="dept_id"/>
<result property="deptName" column="dept_name"/>
<result property="deptAddress" column="dept_address"/>
</resultMap>
<select id="selectDept" parameterType="Integer" resultMap="deptResultMap">
SELECT DEPT_ID,DEPT_NAME,DEPT_ADDRESS FROM DEPT WHERE DEPT_ID=#{deptID}
</select>
<insert id="insertDept" parameterType="Dept">
INSERT INTO DEPT (DEPT_NAME,DEPT_ADDRESS) VALUES (#{deptName},#{deptAddress})
</insert>
</mapper>
DeptDaoImpl类
@Repository("deptDao")
public class DeptDaoImpl implements DeptDao{
@Resource
private SqlSessionTemplate sqlSessionTemplate;
/**
* 根据部门编号查询部门信息
* @param deptId 部门编号
* @return 部门信息
*/
public Dept selectDept(Integer deptId){
Dept dept= sqlSessionTemplate.selectOne("com.juaner.scm.entity.DeptMapper.selectDept", deptId);
return dept;
}
/**
* 添加部门信息
* @param dept 部门信息
* @return 添加成功的记录数
*/
public int insertDept(Dept dept){
System.out.println("------dao.dept:"+dept);
sqlSessionTemplate.insert("com.juaner.scm.entity.DeptMapper.insertDept", dept);
// int i =1/0;
return 0;
}
}
测试
@Test
public void test1(){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
DeptDaoImpl deptDao = (DeptDaoImpl) context.getBean("deptDao");
Dept dept = deptDao.selectDept(1);
System.out.println(dept);
}
@Test
public void test2(){
Dept dept = new Dept();
dept.setDeptName("信息部");
dept.setDeptAddress("b3");
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
DeptDaoImpl deptDao = (DeptDaoImpl) context.getBean("deptDao");
deptDao.insertDept(dept);
}
3.测试spring-mvc
web.xml
<!--配置spring监听器-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--配置spring-mvc核心控制器-->
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<!--针对post请求的编码过滤器-->
<filter>
<filter-name>encodingFilter</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>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
spring-mvc.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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-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/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!--同时开启json的支持-->
<mvc:annotation-driven></mvc:annotation-driven>
<context:component-scan base-package="*"/>
</beans>
DeptAction
@Controller
@RequestMapping("/dept")
public class DeptAction {
@Resource
private DeptDaoImpl deptDao; @RequestMapping(value="/insert")
public String insert(Dept dept){
System.out.println("---action.dept:"+dept);
deptDao.insertDept(dept);
return "forward:/jsp/main.jsp";
} }
index.jsp
<form action="dept/insert.action" method="post">
名称:<input type="text" name="deptName"><br>
地址:<input type="text" name="deptAddress"><br>
<input type="submit" value="ok">
</form>
main.jsp(webRoot/jsp/main.jsp)
4.优化
对service的事务控制(需要配置applicationContext.xml和spring-mvc.xml的扫描规则,否则会产生冲突无法回滚)
<!-- 把事务边界定在service层 -->
<aop:config>
<aop:advisor advice-ref="advice" pointcut="execution(* com.juaner.scm.service.impl.*.*(..))"/>
</aop:config>
<!-- 自动扫描组件,要把controller去除,他们是在spring-mvc.xml中配置,如果不去除会影响事务管理。 -->
<context:component-scan base-package="com.juaner">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
spring-mvc扫描
<!-- 扫描所有的controller 但是不扫描service -->
<context:component-scan base-package="com.juaner">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
</context:component-scan>
去掉dao实现类
扫描basePackage下的接口,如果接口的强类名与映射文件xml中的命名空间一致,spring会生成该接口的代理对象,就不用写实现类了。
spring会用接口的强类名做命名空间,方法名做sql语句id查询map文件
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
<property name="basePackage" value="com.juaner.scm.dao"/>
</bean>
映射文件
<mapper namespace="com.juaner.scm.dao.DeptDao">
<resultMap id="deptResultMap" type="Dept">
<id property="deptId" column="dept_id"/>
<result property="deptName" column="dept_name"/>
<result property="deptAddress" column="dept_address"/>
</resultMap>
<select id="selectDept" parameterType="Integer" resultMap="deptResultMap">
SELECT DEPT_ID,DEPT_NAME,DEPT_ADDRESS FROM DEPT WHERE DEPT_ID=#{deptID}
</select>
<insert id="insertDept" parameterType="Dept">
INSERT INTO DEPT (DEPT_NAME,DEPT_ADDRESS) VALUES (#{deptName},#{deptAddress})
</insert>
dao接口
public interface DeptDao {
public Dept selectDept(Integer deptId);
public int insertDept(Dept dept);
}
aciton
@Autowired
private DeptService deptService;
去掉myBatis-config.xml中的别名和映射文件
在applicationContext.xml中配置映射文件地址
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:myBatis-config.xml" />
<property name="mapperLocations" value="classpath:com/juaner/scm/dao/*.xml"/>
</bean>
配置别名,entity下的所有类都以类名作为别名
<typeAliases>
<package name="com.juaner.scm.entity"/>
</typeAliases>
5.测试json
引入jackson包jackson-core-asl-1.9.11、jackson-mapper-asl-1.9.11
spring-mvc开启对json的支持
<mvc:annotation-driven></mvc:annotation-driven>
或在spring-mvc中配置json转换器
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
</list>
</property>
</bean>
方法中添加注解@ResponseBody
@RequestMapping("/doAjax")
@ResponseBody
public Object doAjax(Supplier supplier){
System.out.println("-------doAjax.supplier"+supplier);
supplier.setSupName("supName1");
return supplier;
}
jsp方法中调用
<script type="text/javascript">
$(function(){
$("#buttonID").click(
function(){
var data = {"supId":1001,"supName":"name1001"};
$.post("${proPath}/supplier/doAjax.action",data,
function(json){
alert(json.supId+" "+json.supName);
});
}
);
})
</script>
6.抽取dao、service、action、jsp
ssi项目(1)环境搭建的更多相关文章
- Eclipse+Tomcat+MAVEN+SVN项目完整环境搭建
1.JDK的安装 首先下载JDK,这个从sun公司官网可以下载,根据自己的系统选择64位还是32位,安装过程就是next一路到底.安装完成之后当然要配置环境变量了. ————————————————— ...
- Eclipse4.6(Neon) + Tomcat8 + MAVEN3.3.9 + SVN项目完整环境搭建
软件清单 jdk-8u102-windows-x64.exe eclipse-inst-win64.exe (Eclipse4.6 Neon) apache-tomcat-8.5.5-windows- ...
- Hadoop项目开发环境搭建(Eclipse\MyEclipse + Maven)
写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Mav ...
- Hive项目开发环境搭建(Eclipse\MyEclipse + Maven)
写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Mav ...
- SSM 框架-03-MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
SSM 框架-03-MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建 如果你是使用 Eclipse 你需要先安装 MyEclipse,请参考:SSM 框架-02-MyEclipse ...
- java项目测试环境搭建
java项目测试环境搭建 2019-03-06 13:45:26 木瓜小少年 阅读数 691更多 分类专栏: 测试 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原 ...
- Linux(三)—— 项目部署环境搭建
目录 项目部署环境搭建 一.linux上网 二.rpm包管理 1.光盘挂载 2.安装卸载rpm包 3.查询是否安装 4.查看软件包 5.互相依赖关系的软件包 三.yum包管理 1.使用aliyun的y ...
- day76:luffy:项目前端环境搭建&轮播图的实现
目录 1.项目前端环境搭建 1.创建项目目录 2.前端初始化全局变量和全局方法 3.跨域CORS 4.axios配置 2.轮播图功能的实现 1.安装依赖模块 2.上传文件相关配置 3.注册home子应 ...
- 我是如何进行Spring MVC文档翻译项目的环境搭建、项目管理及自动化构建工作的
感兴趣的同学可以关注这个翻译项目 . 我的博客原文 和 我的Github 前段时间翻译的Spring MVC官方文档完成了第一稿,相关的文章和仓库可以点击以下链接.这篇文章,主要是总结一下这个翻译项目 ...
- spring+springMVC+mybatis的框架项目基础环境搭建
上一个项目在后台用到spring+springMVC+mybatis的框架,先新项目初步需求也已经下来,不出意外的话,应该也是用这个框架组合. 虽然在之前activiti相关的学习中所用到的框架也是这 ...
随机推荐
- Spark在Hadoop集群上的配置(spark-1.1.0-bin-hadoop2.4)
运行Spark服务,需要在每个节点上部署Spark. 可以先从主节点上将配置修改好,然后把Spark直接scp到其他目录. 关键配置 修改conf/spark-env.sh文件: export JAV ...
- 最小化安装的CentOS7挂载ntfs格式的U盘
准备从系统中拷贝一些文件到U盘,插上U盘. 一.获得U盘的设备识别符 fdisk -l 啊哈,我看到了,是/dev/sdb1 二.熟练的挂载 mount /dev/sdb1 /mnt/usb Duan ...
- 关于javascript面向对象的详解!
认识面向对象 1.面向对象中的概念 一切事物皆对象 对象具有封装和继承特性 信息隐藏 2.基本面向对象 3.函数构造器构造对象 深入了解面向对象 第一种书写格式 第二种书写格式
- AndroidStudio NDK配置使用以及错误集合
Error:Execution failed for task ':app:transformNative_libsWithStripDebugSymbolForDebug'. > java.l ...
- sqoop、flume 安装
sqoop安装步骤 1.上传解压tar包 tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz 2.修改配置文件 进入 sqoop/conf/ c ...
- Jfreechart初案例--饼图
1.action @Controller(value = "pieAction") @Scope("prototype") public class PieAc ...
- I:trainage Ditches
总时间限制: 1000ms 内存限制: 65536kB描述Every time it rains on Farmer John's fields, a pond forms over Bessie's ...
- spring.net 配置文件需要注意换行问题
今天在做Spring.NET Demo时写配置文件写ObjectNames 节点的Value成这样 <object id="ProxyCreator" type=" ...
- MDI窗体容器、权限设置
一.MDI窗体容器: 1.功能: 它可以让其它窗体在它的内部打开,无法超出它的范围 将某个窗体的属性:IsMdiContainer设置为true - 窗口样式 2.问题: (1)如何将其它窗体在它的内 ...
- ListView 的使用
一.ListView:不同视图中一种显示想的集合,显示表格样式的数据信息1.视图: 在其右上方小箭头点击将视图改为Details:或者右键属性在外观View将其改为Details ...