Java-中软-2 ssm

包结构
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>

登录:
login
登录成功、失败:
okfailure

猜你喜欢

转载自blog.csdn.net/weixin_43296415/article/details/107522706