spring3.0+struts2.1+mybatis3.2搭建

1.导入的相关包是:

asm-3.3.1.jar

cglib-2.2.2.jar

commons-logging-1.1.1.jar

javassist-3.17.1-GA.jar

log4j-1.2.17.jar

mybatis-3.2.2.jar

mybatis-spring-1.2.0-javadoc.jar

mybatis-spring-1.2.0-sources.jar

mybatis-spring-1.2.0.jar

ojdbc5.jar

slf4j-api-1.7.5.jar

slf4j-log4j12-1.7.5.jar

 

2.建立的package

com.ly.action(com/ly/action/UserAction.java   struts的action操作层)

com.ly.mapper(com/ly/mapper/UserMapper.java和com/ly/mapper/UserMapper.xml mapper接口和映射文件)

com.ly.model(com/ly/model/User.java  POJO类)

com.ly.service(/com/ly/service/UserService.java  service接口)

com.ly.service.impl(com/ly/service/impl/UserServiceImpl.java  service接口实现类   业务逻辑层)

 

3.myEclipse需要导入的插件有:

Struts 2 Core Libraries

Struts 2 Spring Libraries

Spring 3.0 Core Libraries

Spring 3.0 AOP Libraries

Spring 3.0 Persistence JDBC

Spring 3.0 Persistence Core

Spring 3.0 web libraries

 

4.在src/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:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
        <!--指定oracle.properties的位置-->
	<bean
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location" value="classpath:oracle.properties"></property>
	</bean>
        <!--链接oracle数据源-->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="username" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<property name="url" value="${jdbc.url}"></property>
		<property name="driverClassName" value="${jdbc.driver}"></property>
	</bean>
        <!-spring管理sqlsessionfactory-->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
                <!--告诉spring  mapper映射文件的位置 该包下的所有xml文件-->
		<property name="mapperLocations" value="classpath*:com/ly/mapper/**/*.xml"></property>
                <!--告诉spring  POJO;类-->
		<property name="typeAliasesPackage" value="com.ly.model"></property>
	</bean>
        
	<bean id="usermapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
		<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
		<property name="mapperInterface" value="com.ly.mapper.UserMapper"></property>
	</bean>
	<!--需要在userservice的实现类里添加mappper对象属性-->
	<bean id="userserviceimpl" class="com.ly.service.impl.UserServiceImpl">
		<property name="usermapper" ref="usermapper"></property>
	</bean>
	<!--该配置后,需要在UserAction.java类里添加userservice属性-->
	<bean id="useraction" class="com.ly.action.UserAction">
		<property name="userservice" ref="userserviceimpl"></property>
	</bean>
	
	<!-- 配置事物 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	<!--链接其他spring配置文件-->
	<import resource="aop.xml"/>
</beans>

 

aop.xml配置:

 

这一步需要右键工程名/src目录new->other->Spring->Spring Bean Definition->next-(需要修改配置文件的文件名,自定义文件名这里是aop.xml)->finish

 

 

<?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:lang="http://www.springframework.org/schema/lang" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
		http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
 
   <!--配置事物处理策略-->
 
	<tx:advice id="txadvice" transaction-manager="transactionManager">
		<tx:attributes>
                        <!--抛出异常测回滚-->
			<tx:method name="add*" isolation="DEFAULT" propagation="REQUIRED"
				timeout="-1" rollback-for="java.lang.Exception" />
			<tx:method name="del*" isolation="DEFAULT" propagation="REQUIRED"
				timeout="-1" rollback-for="java.lang.Exception" />
			<tx:method name="upd*" isolation="DEFAULT" propagation="REQUIRED"
				timeout="-1" rollback-for="java.lang.Exception" />
		</tx:attributes>
	</tx:advice>
       <!--execution中execute表示包含这个包中的所有方法,不管参数和返回类型,而且是该包下的所有类-->
	<aop:config expose-proxy="false" proxy-target-class="false">
		<aop:pointcut expression="execution(* com.ly.service..*.*(..))"
			id="txcut" />
		<aop:advisor advice-ref="txadvice" pointcut-ref="txcut" />
	</aop:config>
</beans>

 

strutrs.xml配置信息:

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="default" extends="struts-default">
		<!-- class中的useraction是spring的ID为useraction的id名 -->
		<action name="useraction*" class="useraction" method="{1}">
			<result>/index.jsp</result>
		</action>
	</package>
</struts>  

  

 

 

   oracle.properties配置信息:

 

 

jdbc.username=数据库账号
jdbc.password=数据库密码
jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.driver=oracle.jdbc.driver.OracleDriver

 

 

5.User.java源码:(POJO类)

 

package com.ly.model;

public class User {
	private String username;
	private String password;
	private Integer age;
//生成相应的set  get 方法
}

 

 

 6.UserMapper.java接口 和xml映射文件关联 代码

 

 

package com.ly.mapper;

import java.util.List;

import com.ly.model.User;

public interface UserMapper {
	List<User> selectUser(User user);
}

 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="com.ly.mapper.UserMapper">
	<!-- id就是UserMapper接口中的方法名,parameterTYpe就是传入的参数类型,resultType为输出类型 -->
	<select id="selectUser" parameterType="User" resultType="User">
		select * from user where username=#{username}
	</select>
</mapper>

<!-- select 语句属性配置细节: 
属性	描述	取值	默认
id	在这个模式下唯一的标识符,可被其它语句引用		
parameterType	传给此语句的参数的完整类名或别名		
resultType	语句返回值类型的整类名或别名。注意,如果是集合,那么这里填写的是集合的项的整类名或别名,而不是集合本身的类名。(resultType 与resultMap 不能并用)		
resultMap	引用的外部resultMap 名。结果集映射是MyBatis 中最强大的特性。许多复杂的映射都可以轻松解决。(resultType 与resultMap 不能并用)		
flushCache	如果设为true,则会在每次语句调用的时候就会清空缓存。select 语句默认设为false	true|false	false
useCache	如果设为true,则语句的结果集将被缓存。select 语句默认设为false true|false false
timeout 设置驱动器在抛出异常前等待回应的最长时间,默认为不设值,由驱动器自己决定	true|false	false
timeout 	设置驱动器在抛出异常前等待回应的最长时间,默认为不设值,由驱动器自己决定	正整数	未设置
fetchSize	设置一个值后,驱动器会在结果集数目达到此数值后,激发返回,默认为不设值,由驱动器自己决定	正整数	驱动器决定
statementType	statement,preparedstatement,callablestatement。
预准备语句、可调用语句	STATEMENT
PREPARED
CALLABLE	PREPARED
resultSetType	forward_only,scroll_sensitive,scroll_insensitive
只转发,滚动敏感,不区分大小写的滚动	FORWARD_ONLY
SCROLL_SENSITIVE
SCROLL_INSENSITIVE	驱动器决定
 -->

 然后在 UserService接口中定义一个方法:

 

List<User> selectUser(User user);

 用来查询sql操作,并返回结果集,然后在impl实现类中实现该方法。

UsererviceImpl.java类:

package com.ly.service.impl;
import java.util.List;
import com.ly.mapper.UserMapper;
import com.ly.model.User;
import com.ly.service.UserService;
public class UserServiceImpl implements UserService{
	private UserMapper usermapper;
//生成set  get 方法
	@Override
	public List<User> selectUser(User user) {
		return usermapper.selectUser(user);
	}}

 

实现了selectUser方法后,并返回结果集,然后应在action类中接收该返回集合

UserAction.java   :

 

package com.ly.action;

import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
import com.ly.model.User;
import com.ly.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport implements SessionAware {
	private Map<String, Object> session;
	private UserService userservice;
	private User user;
        private List<User> list;
     //.......相应的set  get 方法
	@Override
	public String execute() throws Exception {
		list=userservice.selectUser(user);//struts会自动存入request作用域
		return SUCCESS;
	}}

 

index.jsp代码:

 

<%@ page language="java" import="java.util.*" pageEncoding="utf8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript">
	function look(){
		var val=prompt("请输入用户名:","");
		if(val!=null && val!=""){
			var f=document.getElementById("f");
			f.action="useraction.action?user.username="+val;//默认调用execute()方法,user.username  struts会自动得到
			f.submit();
		}
	}
</script>
</head>

<body>
	<center>
		<form id="f" method="post">
			<input type="button" value="点击查询用户" οnclick="look()"/>
		</form>
	</center>
</body>
</html>

  show.jsp 为显示结果的页面,代码:

 

 

<%@ page language="java" import="java.util.*" pageEncoding="utf8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'show.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
  </head>
  
  <body>
    <center>
    	<table>
    		<tr>
    			<th>用户名</th>
    			<th>年龄</th>
    		</tr>
                <!-- list中存在的泛型为User -->
    		<c:forEach items="${list}" var="i">
    			<tr>
    				<td>$i.username}</td>
    				<td>${i.age}</td>
    			</tr>
    		</c:forEach>
    	</table>
    </center>
  </body>
</html>

<!-- 查询出来的结果 显示在这JSP上 -->

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值