基于SSH框架的BBS管理系统 课程论文(2)

2020-02-22 13:58

建立了一个模块表module,表中主要包括想设置的模块数据。module数据表如下所示:

表3-3 module表

列名 id name 类型 int varchar 说明 id 名称 表3-4 topic表

备注 主键 建立了一个类目表topic,表中主要包括模块下的话题类目数据和对应的模版id。topic数据表如下所示:

列名 id name module_id 类型 int varchar int 说明 id 名称 板块id 备注 主键 外键 建立了一个帖子相关表post,表中主要包括帖子的名称、内容、查看数量、回复数量、发布时间、用户的id和类目id。post数据表如下所示:

表3-5 post表

列名 id title content view_count reply_count systime user_id topic_id 类型 int varchar varchar int int datetime int int 说明 id 名称 内容 查看数量 回复数量 发布时间 用户id 类目id 备注 主键 外键 外键 建立了一个回复表reply,表中主要包括评论内容、评论时间、帖子id和用户id。reply数据表如下所示:

表3-6 reply表

列名 id content systime post_id user_id 类型 int varchar datetime int int 说明 id 评论内容 评论时间 帖子id 用户id 备注 主键 外键 外键

4系统实现

该管理系统,采用的是SSH框架来进行开发的,所以我们后台代码主要包括action,dao,entity,service还有util五个包和WebContent文件夹下的css样式表、创建所需的界面文件(jsp)。本项目包和ssh框架的目录截图如下:

19 页 第4 页 共

图4-1 项目后台代码包截图

action是表示层,负责调用业务逻辑的服务组件。在本项目中主要包括AdminAction , BaseAction , IndexAction , ModuleAction , PostAction , TopicAction , UserAction。因其代码大体一致,下面仅举一例说明,其他在此省略。

AdminAction.java主要代码如下:

public class AdminAction extends BaseAction{

private Admin admin; private String msg; @Autowired

private AdminService adminService; /*登录*/ @Action(\public String login(){

Admin loginAdmin = adminService.get(admin.getUsername(), admin.getPassword()); if (loginAdmin==null) { }

// 将登录用户信息存入session

19 页 第5 页 共

msg = \用户名或密码错误\return \

}

getSession().setAttribute(\return \重定向到管理首页

/*后台首页 */ @Action(\public String index(){ }

/*管理员编辑*/ @Action(\public String adminEdit(){ }

/*管理员更新*/ @Action(\public String adminUpdate(){ }

if (admin.getPassword()==null || admin.getPassword().trim().isEmpty()) { }

if (!adminService.check(admin.getId(), admin.getPassword())) { }

if(adminService.update(admin)){ } return null;

getSession().setAttribute(\刷新session msg = \修改成功\return \msg = \原密码错误\return \msg = \原密码不能为空\return \return \

msg = \恭喜你! 登录成功了\return \

dao即使data access object,方便子类获取session对象, 及其他公用属性及方法。如果遇到异常Hibernate Exception ( \是因为调用请求没有在spring事务中,此类中通过getCurrent Session得到的session对象被绑定在spring线程SpringSessionContext中而不是Thread Local Session Context。因此必须要在spring事务中才能使用session对象, 此session在事务开启时自动创建, 事务结束后自动销毁。如果想使部分方法不开启事务, 除了使用openSession手动创建和销毁, 当前还没发现好的解决方案。本项目中的dao层主要与action相对应。下面举例说明。

19 页 第6 页 共

AdminDao.java: package com.dao;

import org.springframework.stereotype.Repository; import com.entity.Admin;

@Repository // 注册dao层bean等同于@Component

public class AdminDao extends BaseDao{ /*通过用户名查询 无记录返回null*/ public Admin selectByUsername(String username){ return getSession().createQuery(\ .setParameter(\ } }

entity是hibernate对于表抽象出来的类,它和它所对应的表的是完全对应的,即只含有Admin, Module , Post , Topic, Users,在DAO类中数据库操作方法中拼接的HQL语句中的就是Entity的名称。

Admin.java: package com.entity;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Transient; @Entity // 注解为hibernate实体

@Table(name=\注解对应的表名 public class Admin {

@Id // 注解主键

@GeneratedValue // id生成策略 默认auto 相当于hibernate的native - 自增字段 private int id;

private String username; private String password; @Transient

private String passwordNew; public int getId() { }

public void setId(int id) { }

public String getUsername() { }

19 页 第7 页 共

return id;

this.id = id;

return username;

}

public void setUsername(String username) { }

public String getPassword() { }

public void setPassword(String password) { }

public String getPasswordNew() { }

public void setPasswordNew(String passwordNew) { }

this.passwordNew = passwordNew; return passwordNew; this.password = password; return password; this.username = username;

service是业务逻辑层的,实际上是调用了DAO的种种方法,DAO类里面就是对于数据库的操作了。 AdminService.java主要代码如下: @Service

// 注解为service层spring管理bean

@Transactional // 注解此类所有方法加入spring事务, 具体设置默认 public class AdminService {

@Autowired

//spring注入类对象

private AdminDao adminDao; /*通过id获取*/ public Admin get(int id){ }

/*通过用户名和密码获取*/

public Admin get(String username, String password){ }

/*检测密码*/

public boolean check(int id, String password){

19 页 第8 页 共

return adminDao.select(Admin.class, id);

Admin admin = adminDao.selectByUsername(username);

if (admin!=null && admin.getPassword().equals(SafeUtil.encode(password))) { } return null;

return admin;


基于SSH框架的BBS管理系统 课程论文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:民诉课件

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: