实习日志5-新闻系统

系统介绍及项目结构

在这里插入图片描述

实体类设计

本次项目po包中主要有五个实体类:
1、 在主建Id上需要加注释:@Id和@GeneratedValue(strategy = GenerationType.AUTO)才会自动增长
2、 在需要重新设置表字段名的属性上加注释@Column(name = “字段名”)即可。
3、 在类名上添加注释:@Entity和@Table(name = “t_user”),t_user是表名
举例:Tag.java

package com.zhongruan.entity;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;


@Entity
@Table(name = "t_tag")
public class Tag {

    @Id
    @GeneratedValue
    private Long id;//标签id
    private String name;//标签名

    @ManyToMany(mappedBy = "tags")
    private List<News> newsList = new ArrayList<>();

    public Tag() {
    }

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<News> getNewsList() {
        return newsList;
    }

    public void setNewsList(List<News> newsList) {
        this.newsList = newsList;
    }

    @Override
    public String toString() {
        return "Tag{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

通过定义类里的元素和构造函数进行实体类的设计。所有controller文件写好后,在application.yml文件中添加配置:

 //自动创建数据库表
  jpa:
      hibernate:
        ddl-auto: update
      show-sql: true//在控制台显示sql语句

运行项目,可以发现数据库中已经自动生成表。
在这里插入图片描述

过滤器与拦截器

一般的项目系统中都会有过滤器和拦截器。

过滤器

过滤器是为了区分用户和非用户,避免直接跳过登录步骤打开页面。流程图:
在这里插入图片描述
首先在项目中新建一个filter
在这里插入图片描述

再对web.xml进行配置

<filter>
    <filter-name>loginfilter</filter-name>
    <filter-class>com.zhongruan.filter.LoginFilter</filter-class>
</filter>
<!-- 过滤器的映射 -->
<filter-mapping>
    <filter-name>loginfilter</filter-name>
    <url-pattern>*.do</url-pattern>
</filter-mapping>

之后就可以在具体类中进行过滤器的实现。

拦截器

这个方面讲的主要是一个后端的校验。在新增功能时,需要对新增的信息进行判断,如果与数据库中的数据有重复,则是不能新增成功的。
代码:

    public String update(@RequestParam long id, Type type, BindingResult result, RedirectAttributes attributes) {
        // 修改后名称是否存在
        Type t1 = typeService.getTypeByName(type.getName());
        if (t1 != null) {
            result.rejectValue("name", "nameError", "不能添加重复的类");
        }
        if (result.hasErrors()) {
            return "admin/types-input";
        }
        Type t2 = typeService.updateType(id, type);
        if (t2 == null) {
            attributes.addFlashAttribute("message", "更新失败");
        } else {
            attributes.addFlashAttribute("message", "更新成功");
        }
        return "redirect:/admin/types";
    }

拦截结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值