首先创建一个父工程,另外创建四个子工程分别是: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&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> <!–使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求 <bean class="........“> –> <mvc:interceptor> <!–进行拦截;/**标识拦截所有controller–> <mvc:mapping path="/**"/> <!–不进行拦截–> <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项目的分模块开发到此就结束了!!