struts2 spring mybatis整合

来源:互联网 发布:淘宝整点抢购 编辑:程序博客网 时间:2024/05/17 23:09

工程结构

这里写图片描述

需要引入的包

这里写图片描述

开发步骤

1.分层(MVC )

我分别建了5个包来进行分层:bean、dao、service、service.impl、action

2.编写框架配置文件

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>    <include file="struts-default.xml" />        <package name="default" extends="struts-default">    </package></struts>

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></configuration>

db.properties:

driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/ssmusername=rootpassword=root

log4j.properties

# Set root logger level to error (DEBUG,INFO,WARN,ERROR,FATAL)log4j.rootLogger=WARN, Console, File#log4j.rootLogger=DEBUG, Console, File###### Console appender definition ######## All outputs currently set to be a ConsoleAppender.log4j.appender.Console=org.apache.log4j.ConsoleAppenderlog4j.appender.Console.Target=System.outlog4j.appender.Console.layout=org.apache.log4j.PatternLayoutlog4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{3}] %m%n#log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n###### File appender definition #######log4j.appender.File=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.File.File=spring.loglog4j.appender.File.Append=falselog4j.appender.File.layout=org.apache.log4j.PatternLayoutlog4j.appender.File.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n

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"    xsi:schemaLocation="http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">    <property name="location">        <value>classpath:db.properties</value>    </property> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">       <property name="driverClassName">            <value>${driver}</value>       </property>       <property name="url">            <value>${url}</value>       </property>       <property name="username">            <value>${username}</value>       </property>       <property name="password">            <value>${password}</value>       </property> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="configLocation"                   value="classpath:config.xml"></property>        <property name="dataSource" ref="dataSource"></property></beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0"     xmlns="http://java.sun.com/xml/ns/javaee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  <display-name></display-name>   <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>  <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> <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> <context-param>    <param-name>log4jConfigLocation</param-name>    <param-value>classpath:log4j.properties</param-value></context-param><context-param>    <param-name>log4jRefreshInterval</param-name>    <param-value>60000</param-value></context-param><listener>    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener></web-app>

3.代码开发(注册功能)

V层

(1)index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE html><html><head> <base href="<%=basePath%>">    <title>注册</title>    <meta charset="utf-8"><link rel="stylesheet" type="text/css" href="./css/style.css"></head><body>   <form action="user_add" method="post">    <label>注册用户:</label><br/>    <label>用户名:</label>    <input type="text" name="newUser.userName"><br/>    <label>密码:</label>    <input type="password" name="newUser.password"><br/>    <input type="submit" value="注册">    <input type="reset" value="重置" >          </form></body></html>

功能:填写注册信息,并提交到相应action

C层

(2)UserAction类

package com.ssmtest.action;import com.opensymphony.xwork2.ActionSupport;import com.ssmtest.bean.User;import com.ssmtest.service.IUserService;public class UserAction extends ActionSupport{    private static final long serialVersionUID = 1L;    private User newUser;    private IUserService userService;    public String add() throws Exception{        userService.addUser(newUser);        return SUCCESS;    }    public User getNewUser() {        return newUser;    }    public void setNewUser(User newUser) {        this.newUser = newUser;    }    public IUserService getUserService() {        return userService;    }    public void setUserService(IUserService userService) {        this.userService = userService;    }   }

通过service接口调用userService的add方法

M层

(3)IUserService接口

package com.ssmtest.service;import com.ssmtest.bean.User;public interface IUserService {    public void addUser(User user);}

(4)UserServiceImpl实现类

package com.ssmtest.service.impl;import com.ssmtest.bean.User;import com.ssmtest.dao.UserDao;import com.ssmtest.service.IUserService;public class UserServiceImpl implements IUserService{    private UserDao userDao;    public UserDao getUserDao() {        return userDao;    }    public void setUserDao(UserDao userDao) {        this.userDao = userDao;    }    @Override    public void addUser(User user) {        userDao.addUser(user);    }}

(5)UserDao.java

package com.ssmtest.dao;import com.ssmtest.bean.User;public interface UserDao {    public void addUser(User user);    public String delUser(int id);    public String updateUser(User user);    }

(6)

<?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.ssmtest.dao.UserDao">    <select id="getUser" parameterType="int" resultMap="userResultMap">        select * from user where UserId=#{id}    </select>    <resultMap type="com.ssmtest.bean.User" id="userResultMap">         <id property="id" column="userId"/>    </resultMap>    <insert id="addUser" parameterType="User" >        insert into user(userName,password) values(#{userName},#{password})    </insert>    <delete id="delUser" parameterType = "int">        delete from user where id=#{id}    </delete>    <update id="updateUser" parameterType = "com.ssmtest.bean.User">        update user set userName=#{userName},password=#{password} where id=#{id}    </update>    <select id="getAllUser" resultType="com.ssmtest.bean.User">        select * from user    </select></mapper>

(7)config.xml的configration标签内加入

 <typeAliases>        <package name="com.ssmtest.bean"/> </typeAliases> <mappers>        <mapper resource="com/ssmtest/dao/UserDao.xml"/> </mappers>

(8)struts.xml的package中加入

<action name="*_*" class="com.ssmtest.action.UserAction" method="{2}">        <result name="success">/{1}/{2}_success.jsp</result></action>

(9)applicationContext.xml中加入dao,service,action对应的3个bean

 <bean id="userDao"                              class="org.mybatis.spring.mapper.MapperFactoryBean">     <property name="sqlSessionFactory"      ref="sqlSessionFactory"/>   <property name="mapperInterface" value="com.ssmtest.dao.UserDao"/>  </bean><bean id="userService" class="com.ssmtest.service.impl.UserServiceImpl">            <property name="userDao" ref="userDao"/></bean><bean id="userAction" class="com.ssmtest.action.UserAction">            <property name="userService" ref="userService"/> </bean>
0 0