大型项目综合实训

目录

所用资源网站 

具体实现json

Ajex是什么?(70条消息) 看这一篇就够了!-Ajax详解_抱着猫睡觉的鱼_的博客-CSDN博客

合并表 

拦截器

权限管理

明文加密

加盐

添加学生时增加班级选项

联表查询

 

所用资源网站 

Day31--SpringBoot (yinxiang.com)

webapp文件夹加小圆圈

https://app.yinxiang.com/fx/9cba161f-7614-42be-93cd-651374fa9658

Gitee:Gitee - 基于 Git 的代码托管和研发协作平台

layui:表单 - 在线演示 - Layui (itze.cn)

统计图表: 

Examples - Apache ECharts

进入lombook依赖可以减少实体类中getter和setter函数的书写

mapper中直接与数据库交互

如果需要跳出一个新窗口或者新页面,那么就需要在WEB-INF中新建jsp文件,对应新界面/窗口,然后在controller层中添加一个方法,使用requestMapping注解,转发到对应的页面

如果要返回的是页面,那么controller层中不需要requestBody注解


具体实现
json

使用ajex,一般的接口返回数据都会封装成JSON格式

JSON常被拿来与XML做比较,因为JSON 的诞生本来就多多少少要有取代XNL的意思。相比 XML,JSON的优势如下:

  • 没有结束标签,长度更短,读写更快
  • 能够直接被JavaScript解释器解析
  • 可以使用数组

Ajex是什么?
(70条消息) 看这一篇就够了!-Ajax详解_抱着猫睡觉的鱼_的博客-CSDN博客

在前后端需要传递数据的时候使用

合并表 

select *
from student as s inner join banji as b
on s.banji_id=b.id;

拦截器

新建两个包:config包下的WebConfigurer.java和Interceptor包下的LoginInterceptor.java

权限管理

在界面显示中使用if判断

如在index.jsp中,不希望让非管理员看到用户管理栏,所以只有user.typ==0时才会显示该栏,否则不显示

<c:if test="${user.type==0}">
                            <dd>
                                <a href="javascript:;"
                                   data-url="/user/getUserListPage"
                                   class="site-demo-active">用户</a>
                            </dd>

                        </c:if>

明文加密

在项目中导入MD5util.java工具类

在UserServiceImpl中

public void add(User user) {
//        设置密码的明文加密
        user.setPassword(MD5Util.MD5Encode(user.getPassword()));
        userMapper.add(user);
    }

新添加用户时,输入的密码会自动加密保存在数据库中

如何把登录时输入的密码与数据库中加密过的密码进行对比?

设置登录时的密码也进行加密处理

 在UserServiceImpl中

@Override
    public User login(String name, String password) {
        return userMapper.login(name,MD5Util.MD5Encode(password));
    }

在设置明文登录之后,用户的密码变成了加密过的无序字符串状态 

若想在后台数据库中自己添加用户,则需要把想要输入的密码先放在MD5网站中进行加密,再保存在数据库中

加盐

public void add(User user) {
//        添加用户时,设置密码的明文加密
//        加“盐”,在加密的字符串后再加一个字符串,可以让加密性更高
        user.setPassword(MD5Util.MD5Encode(user.getPassword()+MD5Util.salt));
        userMapper.add(user);
    }

盐值放在MD5Util工具类中

public class MD5Util {

//    盐值,加强密码的加密性
    public static String salt = "sdut*55//66";
……
}

添加学生时增加班级选项

1. studentController中的getStudentAddPage方法,需要获取一个所有班级名称的list,所以使用model开辟内存来保存从后台获取的所有班级名称 

@RequestMapping("/getStudentAddPage")
    public String getStudentAddPage(Model model){
        List<Banji> banjiList=banjiService.selectAll();
        model.addAttribute("banjiList",banjiList);
        return "/WEB-INF/student_add.jsp";
    }

 2. Student实体类中需要对应添加班级id的属性:banjiId

3. 在student.add中添加一个下拉框的div标签,刚刚存在model内存里的班级名称可以使用for循环展示出来

value代表班级id的值

<%-- 添加学生时下拉框选择学生班级 --%>
        <div class="layui-form-item">
            <label class="layui-form-label">班级</label>
            <div class="layui-input-block">
        <%--    banjiId:1 --%>
                <select name="banjiId">
                    <option>--请选择---</option>
<%--                    使用for循环把所有的班级名称都显示出来--%>
                    <c:forEach items="${banjiList}" var="banji">
                        <option value=${banji.id}>${banji.name}</option>
                    </c:forEach>
                </select>
            </div>
        </div>

4. 添加学生时需要把学生的班级id也添加进去,因此需要改变studentMapper.xml中的add方法,数据表中加一个banji_id,value中加一个banjiId的属性

<!--void add(Student student);-->
    <insert id="add" parameterType="Student">
        insert into student(name,age,gender,banji_id) values(#{name},#{age},#{gender},#{banjiId})
    </insert>

联表查询

1.  想要完成学生列表展示页中把学生信息和所属班级名称一起展示出来。由于学生表中保存的是班级id,班级id对应的班级名称需要到班级表里去找,所以查询sql语句需要用到 inner join 关键词。 

<select id="selectByPage" resultType="StudentVo">
-- 联表查询
        select s.id,s.name,s.age,s.gender,s.banji_id,b.name as banjiName
        from student as s inner join banji as b
        <where>
            <if test="student.id!=null">
                and id=#{student.id}
            </if>

     <!--like模糊查找 concat:-->
            <if test="student.name!=null and student.name!=''">
                and name like concat('%',#{student.name},'%')
            </if>
        </where>

        limit #{offset},#{limit}
    </select>

2. 对应需要新建一个实体类名叫StudentVo,用来保存学生的id,姓名,性别,年龄和班级姓名

package com.sdut.springboot.entity;

import lombok.Data;

@Data
public class StudentVo {
    private Integer age;
    private String gender;
    private String name;
    private Integer id;
    private String banjiName;
}

3. 把controller层、service层、mapper层中对应的分页方法的返回值从Student类改成StudentVo类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值