刚学完JavaWeb用来练手的项目来啦——学生信息管理系统之完结篇(详细手把手,适合自学的小伙伴)

前言

这一篇是学生信息管理系统这个练手小项目的完结篇,前面几篇我们分别实现了这个系统的登录和增删查的功能,虽然说功能比较简单,但是对于刚刚完成JavaWeb基础知识的小伙伴来说这个项目正好可以巩固你所学,如果你看完博客觉得会了,那么我建议你还是再自己敲一遍,这样才能发现自己的问题,找出来并改正,然后继续下一阶段的学习。

界面展示

首先我们点击所要修改学生的修改按钮
在这里插入图片描述
点击之后,跳转到修改学生信息的界面,注意熬,这里有一个小细节,每一个框都有原来未修改的信息存在,而不是直接让你重新填写,这叫做数据的回显。
在这里插入图片描述
我们将孙悟空的学生信息改为猪八戒的,让猪八戒重新回来上学。
在这里插入图片描述
修改完成之后,点击提交按钮,跳转到学生信息列表页面。
在这里插入图片描述

代码

FindUserServlet(数据回显)

package com.itevent.web.servlet;

import com.itevent.domain.Users;
import com.itevent.service.UserService;
import com.itevent.service.impl.UserServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/findUserServlet")
public class FindUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //1.设置编码
        request.setCharacterEncoding("utf-8");

        //2.获取id
        String id = request.getParameter("id");

        //3.调用service中的findUser方法
        UserService service = new UserServiceImpl();
        Users user = service.finUser(id);

        //4.将数据保存到request域中
        request.setAttribute("user",user);

        //5.转发到update页面中
        request.getRequestDispatcher("/update.jsp").forward(request,response);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

UpdateUserServlet

package com.itevent.web.servlet;

import com.itevent.domain.Users;
import com.itevent.service.UserService;
import com.itevent.service.impl.UserServiceImpl;
import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

@WebServlet("/updateUserServlet")
public class UpdateUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //1.设置编码
        request.setCharacterEncoding("utf-8");

        //2.获取数据
        Map<String, String[]> map = request.getParameterMap();

        //3.封装数据
        Users user = new Users();
        try {
            BeanUtils.populate(user,map);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }

        //4.调用service中的updateUser方法
        UserService service = new UserServiceImpl();
        service.updateUser(user);

        //5.重定向到findAllServlet
        response.sendRedirect(request.getContextPath()+"/findAllServlet");


    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

Service

UserService

/**
     * 修改用户信息
     * @param user
     */
    void updateUser(Users user);

    /**
     * 通过id寻找用户
     * @param id
     * @return
     */
    Users finUser(String id);

UserServiceImpl

 @Override
    public void updateUser(Users user) {
        dao.updateUser(user);
    }

    @Override
    public Users finUser(String id) {
        return dao.findUser(Integer.parseInt(id));
    }

Dao

UserDao

void updateUser(Users user);

Users findUser(int id);

UserDaoImpl

    @Override
    public void updateUser(Users user) {

        //1.定义一个更新的sql
        String sql = "update user set user.name = ? ,user.gender = ? ,user.age = ?, user.address = ? ,user.cls = ? ,user.tel = ? where id = ?";
        template.update(sql, user.getName(), user.getGender(), user.getAge(), user.getAddress(), user.getCls(), user.getTel(), user.getId());

    }

    @Override
    public Users findUser(int id) {

        //1.定义一个查找的sql
        String sql = "select * from user where id = ?";
        Users users = template.queryForObject(sql, new BeanPropertyRowMapper<Users>(Users.class), id);
        return users;
    }

项目结构

在这里插入图片描述

为什么要使用多态?

使用多态可以提高可扩充性和可维护性。

项目如何运行?

创建一个Javaee项目,将源码导入即可
在这里插入图片描述

每个层次怎么解释?

1.web层:用来存放jsp页面和用来接收页面数据并进行逻辑处理 的servlet。
2.service层:组合Dao层中的简单方法,形成复杂的功能。
3.dao层:定义了对于数据库最基本的CRUD操作。
4.util:存放一些自己定义的工具类。
5.domain:用来存放实体类

结语

到此,一个简单的学生信息管理系统我们已经完成了,其它章节的链接都放在文末,也将源码上传到了GitHub,这是我学web以来,第一次做的功能比较全的项目,用来检测一下自己的学习成果。自己敲代码和看着视频敲代码真的是两种感觉,跟着视频敲代码,你会感觉自己都会了,讲的挺简单的。但是自己敲的时候总是会遗漏很多东西,对很多自以为熟悉的方法感到很陌生,只能根据IDEA的提示盲猜,自己敲代码的时候你需要自己构思每个功能该如何实现,这也是很大一个难点,锻炼自己的思维能力这很重要。
通过自己写项目,也感觉到基础知识是非常重要的,比如Java中逻辑语句的使用,MySQL中各种语句的熟练使用,jstl和el如何使用…这些东西如果不是很熟练,那就需要花费时间去百度,浪费了时间,但这也是学习成长的一个过程,面向百度编程是有一定道理的,我通过百度能掌握的东西那就是我的东西。
如果你发现我的代码有问题或者有可以改进的地方,在评论区指出来,共同进步呀!

其它章节

------------------------>登录模块< ------------------------

------------------------>查询模块< ------------------------

------------------------> 增添模块< ------------------------

------------------------>删除模块< ------------------------

GitHub–>学生信息管理系统

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值