maven管理ssm项目模块开发之父子工程

首先创建一个父工程,另外创建四个子工程分别是:dao层、ertity层、service层、web层

如图所示:

在父工程的pom导入ssm所需要的依赖包,如图:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>Book</groupId>
    <artifactId>Book</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>Bookpojo</module>
        <module>Bookweb</module>
        <module>Bookservice</module>
        <module>Bookdao</module>
    </modules>
    <properties>
        <spring.version>5.0.2.RELEASE</spring.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>


    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!-- 加入ServletAPI -->
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>


        <!-- MySQL依赖 start -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>

        <!-- MySQL依赖 end -->



        <!-- 加入MyBatis 依赖 start -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.5</version>
        </dependency>
        <!-- 加入MyBatis 依赖 end -->

        <!-- Log4j start -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- Log4j end -->

        <!-- 引入Spring(包含SpringMVC) 依赖 start -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>


        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.6.12</version>
        </dependency>

        <!-- 引入Spring 依赖 end -->
        <!-- 使用Json所依赖的jar包 -->

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.4</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.4</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.4</version>
        </dependency>
        <!-- 引用c3p0 依赖 start-->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.2.1</version>
        </dependency>
        <!-- 引用c3p0 依赖 end-->

        <!-- 引用插件依赖:MyBatis整合Spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>

        <!-- JSTL -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>

    </dependencies>

</project>

因为父工程只是管理其他子类(耦合性),所以src就不需要可以删除,以免影响视图

然后在每个子工程创建所需要的xml文件:

dao层需要的:application-dao.xml文件

数据库文件:db.properties文件

mybatis配置文件:sqlMapperConfig.xml文件

以上的配置文件都可以放在resource目录下,也可以放在你自己创建的文件目录下

以下是以上文件的具体配置如图所示:

mapper文件下是执行sql语句的xml

GradeMapper.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="cn.ssm.mapper.GradeMapper">

   <select id="findGradeByNumber" parameterType="String" resultType="cn.ssm.pojo.GradeBean">
       SELECT * FROM gradeinfomanage WHERE className=#{className}
   </select>

    <insert id="addGrade" parameterType="cn.ssm.pojo.GradeBean">
        INSERT INTO gradeinfomanage (number,className,classDescript)
        VALUES (#{number},#{className},#{classDescript})
    </insert>

    <delete id="deleteGrade" parameterType="int">
        DELETE FROM  gradeinfomanage WHERE number=#{number}
    </delete>

    <update id="updateGrade" parameterType="cn.ssm.pojo.GradeBean">
       UPDATE gradeinfomanage set className=#{className},classDescript=#{classDescript} WHERE number=#{number}
      <!-- <set>
           <if test="gradeBean.className != null and gradeName.className != ''">
               className=#{gradeBean.className},
           </if>
           <if test="gradeBean.classDescript != null and gradeBean.classDescript != ''">
               classDescript=#{gradeBean.classDescript},
           </if>
       </set>
        <where>
            number=#{gradeBean.number}
        </where>-->
    </update>

    <select id="selectGrade" resultType="cn.ssm.pojo.GradeBean">
        SELECT * FROM gradeinfomanage
    </select>

    <select id="list" resultType="cn.ssm.pojo.GradeBean">
        select * from gradeinfomanage
        <if test="start!=null and count!=null">
            limit #{start},#{count}
        </if>
    </select>
    <select id="total" resultType="int">
        select count(*) from gradeinfomanage
    </select>
</mapper>

LoginMapper.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="cn.ssm.mapper.LoginMapper">

    <select id="login" parameterType="int" resultType="cn.ssm.pojo.LoginBean">
        SELECT * FROM user WHERE userId=#{userId}
    </select>
    <select id="selectUser" resultType="cn.ssm.pojo.LoginBean">
        SELECT * FROM user
    </select>
</mapper>

Student.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="cn.ssm.mapper.StudentMapper">

   <select id="findStudentByStuNo" parameterType="int" resultType="cn.ssm.pojo.StudentBean">
       SELECT * FROM studentinfomanage WHERE stuNo=#{stuNo}
   </select>

    <insert id="addStudent" parameterType="cn.ssm.pojo.StudentBean">
        INSERT INTO studentinfomanage (stuNo,stuName,gender,birthday,gradeName,email,stuDesc)
        VALUES (#{stuNo},#{stuName},#{gender},#{birthday},#{gradeName},#{email},#{stuDesc})
    </insert>

    <delete id="deleteStudent" parameterType="int">
        DELETE FROM  studentinfomanage WHERE stuNo=#{stuNo}
    </delete>

    <update id="updateStudent" parameterType="cn.ssm.pojo.StudentBean">
       UPDATE studentinfomanage SET stuName=#{stuName},gender=#{gender},birthday=#{birthday},
              gradeName=#{gradeName},email=#{email},stuDesc=#{stuDesc} WHERE stuNo=#{stuNo}
    </update>

    <select id="selectStudent" resultType="cn.ssm.pojo.StudentBean">
        SELECT * FROM studentinfomanage
    </select>
</mapper>

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:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       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/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!--使用spring读取连接池的配置文件-->
    <context:property-placeholder location="classpath:db.properties"></context:property-placeholder>
    <!--配置连接池的bean-->
    <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverClass}"></property>
        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
        <property name="user" value="${jdbc.user}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

    <bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation" value="classpath:sqlMapConfig.xml"></property>
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.ssm.mapper"></property>
    </bean>

    <context:component-scan base-package="cn.ssm"></context:component-scan>

</beans>

db.proterties文件(连接数据库文件)

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/studentMange?useUnicode=true&amp;characterEncoding=utf-8
jdbc.user=root
jdbc.password=1234

sqlMapperConfig.xml文件(mybatis文件)

<?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>
        <package name="cn.ssm.pojo"></package>
    </typeAliases>
   <mappers>
      <mapper resource="mappper/GradeMapper.xml"></mapper>
      <mapper resource="mappper/LoginMapper.xml"></mapper>
      <mapper resource="mappper/StudentMapper.xml"></mapper>
   </mappers>

</configuration>

pom文件所需要的依赖包

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Book</artifactId>
        <groupId>Book</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <packaging>jar</packaging>
    <artifactId>Book-dao</artifactId>
    <dependencies>
        <dependency>
            <groupId>Book</groupId>
            <artifactId>Book-pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

Bookpojo(bean类)子工程

bookpojo子工程只需要书写bean类就行,其他不需要配置,目录如下:

pojo文件书写如下:

GradeBean:

package cn.ssm.pojo;

import org.springframework.stereotype.Repository;

@Repository
public class GradeBean {
   private Integer number;//编号
   private String className;//班级名称
   private String classDescript;//班级描述

   public GradeBean() {
   }

   public GradeBean(Integer number, String className, String classDescript) {
      this.number = number;
      this.className = className;
      this.classDescript = classDescript;
   }

   public Integer getNumber() {
      return number;
   }

   public void setNumber(Integer number) {
      this.number = number;
   }

   public String getClassName() {
      return className;
   }

   public void setClassName(String className) {
      this.className = className;
   }

   public String getClassDescript() {
      return classDescript;
   }

   public void setClassDescript(String classDescript) {
      this.classDescript = classDescript;
   }

   @Override
   public String toString() {
      return "GradeBean{" +
            "number=" + number +
            ", className='" + className + '\'' +
            ", classDescript='" + classDescript + '\'' +
            '}';
   }
}

LoginBean类文件:

package cn.ssm.pojo;

import org.springframework.stereotype.Repository;

@Repository
public class LoginBean {

    private Integer userId;
    private String password;
    public LoginBean() {
    }

    public LoginBean(Integer userId, String password) {
        this.userId = userId;
        this.password = password;
    }

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "LoginBean{" +
                "userId=" + userId +
                ", password='" + password + '\'' +
                '}';
    }
}

StudentBean类文件:

package cn.ssm.pojo;


import org.springframework.stereotype.Repository;

@Repository
public class StudentBean {
    private Integer stuNo;
    private String stuName;
    private String gender;
    private String birthday;
    private String gradeName;
    private String email;
    private String stuDesc;


    public Integer getStuNo() {
        return stuNo;
    }

    public void setStuNo(Integer stuNo) {
        this.stuNo = stuNo;
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public String getGradeName() {
        return gradeName;
    }

    public void setGradeName(String gradeName) {
        this.gradeName = gradeName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getStuDesc() {
        return stuDesc;
    }

    public void setStuDesc(String stuDesc) {
        this.stuDesc = stuDesc;
    }
}

page类文件:

public class Page {
    Integer start=0;
    Integer count=8;
    Integer last=0;

    public Integer getStart() {
        return start;
    }

    public void setStart(Integer start) {
        this.start = start;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }

    public Integer getLast() {
        return last;
    }

    public void setLast(Integer last) {
        this.last = last;
    }
    public void caculateLast(int total) {
        // 假设总数是50,是能够被5整除的,那么最后一页的开始就是45
        if (0 == total % count)
            last = total - count;
            // 假设总数是51,不能够被5整除的,那么最后一页的开始就是50
        else
            last = total - total % count;
    }
}

pom中只需要配置一个打包成什么样的jar就行了

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Book</artifactId>
        <groupId>Book</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <packaging>jar</packaging>
    <artifactId>Book-pojo</artifactId>
</project>

Bookservice子工程

bookservice子工程只需要配置applicationContext_service.xml文件(配置事务管理对象以及扫描包就可以了)

目录如下:

bookservice子工程的.java文件已接口的形式来连接bookdao子工程和web子工程

下面是它们的接口以及实现类

GradeService接口:

package cn.ssm.service;


import cn.ssm.pojo.GradeBean;
import cn.ssm.pojo.Page;
import com.alibaba.fastjson.JSONObject;

import java.util.List;

public interface GradeService {
    JSONObject findGradeByNumber(String className);
    JSONObject addGrade(GradeBean gradeBean);
    JSONObject deleteGrade(Integer number);
    JSONObject updateGrade(GradeBean gradeBean);
    JSONObject selectGrade();

    List<GradeBean> list();
    int total();
    List<GradeBean> list(Page page);
}

GradeService实现类:

package cn.ssm.service.impl;

import cn.ssm.mapper.GradeMapper;
import cn.ssm.pojo.GradeBean;
import cn.ssm.pojo.Page;
import cn.ssm.service.GradeService;

import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class GradeServiceImpl implements GradeService {
    @Resource(name = "gradeMapper")
    private GradeMapper gradeMapper;
    @Resource(name="jsonObject")
    private JSONObject jsonObject;
    @Override
    public JSONObject findGradeByNumber(String className) {
        List<GradeBean> gradeByNumber = gradeMapper.findGradeByNumber(className);
        if (gradeByNumber!=null){
            jsonObject.put("code",1);
            jsonObject.put("msg","搜索成功");
            jsonObject.put("data",gradeByNumber);
            System.out.println("aaa");
        }else {
            jsonObject.put("code",2);
            jsonObject.put("msg","搜索失败");
        }
        return jsonObject;

    }

    @Override
    public JSONObject addGrade(GradeBean gradeBean) {
        Integer integer = gradeMapper.addGrade(gradeBean);
        if (integer!=0){
            jsonObject.put("code",1);
            jsonObject.put("msg","添加成功");
            jsonObject.put("data",integer);
            System.out.println("aaa");
        }else {
            jsonObject.put("code",2);
            jsonObject.put("msg","添加失败");
        }
        return jsonObject;
    }

    @Override
    public JSONObject deleteGrade(Integer number) {
        Integer integer = gradeMapper.deleteGrade(number);
        if (integer!=0){
            jsonObject.put("code",1);
            jsonObject.put("msg","删除成功");
            jsonObject.put("data",integer);
            System.out.println("aaa");
        }else {
            jsonObject.put("code",2);
            jsonObject.put("msg","删除失败");
        }
        return jsonObject;
    }

    @Override
    public JSONObject updateGrade(GradeBean gradeBean) {
        Integer integer = gradeMapper.updateGrade(gradeBean);
        if (integer!=0){
            jsonObject.put("code",1);
            jsonObject.put("msg","修改成功");
            jsonObject.put("data",integer);
            System.out.println("aaa");
        }else {
            jsonObject.put("code",2);
            jsonObject.put("msg","修改失败");
        }
        return jsonObject;

    }

    @Override
    public JSONObject selectGrade() {
        List<GradeBean> gradeBeans = gradeMapper.selectGrade();
        if (gradeBeans!=null){
            jsonObject.put("code",1);
            jsonObject.put("msg","查询成功");
            jsonObject.put("data",gradeBeans);
        }else {
            jsonObject.put("code",2);
            jsonObject.put("msg","查询失败");
        }
        return jsonObject;

    }

    @Override
    public List<GradeBean> list() {
        List<GradeBean> list = gradeMapper.list();
        return list;
    }

    @Override
    public int total() {
        int total = gradeMapper.total();
        return total;
    }

    @Override
    public List<GradeBean> list(Page page) {
        List<GradeBean> list = gradeMapper.list(page);
        return list;
    }
}

LoginService接口:

public interface LoginService {
    JSONObject login(Integer userId);

    List<LoginBean>selectUser();
}

LoginServiceImpl实现类:

package cn.ssm.service.impl;

import cn.ssm.mapper.LoginMapper;
import cn.ssm.pojo.LoginBean;
import cn.ssm.service.LoginService;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class LoginServiceImpl implements LoginService {

    @Resource(name = "loginMapper")
    private LoginMapper loginMapper;
    @Resource(name = "jsonObject")
    private JSONObject jsonObject;

    @Override
    public JSONObject login(Integer userId) {
        LoginBean login = loginMapper.login(userId);
        if (null!=login.getUserId()&&null!=login.getPassword()){
            jsonObject.put("code",1);
            jsonObject.put("msg","登陆成功");
            jsonObject.put("data",login);
            System.out.println("aaa");
        }else {
            jsonObject.put("code",2);
            jsonObject.put("msg","登录失败");
            System.out.println("bbb");
        }
        return jsonObject;
    }

    @Override
    public List<LoginBean> selectUser() {
        List<LoginBean> loginBeans = loginMapper.selectUser();
        return loginBeans;
    }
}

StudentService接口:
public interface StudentService {

    JSONObject updateStudent(StudentBean studentBean);
    JSONObject findStudentByStuNo(Integer stuNo);
    JSONObject addStudent(StudentBean studentBean);
    JSONObject deleteStudent(Integer stuNo);
    JSONObject selectStudent();
}

StudentServiceImpl实现类:

package cn.ssm.service.impl;


import cn.ssm.mapper.StudentMapper;
import cn.ssm.pojo.StudentBean;
import cn.ssm.service.StudentService;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class StudentServiceImpl implements StudentService {
    @Resource(name = "studentMapper")
    private StudentMapper studentMapper;
    @Resource(name = "jsonObject")
    private JSONObject jsonObject;
    @Override
    public JSONObject updateStudent(StudentBean studentBean) {
        Integer integer = studentMapper.updateStudent(studentBean);
        if (0!=integer){
            jsonObject.put("code",1);
            jsonObject.put("msg","修改成功");
            jsonObject.put("data",integer);
            System.out.println("aaa");
        }else {
            jsonObject.put("code",2);
            jsonObject.put("msg","修改失败");
        }
        return jsonObject;
    }

    @Override
    public JSONObject findStudentByStuNo(Integer stuNo) {
        StudentBean studentByStuNo = studentMapper.findStudentByStuNo(stuNo);
        if (null!=studentByStuNo){
            jsonObject.put("code",1);
            jsonObject.put("msg","修改成功");
            jsonObject.put("data",studentByStuNo);
            System.out.println("aaa");
        }else {
            jsonObject.put("code",2);
            jsonObject.put("msg","修改失败");
        }
        return jsonObject;

    }

    @Override
    public JSONObject addStudent(StudentBean studentBean) {
        Integer row = studentMapper.addStudent(studentBean);
        if (0!=row){
            jsonObject.put("code",1);
            jsonObject.put("msg","添加成功");
            jsonObject.put("data",row);
            System.out.println("aaa");
        }else {
            jsonObject.put("code",2);
            jsonObject.put("msg","添加失败");
        }
        return jsonObject;
    }

    @Override
    public JSONObject deleteStudent(Integer stuNo) {
        Integer row = studentMapper.deleteStudent(stuNo);
        if (0!=row){
            jsonObject.put("code",1);
            jsonObject.put("msg","删除成功");
            jsonObject.put("data",row);
            System.out.println("aaa");
        }else {
            jsonObject.put("code",2);
            jsonObject.put("msg","删除失败");
        }
        return jsonObject;
    }

    @Override
    public JSONObject selectStudent() {
        List<StudentBean> studentBeans = studentMapper.selectStudent();
        if (null!=studentBeans){
            jsonObject.put("code",1);
            jsonObject.put("msg","查询成功");
            jsonObject.put("data",studentBeans);
        }else {
            jsonObject.put("code",2);
            jsonObject.put("msg","查询失败");
        }
        return jsonObject;
    }
}
以上接口和实现类是以json字符串来向前台传输数据的

applicationContext_service.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:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       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/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">

    <bean name="jsonObject" class="com.alibaba.fastjson.JSONObject"></bean>
    <context:component-scan base-package="cn.ssm"></context:component-scan>

    <import resource="classpath:applicationContext_dao.xml"></import>
    <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--配置事务通知-->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="add*" isolation="DEFAULT" propagation="REQUIRED" read-only="false"/>
            <tx:method name="persist*" isolation="DEFAULT" propagation="REQUIRED" read-only="false"/>
            <tx:method name="delete*" isolation="DEFAULT" propagation="REQUIRED" read-only="false"/>
            <tx:method name="remove*" isolation="DEFAULT" propagation="REQUIRED" read-only="false"/>
            <tx:method name="update*" isolation="DEFAULT" propagation="REQUIRED" read-only="false"/>
            <tx:method name="modify*" isolation="DEFAULT" propagation="REQUIRED" read-only="false"/>
            <tx:method name="get*" isolation="DEFAULT" propagation="REQUIRED" read-only="true"/>
            <tx:method name="find*" isolation="DEFAULT" propagation="REQUIRED" read-only="true"/>
        </tx:attributes>
    </tx:advice>

    <!--将事务注入到目标对象-->
    <aop:config>
        <aop:pointcut id="txPc" expression="execution(* cn.ssm.service.impl.*ServiceImpl.*(..))"></aop:pointcut>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPc"></aop:advisor>
    </aop:config>


</beans>

pom依赖包

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Book</artifactId>
        <groupId>Book</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <packaging>jar</packaging>
    <artifactId>Book-service</artifactId>
    <dependencies>
        <dependency>
            <groupId>Book</groupId>
            <artifactId>Book-dao</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>Book</groupId>
            <artifactId>Book</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>Book</groupId>
            <artifactId>Book-pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

</project>

最后一个模块为Bookweb子工程,需要书写连接前端的控制器Controller,大家来看下代码吧!

Bookweb子工程

GradeController类文件:

package cn.ssm.controller;



import cn.ssm.pojo.GradeBean;
import cn.ssm.pojo.Page;
import cn.ssm.service.GradeService;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;
import java.util.List;

@Controller
public class GradeController {
    @Resource(name = "gradeServiceImpl")
    private GradeService gradeService;

   @Resource(name = "jsonObject")
   private JSONObject jsonObject;


    @RequestMapping(value = "/findGradeByNumber",produces = "text/plain;charset=utf-8")
    public@ResponseBody
    String findGradeByNumber(@RequestBody GradeBean gradeBean){
        String className = gradeBean.getClassName();
        jsonObject = gradeService.findGradeByNumber(className);
        System.out.println(jsonObject);
        return jsonObject.toJSONString();
    }

    @RequestMapping("/addUser")
    public@ResponseBody
    String addUser(@RequestBody GradeBean gradeBean){
        /*gradeBean.getNumber();
        gradeBean.getClassName();
        gradeBean.getClassDescript();*/
        System.out.println(gradeBean);
        jsonObject = gradeService.addGrade(gradeBean);
        System.out.println(jsonObject);
        return jsonObject.toJSONString();
    }

    @RequestMapping("/deleteGrade")
    public@ResponseBody
    String deleteGrade(@RequestBody GradeBean gradeBean){
        Integer number = gradeBean.getNumber();
        jsonObject= gradeService.deleteGrade(number);
        System.out.println(jsonObject);
        return jsonObject.toJSONString();
    }
    @RequestMapping("/updateGrade")
    public@ResponseBody
    String updateGrade(@RequestBody GradeBean gradeBean){
       /* gradeBean.getNumber();
        gradeBean.getClassName();
        gradeBean.getClassDescript();*/
        jsonObject= gradeService.updateGrade(gradeBean);
        System.out.println(jsonObject);
        return jsonObject.toJSONString();
    }

    @RequestMapping(value = "/selectGrade",produces = "text/plain;charset=utf-8")
    public@ResponseBody
    String selectGrade(){
        jsonObject = gradeService.selectGrade();
        System.out.println(jsonObject);
        return jsonObject.toJSONString();
    }

    @RequestMapping("/listGrade")
    public ModelAndView listGrade(Page page){
        ModelAndView mv = new ModelAndView();
        List<GradeBean> list = gradeService.list(page);
        int total = gradeService.total();
        page.caculateLast(total);
        mv.addObject("list",list);
        mv.setViewName("/gradeInfoManage.html");
        return mv;
    }
}

loginController类文件
package cn.ssm.controller;


import cn.ssm.pojo.LoginBean;
import cn.ssm.service.LoginService;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

@Controller
public class LoginController {

    @Resource(name = "loginServiceImpl")
    private LoginService loginService;


    @Resource(name="jsonObject")
    private JSONObject jsonObject;

    @RequestMapping("/login")
     public @ResponseBody
    String login(@RequestBody LoginBean loginBean){
        Integer userId = loginBean.getUserId();
        jsonObject = loginService.login(userId);
        System.out.println(jsonObject);
        return  jsonObject.toJSONString();

    }


  /*  @RequestMapping("/selectUser")
    public void selectUser(){
        List<LoginBean> loginBeans = loginService.selectUser();
        System.out.println(loginBeans);
    }*/

}

StudentController类文件:

package cn.ssm.controller;


import cn.ssm.pojo.StudentBean;
import cn.ssm.service.StudentService;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

@Controller
public class StudentController {

    @Resource(name = "studentServiceImpl")
    private StudentService studentService;

    @Resource(name = "jsonObject")
    private JSONObject jsonObject;

    @RequestMapping(value = "/updateStudent",produces = "text/plain;charset=utf-8")
    public@ResponseBody
    String updateStudent(@RequestBody StudentBean studentBean){
       /* studentBean.getStuNo();
        studentBean.getStuName();
        studentBean.getGender();
        studentBean.getBirthday();
        studentBean.getGradeName();
        studentBean.getEmail();
        studentBean.getStuDesc();*/
        jsonObject = studentService.updateStudent(studentBean);
        System.out.println(jsonObject);
        return jsonObject.toJSONString() ;
    }

    @RequestMapping(value = "/selectStudent",produces = "text/plain;charset=utf-8")
    public@ResponseBody
    String selectStudent(){
        jsonObject = studentService.selectStudent();
        System.out.println(jsonObject);
        return jsonObject.toJSONString();
    }

    @RequestMapping(value = "/deleteStudent",produces = "text/plain;charset=utf-8")
    public@ResponseBody
    String deleteStudent(@RequestBody StudentBean studentBean){
        /*studentBean.getStuNo();*/
        jsonObject= studentService.deleteStudent(studentBean.getStuNo());
        System.out.println(jsonObject);
        return jsonObject.toJSONString();
    }

    @RequestMapping(value = "/findStudentByStuNo",produces = "text/plain;charset=utf-8")
    public@ResponseBody
    String findStudentByStuNo(@RequestBody StudentBean studentBean){
       /* studentBean.getStuNo();*/
        jsonObject = studentService.findStudentByStuNo(studentBean.getStuNo());
        System.out.println(jsonObject);
        return jsonObject.toJSONString();
    }

    @RequestMapping(value = "/addStudent",produces = "text/plain;charset=utf-8")
    public@ResponseBody
    String addStudent(@RequestBody StudentBean studentBean){
        /*studentBean.setStuName("张三");
        studentBean.setGender("20");
        studentBean.setBirthday("1992-08-03");
        studentBean.setGradeName("家里蹲大学");
        studentBean.setEmail("jialiduan.com");
        studentBean.setStuDesc("有志向");*/
      /*  studentBean.getStuName();
        studentBean.getGender();
        studentBean.getBirthday();
        studentBean.getGradeName();
        studentBean.getEmail();
        studentBean.getStuDesc();*/
        jsonObject= studentService.addStudent(studentBean);
        System.out.println(jsonObject);
        return jsonObject.toJSONString();
    }
}

配置xml文件有:applicationContext.xml文件、log4j.properties文件(这个文件可以放在任意一个子工程中,以为现在只是在properties文件里配置了一些日志文件,随着以后踏入社会工作,这个文件也会分层的,不同的日志文件会放在不同的子工程中)、还需要配置一个SpringMVC文件。下面来看下里面的配置文件信息:

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:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       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/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">

  <import resource="classpath:applicationContext_dao.xml"></import>
  <import resource="classpath:applicationContext_service.xml"></import>
</beans>

log4j.properties文件:

# Global logging configuration
#在开发环境下日志级别设置为debug,生产环境下设置成info或error
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

SpringMVC.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"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

        <context:component-scan base-package="cn.ssm.controller"></context:component-scan>
        <mvc:annotation-driven>
                <mvc:message-converters>
                        <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
                        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
                </mvc:message-converters>
        </mvc:annotation-driven>

        <!--<mvc:interceptors>
                &lt;!&ndash;使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求
                        <bean class="........“>
                &ndash;&gt;
                <mvc:interceptor>
                        &lt;!&ndash;进行拦截;/**标识拦截所有controller&ndash;&gt;
                        <mvc:mapping path="/**"/>
                        &lt;!&ndash;不进行拦截&ndash;&gt;
                        <mvc:exclude-mapping path="ajax.html"></mvc:exclude-mapping>
                        <bean class="cn.hd.Interceptor.MyInterceptor"></bean>
                </mvc:interceptor>
        </mvc:interceptors>-->
</beans>

然后看下web.xml文件的配置信息:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:SpringMVC.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

    <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>
</web-app>

pom里的依赖包:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Book</artifactId>
        <groupId>Book</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <packaging>war</packaging>

    <artifactId>Book-web</artifactId>

    <dependencies>
        <dependency>
            <groupId>Book</groupId>
            <artifactId>Book-pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>Book</groupId>
            <artifactId>Book-service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>Book</groupId>
            <artifactId>Book-dao</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
    
</project>

由于webapp下的前端网页插入了一些前端框架,代码量太多就不在这里一一展示了,如果大家有兴趣的可以加入qq:1625371550一起来探索javweb这个领域的奥秘!

下面给大家看下父子工程创建完成后的成果:

以上是我自己的登录页面,做的不是很好看,大家别介意哈

登陆成功后的页面,使用的一些easyUI里的一些知识,大家有兴趣的可以去学学easyUI这个前端框架

班级信息管理页面,逻辑比较简单,就是一些连接数据库的增删改查

这个学生的信息管理页面,基本的增删改查是实现了,但还有好多的不足之处,做的不好还请大家见谅!

到此我们的maven父子工程管理ssm项目的分模块开发到此就结束了!!

发布了105 篇原创文章 · 获赞 536 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_41934990/article/details/81169414