中软国际实习第三天-实例学习SSM框架

SSM简介

SSM框架
Spring:
IOC(控制反转)和AOP(面向切面)
SpringMVC:
model:模型;view:视图;controller:控制
MyBatis:
只需要配置就可以连接数据库进行操作。(不需要jdbc的七个步骤)

代码框架

util 工具层;
bean 实体类,对应数据库中的表格,,包含属性、构造方法、getter和setter、toString;
dao 持久层,负责数据库的增删查改;
service 业务层,负责数据处理的服务
controller 控制层,负责实现和容器、服务的交互。

项目实例1

  1. 新建maven项目:
    记得勾选Create from archetype
    在这里插入图片描述
    在这里插入图片描述
    点击next后,我们需要修改maven的安装目录,并按下图所示添加maven属性。
    在这里插入图片描述
    在这里插入图片描述
    注意在创建后需要在右下角点击Enable Auto-Import,这样才能自动导入我们需要的jar包,不会出现错误。
    在这里插入图片描述
  2. 框架搭建
      新建src、main、java目录,右键java文件夹mark directory as sources root,我们将在这个目录下搭建实体类、持久层、控制层和服务层。
    在这里插入图片描述
    在main目录下新建resource目录,右键将resource目录Mark Directory As Resource Root,如下图所示:
    在这里插入图片描述
    搭建好的框架如下所示,其中bean为实体类层,对应数据库中的表格,包含属性、构造方法、getter和setter、toString;controller为控制层,负责实现和容器、服务的交互;dao为持久层,负责数据库的增删查改;service为业务层,负责数据处理的服务。
    在这里插入图片描述
  3. 修改maven项目配置文件
      pom.xml为meaven项目的配置文件,修改pom.xml文件,将老师提供的素材中的pom.xml里面的properties和dependencies置换到项目中的pom.xml文件。复制过去后,IDEA会自动下载相应依赖包,当下载完毕后,将不再有红色报错提示。按住control可以单击查看依赖包。如下所示
    在这里插入图片描述
    4.实体类实现
      按照昨天的方法在bean层书写实体类UserInfo,
public class UserInfo {
    private int id;
    private String username;
    private String password;

    public UserInfo() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "UserInfo{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

5.持久层设置
  在dao层写一个接口文件IUserInfoDao,具体的实现将在myBatis文件中指定。

public interface IUserInfoDao {

    public List<UserInfo> findAll();
    public void updateUser(UserInfo userInfo);
    public void deleteUser(int id);
    public void addUser(UserInfo userInfo);
    public UserInfo searchUser(int id);
}

  1. myBatis文件配置与实现
      为了使用myBatis,我们需要下载素材包中的以下三个文件复制到resources的mapper目录下,如下所示:
      在这里插入图片描述
      修改applicationContext.xml和db.properties文件。在db.properties文件中我们需要指定数据库的url、用户名和密码。
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/user?useSSL=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123

在applicationContext.xml文件中我们需要指定Dao包、bean包、映射文件的地址,一般是自动检测生成的,需要自己检查是否与自己的项目对应,具体代码如下所示:

<!-- 3.配置SqlSessionFactory对象 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 注入数据库连接池 -->
    <property name="dataSource" ref="dataSource"/>
    <!-- 扫描bean包 使用别名 -->
    <property name="typeAliasesPackage" value="com.zhongruan.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.zhongruan.dao"/>
    <!-- 注入sqlSessionFactory -->
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>

接下来书写映射函数文件,也就是myBatis的实现,在mapper目录下新建UserInfoMapper.xml文件,将素材中的UserMapper.xml文件代码复制过去,然后根据个人需要书写具体的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.zhongruan.dao.IUserInfoDao" >
    <select id="findAll" resultType="com.zhongruan.bean.UserInfo">
        select * from userinfo
    </select>

    <select id="searchUser" resultType="com.zhongruan.bean.UserInfo" parameterType="int">
        select * from userinfo where id =#{id}
    </select>

    <insert id="addUser" parameterType="com.zhongruan.bean.UserInfo">
        insert into userinfo (id, username, password) values (#{id}, #{username}, #{password})
    </insert>

    <update id="updateUser" parameterType="com.zhongruan.bean.UserInfo">
        update userinfo set
            username = #{username},
            password = #{password}
          where id = #{id}
    </update>

    <delete id="deleteUser" parameterType="int">
        delete from userinfo where id = #{id}
    </delete>

</mapper>

  1. 服务层实现
      进行service接口的创建和实现,service服务层就相当于后端向前端提供的服务,所以要在其中书写增删查改几个功能函数
    在这里插入图片描述
      在impl包下书写具体的实现类,调用Spring注入的userInfoDao,实现具体的功能。@Autowired注释可以实现自动装配。
@Service("userInfoService")
public class UserInfoServiceImpl implements IUserInfoService {

    @Autowired
    IUserInfoDao userInfoDao;

    @Override
    public List<UserInfo> findAll() {
        return userInfoDao.findAll();
    }

    @Override
    public void addUser(UserInfo userInfo) {
        // System.out.println(userInfo);
        userInfoDao.addUser(userInfo);
    }

    @Override
    public void deleteUser(int id) {
        userInfoDao.deleteUser(id);
    }

    @Override
    public void updateUser(UserInfo userInfo) {
        userInfoDao.updateUser(userInfo);
    }

    @Override
    public UserInfo searchUser(int id) {
        return userInfoDao.searchUser(id);
    }
}

8.界面素材的复制
   复制素材中的web.xml到main-> webapp -> WEB-INF目录下,复制jsp文件夹到main -> webapp目录下,复制spring-mvc.xml文件main -> resources目录下。

9.Tomcat部署
  使用Tomcat进行部署,点击Run , Edit Configurations,点击“+”添加Tomcat服务器,如下所示:
在这里插入图片描述
  如下图进行配置,在Server窗口需要配置Name,Application server和JRE
在这里插入图片描述
  在deployment窗口,点击“+”号,选择Artifact,选择第二个ssm0712:war exploded进行添加部署
  在这里插入图片描述
  然后apply, ok即可
  在浏览器中输入localhost:8080\ssm0712(项目名),即可看到
在这里插入图片描述
10.控制层实现
  接下来书写控制层,完成前后端的交互处理,或者说视图与模型的交互。在Controller下新建一个UserInfoController类,创建一个IUserInfoService对象,来获取服务层所提供的服务,注意使用@Autowired注释实现自动装配。依据jsp文件夹下的视图文件,书写相应的函数,记得注释@RequestMapping("*.do"),实现从页面与控制器的交互。在函数内部可以进行数据处理和视图更换。

@Controller
@RequestMapping("user")
public class UserInfoController {

    @Autowired
    IUserInfoService userInfoService;


    //跳转到所有用户界面
    @RequestMapping("findAll.do")
    public ModelAndView findAll(){
        //获取数据
        List<UserInfo> userInfos = userInfoService.findAll();
        //设置属性
        ModelAndView mv = new ModelAndView();
        mv.addObject("userInfos", userInfos);
        //选择视图
        mv.setViewName("allUser");
        return mv;
    }

    //跳转到更新数据界面
    @RequestMapping("toUpdate.do")
    public ModelAndView toUpdate(@RequestParam("id") int id){
        //处理数据
        UserInfo userInfo = userInfoService.searchUser(id);
        //设置属性
        ModelAndView mv = new ModelAndView();
        mv.addObject("userInfo", userInfo);
        //选择视图
        mv.setViewName("updateUser");
        return mv;
    }

    //跳转到添加用户界面
    @RequestMapping("toAddUser.do")
    public ModelAndView toAddUser(){
        //设置属性
        ModelAndView mv = new ModelAndView();
        //选择视图
        mv.setViewName("addUser");
        return mv;
    }

    //删除用户
    @RequestMapping("delete.do")
    public ModelAndView delete(@RequestParam("id") int id){
        //处理数据
        userInfoService.deleteUser(id);
        List<UserInfo> userInfos = userInfoService.findAll();
        //设置属性
        ModelAndView mv = new ModelAndView();
        mv.addObject("userInfos", userInfos);
        //选择视图
        mv.setViewName("allUser");
        return mv;
    }

    //保存新增的用户
    @RequestMapping("save.do")
    public ModelAndView save(@RequestParam("id") int id, @RequestParam("username") String username, @RequestParam("password") String password){
        UserInfo userInfo = new UserInfo();
        userInfo.setId(id);
        userInfo.setUsername(username);
        userInfo.setPassword(password);
        // 处理数据
        userInfoService.addUser(userInfo);
        List<UserInfo> userInfos = userInfoService.findAll();
        // 设置属性
        ModelAndView mv = new ModelAndView();
        mv.addObject("userInfos", userInfos);
        //选择视图
        mv.setViewName("allUser");
        return mv;
    }

    //保存更改的用户数据
    @RequestMapping("update.do")
    public ModelAndView update(@RequestParam("id") int id, @RequestParam("username") String username, @RequestParam("password") String password){
        UserInfo userInfo = new UserInfo();
        userInfo.setId(id);
        userInfo.setUsername(username);
        userInfo.setPassword(password);
        //处理数据
        userInfoService.updateUser(userInfo);
        List<UserInfo> userInfos = userInfoService.findAll();
        // 设置属性
        ModelAndView mv = new ModelAndView();
        mv.addObject("userInfos", userInfos);
        //选择视图
        mv.setViewName("allUser");
        return mv;
    }
}

效果截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值