首先创建一个父工程,另外创建四个子工程分别是: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")
[email protected]
String findGradeByNumber(@RequestBody GradeBean gradeBean){
String className = gradeBean.getClassName();
jsonObject = gradeService.findGradeByNumber(className);
System.out.println(jsonObject);
return jsonObject.toJSONString();
}
@RequestMapping("/addUser")
[email protected]
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")
[email protected]
String deleteGrade(@RequestBody GradeBean gradeBean){
Integer number = gradeBean.getNumber();
jsonObject= gradeService.deleteGrade(number);
System.out.println(jsonObject);
return jsonObject.toJSONString();
}
@RequestMapping("/updateGrade")
[email protected]
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")
[email protected]
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")
[email protected]
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")
[email protected]
String selectStudent(){
jsonObject = studentService.selectStudent();
System.out.println(jsonObject);
return jsonObject.toJSONString();
}
@RequestMapping(value = "/deleteStudent",produces = "text/plain;charset=utf-8")
[email protected]
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")
[email protected]
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")
[email protected]
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项目的分模块开发到此就结束了!!