【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
--------Maven创建聚合工程---------
创建父工程:
SSM_parent:在pox.xml中导入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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bdit</groupId>
<artifactId>SSM_Parent_Web_day01</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>SSM_DAO</module>
<module>SSM_Service</module>
<module>SSM_Web</module>
</modules>
<!--指定父工程的打包方式-->
<!--maven的父工程packaging标签的值必须为pom-->
<packaging>pom</packaging>
<name>Maven</name>
<!-- FIXME change it to the project's website -->
<url>http://maven.apache.org/</url>
<inceptionYear>2001</inceptionYear>
<distributionManagement>
<site>
<id>website</id>
<url>scp://webhost.company.com/www/website</url>
</site>
</distributionManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>10</maven.compiler.source>
<maven.compiler.target>10</maven.compiler.target>
<!-- 对整个项目 的jar包版本进行统一的管理
1.properties这里面是对所有的版本进行了定义
2.dependencyManagement:做了jar包版本的管理,
3.子项目需要什么jar包我们就可以只引用该jar包就行
-->
<!--fu父工程对JAR包进行定义-->
<junit.version>4.12</junit.version>
<mybatis.version>3.5.3</mybatis.version>
<spring-context.version>5.1.6.RELEASE</spring-context.version>
<mybatis-spring.version>2.0.3</mybatis-spring.version>
<spring-web.version>5.1.6.RELEASE</spring-web.version>
<spring-webmvc.version>5.1.6.RELEASE</spring-webmvc.version>
<javax.servlet-api.version>4.0.1</javax.servlet-api.version>
<spring-test.version>5.1.6.RELEASE</spring-test.version>
<spring-jdbc.version>5.1.6.RELEASE</spring-jdbc.version>
<spring-tx.version>5.1.6.RELEASE</spring-tx.version>
<aspectjweaver.version>1.9.5</aspectjweaver.version>
<aopalliance.version>1.0</aopalliance.version>
<aspectjrt.version>1.9.5</aspectjrt.version>
<mysql-connector-java.version>8.0.13</mysql-connector-java.version>
<druid.version>1.1.21</druid.version>
<javax.annotation-api.version>1.3.2</javax.annotation-api.version>
<cglib.version>3.3.0</cglib.version>
<log4j.version>1.2.17</log4j.version>
<taglibs-standard-impl.version>1.2.5</taglibs-standard-impl.version>
<taglibs-standard-jstlel.version>1.2.5</taglibs-standard-jstlel.version>
<taglibs-standard-spec.version>1.2.5</taglibs-standard-spec.version>
<taglibs-standard-compat.version>1.2.5</taglibs-standard-compat.version>
<jackson-core.version>2.10.1</jackson-core.version>
<jackson-databind.version> 2.10.1</jackson-databind.version>
<jackson-annotations.version> 2.10.1</jackson-annotations.version>
<fastjson.version>1.2.62</fastjson.version>
<commons-fileupload.version>1.4</commons-fileupload.version>
</properties>
<!--版本锁定配置-->
<!--2.dependencyManagement:做了jar包版本的管理-->
<dependencyManagement>
<dependencies>
<!--Junit单元测试的Jar包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!--MYbatis架包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!--spring 的核心包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-context.version}</version>
</dependency>
<!--Spring Mybatis整合的包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<!--SpringMvc的核心包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring-web.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-webmvc.version}</version>
</dependency>
<!--Servlet API的包-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${javax.servlet-api.version}</version>
<scope>provided</scope>
</dependency>
<!--Spring测试的包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring-test.version}</version>
<scope>test</scope>
</dependency>
<!--jdbc 和事务的依赖包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring-jdbc.version}</version>
</dependency>
<!--jdbc事物的包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring-tx.version}</version>
</dependency>
<!--AOP的依赖包用于测试-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectjweaver.version}</version>
<scope>runtime</scope>
</dependency>
<!--AOP的依赖包-->
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>${aopalliance.version}</version>
</dependency>
<!--AOP的依赖包用于测试-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectjrt.version}</version>
</dependency>
<!--Mysql数据数据库的包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
<!--连接池的包-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!--@Resource 所在的包-->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>${javax.annotation-api.version}</version>
</dependency>
<!--基于子类的动态代理类-->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>${cglib.version}</version>
</dependency>
<!--Log4j日志信息的架包-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!--jstl架包-->
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>${taglibs-standard-impl.version}</version>
</dependency>
<!--jstl架包-->
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-jstlel</artifactId>
<version>${taglibs-standard-jstlel.version}</version>
<scope>provided</scope>
</dependency>
<!--jstl架包-->
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-spec</artifactId>
<version>${taglibs-standard-spec.version}</version>
</dependency>
<!--jstl架包-->
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-compat</artifactId>
<version>${taglibs-standard-compat.version}</version>
</dependency>
<!--导入Json解析的工具包-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson-core.version}</version>
</dependency>
<!--导入Json解析的工具包-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-databind.version}</version>
</dependency>
<!--导入Json解析的工具包-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson-annotations.version}</version>
</dependency>
<!--导入 fastJSON jar包-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!--文件上传组件jar包-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!--把项目中所有放入依赖放入父工程中-->
<dependencies>
<!--Junit单元测试的Jar包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!--MYbatis架包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<!--spring 的核心包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<!--Spring Mybatis整合的包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</dependency>
<!--SpringMvc的核心包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<!--Servlet API的包-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<!--Spring测试的包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<scope>test</scope>
</dependency>
<!--jdbc 和事务的依赖包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<!--jdbc事物的包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<!--AOP的依赖包用于测试-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<scope>runtime</scope>
</dependency>
<!--AOP的依赖包-->
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
</dependency>
<!--AOP的依赖包用于测试-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>
<!--Mysql数据数据库的包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--连接池的包-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<!--@Resource 所在的包-->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
</dependency>
<!--基于子类的动态代理类-->
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
</dependency>
<!--Log4j日志信息的架包-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<!--jstl架包-->
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
</dependency>
<!--jstl架包-->
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-jstlel</artifactId>
<scope>provided</scope>
</dependency>
<!--jstl架包-->
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-spec</artifactId>
</dependency>
<!--jstl架包-->
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-compat</artifactId>
</dependency>
<!--导入Json解析的工具包-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<!--导入Json解析的工具包-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!--导入Json解析的工具包-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
<!--导入 fastJSON jar包-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<!--文件上传组件jar包-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</dependency>
</dependencies>
</project>
创建SSM-DAO子工程
SMM_DAO:在pom.xml中准备如下数据
<?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>SSM_Parent_Web_day01</artifactId>
<groupId>com.bdit</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>SSM_DAO</artifactId>
<!--指定打包的方式-->
<packaging>jar</packaging>
</project>
DAO层的SQL映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bdit.dao.MapperUser">
<!--查询所有的操作-->
<select id="findAll" resultType="com.bdit.VO.User">
select * from user
</select>
<!--根据id去查询-->
<select id="findByid" resultType="com.bdit.VO.User" parameterType="int">
select * from user where id=#{id}
</select>
<!--保存信息-->
<insert id="insert" parameterType="com.bdit.VO.User">
insert into user(userName,gender,address)values(#{userName},#{gender},#{address})
</insert>
<!--修改信息-->
<update id="update" parameterType="com.bdit.VO.User">
update user set userName=#{userName},gender=#{gender},address=#{address} where id=#{id}
</update>
<!--删除信息:根据用户的id去删除-->
<delete id="delete" parameterType="com.bdit.VO.User">
delete from user where id=#{id}
</delete>
<!-- <!–模糊查询–>-->
<!-- <select id="findName" parameterType="java.lang.String" resultType="com.model.User">-->
<!-- select * from user where username like '%${value}%'-->
<!-- </select>-->
<!-- <!–使用聚合函数查询表中的总记录数–>-->
<!-- <select id="totalcont" resultType="java.lang.Integer">-->
<!-- select count(id) from user-->
<!-- </select>-->
<!-- <select id="finaAlll" resultMap="Map">-->
<!-- select * from user-->
<!-- </select>-->
<!-- <resultMap id="Map" type="com.model.VOUser">-->
<!-- <id column="id" property="stuId"/>-->
<!-- <result column="username" property="username"/>-->
<!-- <result column="age" property="stuage"/>-->
<!-- <result column="address" property="stuaddress"/>-->
<!-- </resultMap>-->
</mapper>
DAO层的applicationContext_dao.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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
">
<!--引入外部属性文件-->
<context:property-placeholder location="classpath:ab.properties"></context:property-placeholder>
<!--自动扫描指定的包-->
<context:component-scan base-package="com.bdit">
<!--Spring就不在扫描@Contrellor的类-->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--阿里的数据源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${driverClassName}"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
</bean>
<!--配置mybatis的Session工场-->
<bean id="sessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--注入数据源-->
<property name="dataSource" ref="dataSource"/>
<!--加载 mybatis 的配置文件 SqlMapConfig.xml-->
<property name="configLocation" value="classpath:SqlMapConfig.xml "/>
</bean>
<!--配置自动扫描所有的 Mapper 接口和文件-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.bdit.dao"/>
</bean>
</beans>
DAO的SqlMapConfig.xml文件:里面什么都不用写,容器会自动扫描
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
</configuration>
DAO层的测试类:测试你的配置是否成功:
public class MapperUserSpring {
@Test
public void MapperTest(){
ApplicationContext context=new ClassPathXmlApplicationContext("classpath:applicationContext-dao.xml");
MapperUser mapperUser=context.getBean(MapperUser.class);
List<User>list=mapperUser.findAll();
for(User user:list){
System.out.println(user);
}
}
创建:SSM-Service子工程;
Service层的pom.xml文件
<?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>SSM_Parent_Web_day01</artifactId>
<groupId>com.bdit</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>SSM_Service</artifactId>
<!--打包方式为jar包-->
<packaging>jar</packaging>
<!--SSM-DAO依赖-->
<dependencies>
<dependency>
<groupId>com.bdit</groupId>
<artifactId>SSM_DAO</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
Service接口以及Service的实现类
package com.bdit.Service;
import com.bdit.VO.User;
import java.util.List;
//编写业务层接口
public interface IUserServiceDao{
//查询所有的信息
public List<User> findAll();
//根据id去查询
public User findByid(Integer id);
//添加的方法
public int insert(User user);
//更新的方法
public int update(User user);
//删除的方法
public int delete(Integer id);
}
package com.bdit.Service.impl;
import com.bdit.Service.IUserServiceDao;
import com.bdit.VO.User;
import com.bdit.dao.MapperUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceimpl implements IUserServiceDao {
@Autowired
private MapperUser userDao;
public void setUserDao(MapperUser userDao) {
this.userDao = userDao;
}
@Override
public List<User> findAll(){
return userDao.findAll();
}
@Override
public User findByid(Integer id) {
return userDao.findByid(id);
}
@Override
public int insert(User user) {
return userDao.insert(user);
}
@Override
public int update(User user) {
return userDao.update(user);
}
@Override
public int delete(Integer id) {
return userDao.delete(id);
}
}
准备Service层的: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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
">
<!--导入持久层的配置文件-->
<import resource="classpath:applicationContext-dao.xml"></import>
<context:component-scan base-package="com.bdit.Service"></context:component-scan>
<!--配置Spring的事物管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--事务通知的配置和事务管理器对象的引用-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!--<tx:attributes>用来配置事务的属性标签-->
<tx:attributes>
<!--<tx:method>用来指定方法的名称-->
<tx:method name="findAll*" read-only="true" isolation="REPEATABLE_READ" propagation="SUPPORTS"/>
<tx:method name="findByid*" read-only="true" isolation="REPEATABLE_READ" propagation="SUPPORTS"/>
<tx:method name="insert*" read-only="false" isolation="REPEATABLE_READ" propagation="REQUIRED"/>
<tx:method name="update*" read-only="false" isolation="REPEATABLE_READ" propagation="REQUIRED"/>
<tx:method name="delete*" read-only="false" isolation="REPEATABLE_READ" propagation="REQUIRED"/>
<!--如果这样配置的话针对整个Dao接口的实现类都有效,我们一般分来配置-->
<tx:method name="*" read-only="false" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<!-- 配置AOP切面-->
<aop:config>
<!-- 配置AOP切入点-->
<aop:pointcut id="txPointcut" expression="execution(* com.bdit.Service.impl.*.*(..))"/>
<!--配置事务的通知和切入点的关联关系-->
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</aop:config>
</beans>
Service层测试代码:
public class ServiceTest {
@Test
public void TestSpring(){
ApplicationContext context=new ClassPathXmlApplicationContext("classpath:applicationContext-Service.xml");
IUserServiceDao serviceDao=context.getBean(IUserServiceDao.class);
List<User>list=serviceDao.findAll();
for(User user:list){
System.out.println(user);
}
}
}
准备SSM_Web层的Pom.xml配置文件
<?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>
<!--引入父工程-->
<parent>
<artifactId>SSM_Parent_Web_day01</artifactId>
<groupId>com.bdit</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.bdit</groupId>
<artifactId>SSM_Web</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>SSM_Web Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>10</maven.compiler.source>
<maven.compiler.target>10</maven.compiler.target>
</properties>
<!--引入Servlice-->
<dependencies>
<dependency>
<groupId>com.bdit</groupId>
<artifactId>SSM_Service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
准备SSM_Web层的: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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
">
<!--导入Service的配置文件-->
<import resource="classpath:applicationContext-Service.xml"></import>
</beans>
准备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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://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/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
">
<!--配置 springmvc 要扫描的包-->
<context:component-scan base-package="com.bdit">
<!--指定扫描包的规则,SpringMVC只扫描包含@Controller的类-->
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--自动加载处理器映射器、处理器适配器-->
<!--引用自定义的类型转换器-->
<mvc:annotation-driven>
</mvc:annotation-driven>
<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--视图所在的位置,也就是前缀-->
<property name="prefix" value="/WEB-INF/pags/"/>
<!--所使用视图技术的后缀名-->
<property name="suffix" value=".jsp"/>
</bean>
<!--在 springmvc 中设置,静态资源不要过滤
location 表示路径,mapping 表示文件或过滤规则,**表示该目录下的文件以及子文件夹-->
<mvc:resources mapping="/css/**" location="/css/"/>
<mvc:resources mapping="/js/**" location="/js/"/>
<mvc:resources mapping="/images/**" location="/images/"/>
</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_4_0.xsd"
version="4.0">
<!--啥时候加载Spring的配置文件-->
<!--手动指定Spring的配置文件-->
<!--相当于配置了一个上下文的初始化参数-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--配置Spring提供的监听器,用于启动服务时加载Spirng的配置文件,
该监听器只能加载/WEB-INF/目录中名称为applicationContext.xml中的文件-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--配置 Spring mvc 框架的编码过滤器-->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!--设置过滤器的属性值-->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<!--启动过滤器-->
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!--配置过滤器的映射路径-->
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--HiddentHttpMethodFilter过滤器来实现RESTFul 风格-->
<filter>
<filter-name>hiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--配置 spring mvc 的核心控制器-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--配置初始化参数,用于读取 springmvc 的配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:SpringMVC.xml</param-value>
</init-param>
<!--配置 servlet 实例创建的节点,应用加载时就创建-->
<load-on-startup>0</load-on-startup>
</servlet>
<!--配置映射的路径-->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
准备SSM-Web层的前端控制器:
package com.bdit.controller;
import com.bdit.Service.impl.UserServiceimpl;
import com.bdit.VO.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserServiceimpl userService;
@RequestMapping("/list") //查询用户信息的方法
public ModelAndView user(){
ModelAndView mav=new ModelAndView();
List<User> list=userService.findAll();
//指定响应的客户端
mav.addObject("list",list);
//指定要跳转的逻辑视图
mav.setViewName("list");
return mav;
}
//添加用户信息的方法
@RequestMapping("/insert")
public String insert(User user){
int i=userService.insert(user);
if(i>0){
return "forward:/WEB-INF/pags/success.jsp";
}else{
return "error";
}
}
//编辑用户的信息
@RequestMapping("/edit/{id}")
public ModelAndView edit(@PathVariable("id")Integer id){
ModelAndView Mav=new ModelAndView();
User user=userService.findByid(id);
//指定响应的客户端
Mav.addObject("user",user);
Mav.setViewName("edit");
return Mav;
}
//用户信息的修改页面
@RequestMapping("/update")
public String update(User user){
int i=userService.update(user);
if(i>0){
return "redirect:/user/list";
}else{
return "error";
}
}
//用户信息的修改页面
@RequestMapping("/delete/{id}")
public String delete(@PathVariable("id")Integer id){
int i=userService.delete(id);
if(i>0){
return "redirect:/user/list";
}else{
return "error";
}
}
}
-----准备CRUD的前端页面:------
添加查询的页面:index.jsp -----insert.jsp
<%@page contentType="text/html; charset=utf-8" language="java" %>
<html>
<body>
<h2>Hello World 恭喜你SSM配置成功!</h2>
<a href="user/list" style="color:red">点击======>查询用户的信息</a>
<hr style="width: 10px; border:20px">
<form action="user/insert" method="post">
用户名:<input type="text" name="userName" style="background: aqua"><br>
性@别:<input type="radio" name="gender" value="男">男
<input type="radio" name="gender" value="女">女<br>
住@址:<input type="text" name="address" style="background: aqua"><br>
<input type="submit" value="提交">
<input type="submit" value="重置">
</form>
</body>
</html>
展示的页面list.jsp
<%--
Created by IntelliJ IDEA.
User: Lenovo-T410
Date: 2020/1/7
Time: 18:37
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>用户信息的查询页面</title>
</head>
<body>
<h2 style="color: green"align="center">用户信息的展示页面</h2>
<table width="100%" border="100%" style="background: blanchedalmond">
<tr align="center">
<th>用户ID</th>
<th>用户名</th>
<th>性别</th>
<th>住址</th>
<th>操作</th>
</tr>
<c:forEach items="${list}" var="user">
<tr align="center">
<td>
${user.id}
</td>
<td>
${user.userName}
</td>
<td>
${user.gender}
</td>
<td>
${user.address}
</td>
<td>
<a href="${pageContext.request.contextPath}/user/edit/${user.id}">编辑</a>
<a href="${pageContext.request.contextPath}/user/delete/${user.id}">删除</a>
</td>
</tr>
</c:forEach>
</table>
</body>
</html>
编辑的页面:edit.jsp
<%--
Created by IntelliJ IDEA.
User: Lenovo-T410
Date: 2020/1/7
Time: 20:01
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>用户信息的编辑页面</title>
</head>
<body>
<h2>用户信息的编辑页面</h2>
<form action="${pageContext.request.contextPath}/user/update" method="post">
用户名:<input type="text" name="userName" value=${user.userName}><br>
性别:
<c:if test="${user.gender=='男'}">
<input type="radio" name="gender" value="男" checked>男
<input type="radio" name="gender" value="女">女<br>
</c:if>
<c:if test="${user.gender=='女'}">
<input type="radio" name="gender" value="男" checked >男
<input type="radio" name="gender" value="女" checked >女<br>
</c:if>
住址:<input type="text" name="address" value="${user.address}"><br>
<input type="submit" value="修改">
<input type="hidden" name="id" value="${user.id}">
</form>
</body>
</html>
错误信息的提示页面:error.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>用户的信息添加失败,服务器正在忙!!!!</h2>
</body>
</html>
----------------------------整合Mybatis-----Spring----SpringMVC的聚合工程完活---------------------
来源:oschina
链接:https://my.oschina.net/u/4244602/blog/3155048