【DAY3】使用ssm实现用户的登录和增删改查

使用ssm实现用户的登录和增删改查

今天主要是跟随老师的步伐,使用老师给的界面,完成了数据的增删改查。先写一下今天又掌握的几个知识点,
1、spring的作用是控制反转,即控制权的转移,将生成对象的控制权转移给spring来自动完成,而不需要自己来编码;
2、springmvc本质上就是servlet;
3、mybatis则是作用于持久化数据的持久层,实现的基本上是之前JDBC的工作。
4、将有依赖关系的类放到容器中,解析出这些类的实例,就是依赖注入,依赖注入有两种方式, 一般是使用现成的jar包中的类时,在配置文件配置bean(对象),如下

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入数据库连接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 扫描bean包 使用别名 -->
        <property name="typeAliasesPackage" value="com.whut.Hulk.bean"></property>
        <!--配置加载映射文件 UserMapper.xml-->
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>

    </bean>

使用自己编写的类时,在类之前写上注释@Service也可以,如下

@Service
public class UserServiceImpl implements IUserService {
    @Autowired
    private IUserDao userDao;

    @Override
    public boolean login(String username, String password) {
        User user = userDao.findUserByUsername(username);
        boolean flag = false;
        if(user != null && user.getPassword().equals(password)){
            flag = true;
        }
        return flag;
    }

    @Override
    public List<User> findAll() {
        return userDao.findAll();
    }

    @Override
    public void deleteById(int id) {
        userDao.deleteById(id);

    }

    @Override
    public void add(User user) {
        userDao.add(user);
    }

    @Override
    public User selectUserById(int id) {
        return userDao.selectUserById(id);
    }

    @Override
    public void update(User user) {
        userDao.update(user);
    }

}

5、转发(forward)和重定向(redirect)的区别。转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过 程;重定向时,第一个页面通知浏览器发送一个新的页面请求。因此整个转发过程就只有一次请求,而重定向则需要两次请求。
6、占位符(#)和字符串拼接($)是在处理mybatis在处理sql语句时常用的两种符号。使用占位符时,是直接将参数替换到占位符所占的位置上;使用字符串拼接时,则是传统的字符串拼接相加,会出现问题。因此一般使用占位符会更好些。

总之,ssm简化了编码步骤,方便了开发人员的开发。

代码

我理解的代码运行的大概流程是,网页发出请求是,首先调用Controller,Controller 可以负责定义和调用Model,相应的方法返回ModelAndView的对象,决定要显示哪一个View。在这个过程中,如有需求,会调用Service中的接口,实现相关方法,如需使用数据库,就会调用dao层的接口,而这些接口,会在mybatis中实现。
具体代码:
UserController

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

    @Autowired
    private IUserService userService;


    @RequestMapping("login.do")
    public ModelAndView login(User user){
        boolean flag = userService.login(user.getUsername(),user.getPassword());
        ModelAndView modelAndView = new ModelAndView();
        if(flag){
            modelAndView.setViewName("main");
        }else{
            modelAndView.setViewName("../failer");
        }
        return modelAndView;
    }



    @RequestMapping("findAll.do")
    public ModelAndView findAll() {
        ModelAndView mv = new ModelAndView();
        List<User> users = userService.findAll();
        mv.setViewName("user-list");
        mv.addObject("users",users);

        return mv;
    }

    @RequestMapping("deleteById.do")
    public String delete(int id){
       userService.deleteById(id);
       return "redirect:findAll.do";
    }


    @RequestMapping("add.do")
    public String add(User user){
        userService.add(user);
        return "redirect:findAll.do";
    }

    @RequestMapping("toUpdate.do")
    public ModelAndView toUpadte(int id){
        User user = userService.selectUserById(id);
        ModelAndView mv = new ModelAndView();
        mv.addObject("user",user);
        mv.setViewName("user-update");
        return mv;

    }

    @RequestMapping("update.do")
    public String update(User user){
        userService.update(user);
        return "redirect:findAll.do";
    }
}

IUserDao

public interface IUserDao {
    User findUserByUsername(String Username);
    List<User> findAll();

    void deleteById(int id);

    void add(User user);

    User selectUserById(int id);

    void update(User user);
}

IUserService

public interface IUserService {
    boolean login(String username,String password);

    List<User> findAll();

    void deleteById(int id);

    void add(User user);

    User selectUserById(int id);

    void update(User user);
}

实现类UserServiceImpl

@Service
public class UserServiceImpl implements IUserService {
    @Autowired
    private IUserDao userDao;

    @Override
    public boolean login(String username, String password) {
        User user = userDao.findUserByUsername(username);
        boolean flag = false;
        if(user != null && user.getPassword().equals(password)){
            flag = true;
        }
        return flag;
    }

    @Override
    public List<User> findAll() {
        return userDao.findAll();
    }

    @Override
    public void deleteById(int id) {
        userDao.deleteById(id);

    }

    @Override
    public void add(User user) {
        userDao.add(user);
    }

    @Override
    public User selectUserById(int id) {
        return userDao.selectUserById(id);
    }

    @Override
    public void update(User user) {
        userDao.update(user);
    }

}

实现效果

用户列表
用户列表

新增用户新增用户
新建完成
新建完成
另外还实现了包括修改和删除功能,不再做演示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值