欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实训日志2 SSM框架了解和实现简单用户管理系统的增删改查

程序员文章站 2022-05-05 15:16:02
...

SSM框架

1、Spring技术

    spring是一个容器框架,它可以接管web层,业务层,dao层,持久层的各个组件,并且可以配置各种bean, 并可以维护bean与bean的关系。

  • IOC 控制反转:

        不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。把创建对象和维护对象之间的关系的权利从程序转移到spring的容器。

  • AOP 面向切面编程

       核心:在不增加代码的基础上,还增加新功能。

       什么是切面?你可以这样想:一个公司有多个销售部,都需要行政帮忙搞定日常的订文具、机票、办公室、出差酒店什么的,都需要财务搞定报销、收付款什么的事务吧,要仓库帮忙发货什么的。不可能每个销售部都去招几个行政、财务和仓管什么吧,销售部门只要做好业务就行了,订文具什么的事情交个专门的部门去办就行。在Spring AOP 中,把这些公共的事务,也就是这个例子中的行政啊、财务啊、仓管啊,看成一个个切面,让你的开发的时候,专注于核心业务。

2、Spring MVC

C - Controller:控制器。接受用户请求,调用 Model 处理,然后选择合适的View给客户。

M - Model:模型。业务处理模型,接受Controller的调遣,处理业务,处理数据。

V - View:视图。返回给客户看的结果。注意这里的客户未必是人,可能是浏览器,可能是APP

实训日志2 SSM框架了解和实现简单用户管理系统的增删改查

3、MyBatis

    是对jdbc的封装,它让数据库底层操作变的透明。Mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

 

SSM框架简单用户管理系统的增删改查的实现

用户登陆的实现以及用户的增删改查实现

1、首先仍然先创建User实体类:

public class User {
    private int id;
    private String username;
    private String password;

    public User() {
    }

    public User(int id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public int getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

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

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

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

    public String getPassword() {
        return password;
    }

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

2、创建IUserDao接口和UserMapper.xml进行关联,

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);
}

UserMapper.xml中写入相应的数据库操作语句,包括增删改查操作,与IUserDao中方法一致

<?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.zr.dao.IUserDao">
    <!--别名user小写-->
    <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>
    <select id="deleteById" resultType="user">
        delete from tb_user where id=#{id}
    </select>
    <select id="add" resultType="user">
        insert into tb_user(username,password) values (#{username},#{password})
    </select>
    <select id="selectUserById" parameterType="int" resultType="user">
        select * from tb_user where id=#{id}
    </select>
    <update id="update" parameterType="user">
        update tb_user set username=#{username},password=#{password}
        where id=#{id}
    </update>
</mapper>

3、编写Service层,IUserService接口和UserServiceImpl对其的具体实现

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,这里可以看到我们让容器给我们自动创建了IUserDao类,在其中写了包括登陆,查询所有,删除,添加以及更新修改的逻辑业务。

@Service
public class UserServiceImpl implements IUserService {
    //容器创建new
    @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();
    }

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

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

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

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

4、编写Controller层,下面为UserConntroller具体代码,这里主要调用service层方法,创建modelandview并返回相应视图。同时这里也有使用redirect重定向,redirect是直接跳转到其他页面:

@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(){
        List<User> users=userService.findAll();
        ModelAndView mv=new ModelAndView();
        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 toUpdate(int id){

        User user=userService.selectUserById(id);
        ModelAndView modelAndView=new ModelAndView();
        modelAndView.addObject("user",user);
        modelAndView.setViewName("user-update");

        return modelAndView;
    }

    @RequestMapping("update.do")
    public String update(User user){
        userService.update(user);

        return "redirect:findAll.do";
    }
}

5、实现前端的相应,跳转到指定界面以及实现相应的操作

首先为登陆表单,action为/user/login.do,所以他会到conntroller中找到与/user/login.do对应的视图,进行操作处理:

<form  method="post" action="/user/login.do">
				<div class="form-group has-feedback">
					<input type="text"  class="form-control"
						placeholder="用户名" name="username"> <span
						class="glyphicon glyphicon-envelope form-control-feedback"></span>
				</div>
				<div class="form-group has-feedback">
					<input type="password"  class="form-control"
						placeholder="密码" name="password"> <span
						class="glyphicon glyphicon-lock form-control-feedback"></span>
				</div>
				<div class="row">
					<div class="col-xs-8">
						<div class="checkbox icheck">
							<label><input type="checkbox"> 记住 下次自动登录</label>
						</div>
					</div>
					<!-- /.col -->
					<div class="col-xs-4">
						<button type="submit" class="btn btn-primary btn-block btn-flat">登录</button>
					</div>
					<!-- /.col -->
				</div>
			</form>

用户管理模块将所有用户展现,具体如下,在conntroller层中,对list-users界面视图通过mv.setViewName("user-list") ; mv.addObject("users",users) ; 将users的值传入了user-list的界面上,于是在前端界面进行引用展现;

同时本界面也有对每条记录的删除,修改更新功能,,以删除为例,不仅传入相应的视图位置,同时将id作为参数传入,在后端对其进行处理,完成后再重定向回到所有用户界面

<tbody>
<c:forEach items="${users}" var="user">
	<tr>
	<td><input id="ids" name="ids" type="checkbox" value="${user.id}"></td>
	<td>${user.id}</td>
	<td>${user.username}</td>
	<td>${user.password}</td>
	<td class="text-center">
	<a href="/user/toUpdate.do?id=${user.id}" class="btn bg-olive btn-xs">更新</a>
	<a href="/user/deleteById.do?id=${user.id}" class="btn bg-olive btn-xs">删除</a>
	<a href="" class="btn bg-olive btn-xs">添加角色</a>
												
	</td>
	</tr>
</c:forEach>
									
</tbody>

添加用户的表单如下,转到user/add.do的视图进行处理返回,同时完成后也重定向回到所有用户界面:

<form action="${pageContext.request.contextPath}/user/add.do"
				method="post">
				<!-- 正文区域 -->
				<section class="content"> <!--产品信息-->

				<div class="panel panel-default">
					<div class="panel-heading">用户信息</div>
					<div class="row data-type">
						<%--<div class="col-md-2 title">id</div>--%>
						<%--<div class="col-md-4 data">
							<input type="text" class="form-control" name="id"
								   placeholder="id" value="">
						</div>--%>

						<div class="col-md-2 title">用户名称</div>
						<div class="col-md-4 data">
							<input type="text" class="form-control" name="username"
								placeholder="用户名称" value="">
						</div>
						<div class="col-md-2 title">密码</div>
						<div class="col-md-4 data">
							<input type="password" class="form-control" name="password"
								placeholder="密码" value="">
						</div>


					</div>
				</div>
				<!--订单信息/--> <!--工具栏-->
				<div class="box-tools text-center">
					<button type="submit" class="btn bg-maroon">保存</button>
					<button type="button" class="btn bg-default"
						onclick="history.back(-1);">返回</button>
				</div>
				<!--工具栏/--> </section>
				<!-- 正文区域 /-->
			</form>

更新用户信息,首先在用户管理界面传入用户id,查询数据库将用户信息传入更新用户信息的界面,进行修改操作:

<form action="${pageContext.request.contextPath}/user/update.do"
				method="post">
				<!-- 正文区域 -->
				<section class="content"> <!--产品信息-->

				<div class="panel panel-default">
					<div class="panel-heading">用户信息</div>
					<div class="row data-type">
						<div class="col-md-2 title">id</div>
						<div class="col-md-4 data">
							<input type="text" class="form-control" name="id"
								   placeholder="id" value="${user.id}">
						</div>

						<div class="col-md-2 title">用户名称</div>
						<div class="col-md-4 data">
							<input type="text" class="form-control" name="username"
								placeholder="用户名称" value="${user.username}">
						</div>
						<div class="col-md-2 title">密码</div>
						<div class="col-md-4 data">
							<input type="password" class="form-control" name="password"
								placeholder="密码" value="${user.password}">
						</div>


					</div>
				</div>
				<!--订单信息/--> <!--工具栏-->
				<div class="box-tools text-center">
					<button type="submit" class="btn bg-maroon">保存</button>
					<button type="button" class="btn bg-default"
						onclick="history.back(-1);">返回</button>
				</div>
				<!--工具栏/--> </section>
				<!-- 正文区域 /-->
			</form>

下面为实现截图:

用户管理界面:

实训日志2 SSM框架了解和实现简单用户管理系统的增删改查

修改用户界面:

实训日志2 SSM框架了解和实现简单用户管理系统的增删改查

添加用户界面:

实训日志2 SSM框架了解和实现简单用户管理系统的增删改查

相关标签: 实习