包结构
1.bean 实体类:和数据库对应 构造方法 属性 getset tostring
2.dao 持久层:对数据库的操作 crud
3.service 业务层
4.controller/web 控制层:实现页面跳转
ssm
1.Spring:控制反转 控制权的转移 spring容器帮我们创建对象
2.SpringMVC:servlet
3.MyBatis:持久层框架 orm
ssm项目
1、新建Maven项目
打开IDEA点击File->New->Project,选择Maven项,勾选Create from archetype,再选择右侧中的maven-archetype-webapp项
2、添加项目主要目录
在项目创建完成之后,我们需要依据我们的需要依次建立java目录与resource目录,在新建Directory之后,我们需要右键此目录,选择Mark Directory as,java目录选择Sources Root,,resource目录选择Resources Root,将它们添加到项目中。
在java目录下创建com.summer.bean、com.summer.controller、com.summer.dao、com.summer.service四个目录,需要注意的是,如果不能文件夹分层的话,点击右上角的小齿轮,然后取消选择Compact Middle Packages,在resource中建立一个UserMapper.xml文件。
建立好之后目录如下:
3、修改pom.xml,将下面的代码粘贴到相应的位置进行替换:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!-- spring版本号 -->
<spring.version>5.0.2.RELEASE</spring.version>
<!-- mybatis版本号 -->
<mybatis.version>3.2.6</mybatis.version>
<!-- log4j日志文件管理包版本 -->
<slf4j.version>1.7.7</slf4j.version>
<log4j.version>1.2.17</log4j.version>
<c3p0.version>0.9.5.2</c3p0.version>
<taglibs.version>1.1.2</taglibs.version>
</properties>
<dependencies>
<!-- spring核心包 -->
<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>
<!-- mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis/spring包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<!-- 导入java ee jar 包 -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<!-- 导入Mysql数据库链接jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
<!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<!-- JSTL标签类 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- 日志文件管理包 -->
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- 数据连接池 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0.version}</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>${taglibs.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- 导入servlet-api/jsp -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
4、项目内容编码
在bean目录下建立类User,在昨天的基础上添加一个无参的构造函数。
在controller目录下建立类UserController,来实现页面跳转。
UserController
@Controller
@RequestMapping("user")
public class UserController {
@Autowired
private IUserService userService;
@RequestMapping("login.do")
public ModelAndView login(String username,String password){
boolean flag = userService.login(username, password);
ModelAndView modelAndView=new ModelAndView();
if(flag){
modelAndView.setViewName("../ok");
}else {
modelAndView.setViewName("../failure");
}
return modelAndView;
}
@RequestMapping("findAll.do")
public ModelAndView findAll(){
List<User> users=userService.findAll();
ModelAndView modelAndView=new ModelAndView();
modelAndView.setViewName("user-list");
modelAndView.addObject("users",users);
return modelAndView;
}
}
在dao目录下建立接口IUserDao,来实现数据库的增添查改等操作。
IUserDao
public interface IUserDao {
User findUserByUsername(String username);
List<User> findAll();
}
在service目录下建立子目录impl、IUserService接口;
在impl目录下建立类UserServiceImpl,来实现service下IUserService接口。
IUserService
public interface IUserService {
boolean login(String username,String password);
List<User> findAll();
}
UserServiceImpl
@Service
public class UserServiceImpl implements IUserService {
@Autowired
private IUserDao userDao;
@Override
public boolean login(String username, String password) {
User user = userDao.findUserByUsername(username);
if(user!=null&&user.getPassword().equals(password)){
return true;
}
return false;
}
@Override
public List<User> findAll() {
return userDao.findAll();
}
}
5、建立数据库的连接
将applicationContext.xml、db.properties、spring-mvc.xml文件复制到resource目录下。
applicationContext.xml中定义了ssm中的spring与mybatis,而spring-mvc则是springMVC。
修改applicationContext.xml、db.propertiess、spring-mvc.xml文件中的内容,与自己的数据库连接。
db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/whlg?characterEncoding=utf-8
jdbc.username=root
jdbc.password=xyj123
applicationContext.xml
<!-- 3.配置SqlSessionFactory对象 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 扫描bean包 使用别名 -->
<property name="typeAliasesPackage" value="com.summer.bean"></property>
<!--配置加载映射文件 UserMapper.xml-->
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<!-- 自动生成dao,mapper-->
<!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 给出需要扫描Dao接口包 -->
<property name="basePackage" value="com.summer.dao"/>
<!-- 注入sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
spring-mvc.xml
<!-- 1.注解扫描位置-->
<context:component-scan base-package="com.summer.controller" />
6、web.xml中加载配置文件
<!-- 配置加载类路径的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>
<!-- 配置监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<!-- 前端控制器(加载classpath:spring-mvc.xml 服务器启动创建servlet) -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置初始化参数,创建完DispatcherServlet对象,加载springmvc.xml配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<!-- 服务器启动的时候,让DispatcherServlet对象创建 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
7、实现数据库的增添查改等操作
在UserMapper.xml中实现数据的增删改查。
<mapper namespace="com.summer.dao.IUserDao">
<select id="findUserByUsername" parameterType="String" resultType="user">
select * from tb_user where username=#{username}
</select>
<select id="findAll" resultType="user">
select * from tb_user
</select>
</mapper>
登录:
登录成功、失败: