0 概述
做一个jiavaweb 的练手项目,做完可以把javaweb的知识点在项目中应用,还能锻炼功能实现的逻辑思路,下面看一下效果图
项目分上下两集,上集主要是完成学生管理这边的功能,后面的下集主要完成定义权限的功能
1 准备工作
材料准备
链接:https://pan.baidu.com/s/1il4X8OlVtkB1mzaAH4Fz_Q
提取码:kpt7
这边呢,我把完成项目所有需要(前端)+(后端)代码以及数据库都放在网盘里面,放在github里面可能网络不好什么的比较麻烦
下图 前端里面有 html 和 jsp ,我们javaweb里面用jsp
lib是一些要用到的依赖包,mysql依赖要根据自己的版本来,
连接池用德鲁伊,数据库的SQL文件都备好了
技能栈和工具栈
1.数据库
2.JDBC
3.html
4.servlet
5.JSP+EL+JSTL
6.AJAX
7.多表操作
需要的工具
1.idea
2.Navicat
3.Tomcat
4.mysql
数据库数据准备
你可以直接运行我给的SQL文件在Navicat里面运行,然后添加自己额外想添加的数据
这边分析一下,登录身份一张表,学生两张表
idea创建项目后类准备
src 建立5个包
web 把上面材料准备里面的jsp 文件夹里面的东西放在web里面
把lib里面的放在WEB_INF 里面比较好
这边得根据数据流来编写类,一层一层下去
类里面的内容具体看源代码备份hjg01,注意里面 int --> Ingiter 会比较好
lib 包依赖导入
Tomcat 设置
2 登录退出功能(代码hjg01)
【登录】
先修改login.jsp
添加 <form>
和“/login”
修改里面的两个input 用于接收前端页面输入的 用户名和密码
接着添加 两个web层类 LoginSerlet 登入Logout退出
LoginSerlet 通过@WebServlet(urlPatterns = "/login")
链接 login.jsp
LoginSerlet 重写 service ,承接3个任务
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1. 接收参数
//2. 调取servlet 业务层
//3. 跳转页面
}
接收前端两个参数
//1. 接收参数
String username = req.getParameter("username");
String password = req.getParameter("password");
业务层中转
//2. 调取servlet 业务层
UsersService usersService = new UsersServiceImpl();
Users users = usersService.login(username, password);
这边就需要 一层一层下去编写 web service dao
先是抽象类 添加 login 方法
实现类实现方法-- 尴尬的是service业务层要从dao 层拿数据,
所以还得添加dao 抽象类,dao 实现类实现方法,从而编写德鲁伊链接数据库
这边注意DBUtils 的resultSet 用protected修饰
回来web层编写跳转页面
数据库查无此人则以弹窗提醒
用户验证成功的话,设置一个u1
进行全局访问
结果给前端
启动Tomcat运行项目
输入数据库没有用户测试,弹窗提醒
登录成功进入下一次页面,保存数据并前端展示
在这里如果我们点击退出按钮是没有反应会报错的,下来我们做退出功能
【退出】
和登录类似,我们先修改前端
编写 web层的logout类
这里我们采用的前端是有框架的,箭头所指的top
直接退出到最外层
3 学员列表展示(代码hjg02)
<1> 修改 list.jsp
<2> 添加web类 GetStudentServlet
<3> service层 和 dao层 添加对应的提取学生信息的方法
<4> 编写servlet层代码
<5>修改前端展示代码用于展示
注意::性别 男女得从 0 1 转化为 字符
<6> 运行查看结果
4 模糊查询实现(代码hjg03)
<1>修改list.jsp 页面,接收数据,展示已经保存的数据
<2>方法添加参数
<3>对应的修改 service层 和 dao层 添加对应的提取学生信息的方法
<4>运行出结果(都是女)
思考
模糊查除了上面的模糊还可以设置成 3个条件,2 个条件,1 个条件,主要也是调整SQL语句,这边可以自己扩展
5 设置分页功能(代码hjg04)
<1>显示最后编写好的的list.jsp,里面添加的东西后面会一个一个用到
<2> 添加参数
<3>对应的修改 service层 和 dao层 添加对应的提取学生信息的方法
<4> 存储分页数据,添加上一页下一页
这边注意解决页数越界的限定条件方法,下一步需要用到总页数,所以我们还得编写取出总页数的代码
<5> 获得总页数
<6> 对应的修改 service层 和 dao层 添加对应的提取学生信息的方法
不要忘记存储值给前端
也不要忘记在分页按钮里面添加模糊查参数
<7>运行结果
6 新增学生(代码hjg05)
<1>修改 list 添加类和方法
<2>对应的修改 service层 和 dao层 添加对应的查询年级列表的方法
<3>修改add.jsp 展示数据
这时候如果在数据库里面更改年级数据,浏览器里面刷新后可以马上看到结果
<4>修改add.jsp
一个个修改对应的属性命,这里只是一部分
<5>添加对应 add 的 servlet 类
<6>对应的 service层 和 dao层 添加对应的insertStu调取的方法
<7>运行结果
7 主键查询(代码hjg06)
在要进行修改更新和删除数据之前我们的先完成从数据库那特定某个人的数据的主键查询功能
<1> 修改 list
<2>添加 FindByIdServlet 类
<3> 对应的 service层 和 dao层 添加对应的《主键查询》的方法
<4> 编写 servlet 协调 edit.jsp
edit.jsp 里面先调节每个属性的储存值,接收来自后端的数据并展示,这边只是部分
下来的注意班级的获取
<5>效果展示
8 修改更新数据代码(hjg07)
<1>修改前端edit
<2> 创建类 编写代码
<3> 对应的 service层 和 dao层 添加对应的《修改学生》的方法
<4>运行看结果(点击修改)
9 删除学生数据(假删除)(hjg08)
<1>枚举值保存学生状态(在读,休学。。。)
前面在添加操作这边不知道你有没有发现这个枚举操作,这个在删除中也要用到
删除
<2>修改list
<3> 对应的 service层 和 dao层 添加对应的《删除学生》的方法
<4>查询的时候转态state进行限定
<5> 运行查看
10 使用filter处理乱码 (hjg09)
在新增 和 修改 里面 容易出现乱码,我们每次都得添加 req.setCharacterEncoding("utf-8");
有点儿麻烦,我们可以使用过滤器,新建包 新建类 修改配置文件
11 多请求走同一个servlet
后端
前端