首页 > 编程语言 >一个练习项目,好玩的bbs-java

一个练习项目,好玩的bbs-java

时间:2024-06-21 15:12:01浏览次数:11  
标签:java String get 好玩 sessionId params res put bbs

java这个我是用springboot做的

目录结构

 

 

 

application.yml

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/my_bbs?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8&allowPublicKeyRetrieval=true
    username: root
    password: "123456"

server:
  port: 1087

主要代码IndexController.java

package com.example.study_bbs_java.controller;

import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import com.example.study_bbs_java.entity.Countinfo;
import com.example.study_bbs_java.entity.Userinfo;
import com.example.study_bbs_java.entity.Postinfo;
import com.example.study_bbs_java.entity.Replyinfo;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.jdbc.core.PreparedStatementCreator;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.SQLException;

import java.util.List;
import java.util.Map;
import java.util.HashMap;
import javax.servlet.http.HttpServletResponse;

@RestController
@ResponseBody
public class IndexController {
    @Autowired
    JdbcTemplate jdbcTemplate;

    int pagesize = 20;
    String secretKey = "saacac3423@21212";

    @RequestMapping(value ="/")
    public String index(HttpServletResponse response){
        response.setHeader("Server", "java-springboot");
        return "此站接口使用java实现,<a href='api.html' target='_blank'>接口列表</a>";
    }

    @RequestMapping(value = "/user/register")
    public HashMap register(@RequestParam Map<String,Object> params, HttpServletResponse response){
        response.setHeader("Server", "java-springboot");
        String username = params.get("username") != null ? params.get("username").toString() : "";
        String password = params.get("password") != null ? params.get("password").toString() : "";
        String nickname = params.get("nickname") != null ? params.get("nickname").toString() : "";
        String passwordMd5 = getMD5(password);

        Userinfo userinfo1 = new Userinfo();
        try {
            String sql1 = "select id,username,nickname,addTime,sessionId from user where username='" + username + "'";
            userinfo1 = jdbcTemplate.queryForObject(sql1, new BeanPropertyRowMapper<>(Userinfo.class));

        } catch (Exception e) {
            //
        }

        HashMap res = new HashMap();
        if(userinfo1.getId() > 0){
            res.put("code", 0);
            res.put("msg", "");
            res.put("data", "用户名已经存在");
        }
        else{
            String sql2 = "insert into user(username, password, nickname) value('"+username+"', '"+passwordMd5+"', '"+nickname+"')";
            jdbcTemplate.execute(sql2);

            res.put("code", 0);
            res.put("msg", "");
            res.put("data", userinfo1);
        }

        return res;
    }

    @RequestMapping(value = "/user/login")
    public HashMap login(@RequestParam Map<String,Object> params, HttpServletResponse response){
        response.setHeader("Server", "java-springboot");
        String username = params.get("username") != null ? params.get("username").toString() : "";
        String password = params.get("password") != null ? params.get("password").toString() : "";
        String passwordMd5 = getMD5(password);

        String sql1 = "select id,username,nickname,addTime,sessionId from user where username='"+username+"' and password='"+passwordMd5+"'";
        Userinfo userinfo1 = jdbcTemplate.queryForObject(sql1,new BeanPropertyRowMapper<>(Userinfo.class));

        HashMap res = new HashMap();
        if(userinfo1.getId() > 0) {
            String sessionId = getMD5(secretKey + userinfo1.getId() + userinfo1.getAddTime());
            String sql2 = "update user set sessionId='" + sessionId + "' where id=" + userinfo1.getId();
            jdbcTemplate.execute(sql2);
            userinfo1.setSessionId(sessionId);

            res.put("code", 0);
            res.put("msg", "");
            res.put("data", userinfo1);
        }
        else{
            res.put("code", 0);
            res.put("msg", "");
            res.put("data", "用户名或者密码错误");
        }

        return res;
    }

    @RequestMapping(value = "/user/logout")
    public HashMap logout(@RequestParam Map<String,Object> params, HttpServletResponse response){
        response.setHeader("Server", "java-springboot");
        String sessionId = params.get("sessionId") != null ? params.get("sessionId").toString() : "";
        Userinfo userinfo1 = getloginuserinfo(sessionId);

        String sql1 = "update user set sessionId='' where sessionId='"+sessionId+"'";
        jdbcTemplate.execute(sql1);
        userinfo1.setSessionId("");

        HashMap res = new HashMap();
        res.put("code", 0);
        res.put("msg", "");
        res.put("data", userinfo1);

        return res;
    }

    @RequestMapping(value = "/user/getuserinfo")
    public HashMap getuserinfo(@RequestParam Map<String,Object> params, HttpServletResponse response){
        response.setHeader("Server", "java-springboot");
        String sessionId = params.get("sessionId") != null ? params.get("sessionId").toString() : "";

        String sql1 = "select id,username,nickname,addTime,sessionId from user where sessionId='"+sessionId+"'";
        Userinfo userinfo1 = jdbcTemplate.queryForObject(sql1,new BeanPropertyRowMapper<>(Userinfo.class));

        HashMap res = new HashMap();
        res.put("code", 0);
        res.put("msg", "");
        res.put("data", userinfo1);

        return res;
    }

    @RequestMapping(value = "/post/list")
    public HashMap postlist(@RequestParam Map<String,Object> params, HttpServletResponse response){
        response.setHeader("Server", "java-springboot");
        String keyword = params.get("keyword") != null ? params.get("keyword").toString() : "";
        Integer page = params.get("page") != null ? Integer.parseInt(params.get("page").toString()) : 1;
        Integer start = (page - 1) * pagesize;

        String addsql = " isDel=0 ";
        if(!keyword.equals("")){
            addsql = addsql + " and title='%"+keyword+"%'";
        }
        String sql1 = "select count(1) as count from content where "+addsql;
        Countinfo postcount = jdbcTemplate.queryForObject(sql1,new BeanPropertyRowMapper<>(Countinfo.class));

        String sql2 = "select id,title,userId,userNickename,replyNum,updateTime from content where "+addsql+" order by updateTime desc limit "+start+","+pagesize;
        List<Map<String, Object>> postlist = jdbcTemplate.queryForList(sql2);
        if(postlist.size() > 0){
            for(int i = 0; i < postlist.size(); i++){
                Map<String, Object> item = postlist.get(i);
                String updateTime = DateTimeFormatter((Date)item.get("updateTime"));
                item.put("updateTime", updateTime);
                postlist.set(i, item);
            }
        }

        long totalpage = Math.round(Math.ceil(postcount.getCount() / (double)pagesize));
        HashMap res1 = new HashMap();
        res1.put("totalpage", totalpage);
        res1.put("data", postlist);

        HashMap res = new HashMap();
        res.put("code", 0);
        res.put("msg", "");
        res.put("data", res1);

        return res;
    }

    @RequestMapping(value = "/post/detail")
    public HashMap postdetail(@RequestParam Map<String,Object> params, HttpServletResponse response){
        response.setHeader("Server", "java-springboot");
        Integer id = params.get("id") != null ? Integer.parseInt(params.get("id").toString()) : 0;

        String sql1 = "select id,title,content,userId,userNickename,replyNum,updateTime from content where isDel=0 and id="+id;
        Postinfo postinfo1 = jdbcTemplate.queryForObject(sql1,new BeanPropertyRowMapper<>(Postinfo.class));

        HashMap res = new HashMap();
        res.put("code", 0);
        res.put("msg", "");
        res.put("data", postinfo1);

        return res;
    }

    @RequestMapping(value = "/post/add")
    public HashMap postadd(@RequestParam Map<String,Object> params, HttpServletResponse response){
        response.setHeader("Server", "java-springboot");
        final String title = params.get("title") != null ? params.get("title").toString() : "";
        final String content = params.get("content") != null ? params.get("content").toString() : "";
        String sessionId = params.get("sessionId") != null ? params.get("sessionId").toString() : "";

        final Userinfo userinfo1 = getloginuserinfo(sessionId);
        if(userinfo1.getId() <= 0){
            HashMap res = new HashMap();
            res.put("code", 0);
            res.put("msg", "");
            res.put("data", "请先登录");
            return res;
        }

        final String sql1 = "insert into content(title, content, userId, userNickename) value(?, ?, ?, ?)";
        KeyHolder keyHolder = new GeneratedKeyHolder();

        int count = jdbcTemplate.update(new PreparedStatementCreator() {
        @Override
        public PreparedStatement createPreparedStatement(Connection conn)
                throws SQLException {
                    PreparedStatement pstmt=conn.prepareStatement(sql1, Statement.RETURN_GENERATED_KEYS);
                    pstmt.setString(1, title);
                    pstmt.setString(2, content);
                    pstmt.setInt(3, userinfo1.getId());
                    pstmt.setString(4, userinfo1.getNickname());
                    return pstmt;
                }
        },keyHolder);

        HashMap res = new HashMap();
        res.put("code", 0);
        res.put("msg", "");
        res.put("data", keyHolder.getKey().longValue());

        return res;
    }

    @RequestMapping(value = "/post/edit")
    public HashMap postedit(@RequestParam Map<String,Object> params, HttpServletResponse response){
        response.setHeader("Server", "java-springboot");
        Integer id = params.get("id") != null ? Integer.parseInt(params.get("id").toString()) : 0;
        String title = params.get("title") != null ? params.get("title").toString() : "";
        String content = params.get("content") != null ? params.get("content").toString() : "";
        String sessionId = params.get("sessionId") != null ? params.get("sessionId").toString() : "";

        Userinfo userinfo1 = getloginuserinfo(sessionId);
        if(userinfo1.getId() <= 0){
            HashMap res = new HashMap();
            res.put("code", 0);
            res.put("msg", "");
            res.put("data", "请先登录");
            return res;
        }

        String sql1 = "update content set title='"+title+"',content='"+content+"',userId="+userinfo1.getId()+",userNickename='"+userinfo1.getNickname()+"' where id="+id+" and userId="+userinfo1.getId();
        jdbcTemplate.execute(sql1);

        HashMap res = new HashMap();
        res.put("code", 0);
        res.put("msg", "");
        res.put("data", "");

        return res;
    }

    @RequestMapping(value = "/post/delete")
    public HashMap postdelete(@RequestParam Map<String,Object> params, HttpServletResponse response){
        response.setHeader("Server", "java-springboot");
        Integer id = params.get("id") != null ? Integer.parseInt(params.get("id").toString()) : 0;
        String sessionId = params.get("sessionId") != null ? params.get("sessionId").toString() : "";

        Userinfo userinfo1 = getloginuserinfo(sessionId);
        if(userinfo1.getId() <= 0){
            HashMap res = new HashMap();
            res.put("code", 0);
            res.put("msg", "");
            res.put("data", "请先登录");
            return res;
        }

        String sql1 = "update content set isDel=1 where id="+id+" and userId="+userinfo1.getId();
        jdbcTemplate.execute(sql1);

        HashMap res = new HashMap();
        res.put("code", 0);
        res.put("msg", "");
        res.put("data", "");

        return res;
    }

    @RequestMapping(value = "/reply/list")
    public HashMap replylist(@RequestParam Map<String,Object> params, HttpServletResponse response){
        response.setHeader("Server", "java-springboot");
        Integer contentId = params.get("contentId") != null ? Integer.parseInt(params.get("contentId").toString()) : 0;
        Integer page = params.get("page") != null ? Integer.parseInt(params.get("page").toString()) : 1;
        Integer start = (page - 1) * pagesize;

        String addsql = " isDel=0 and contentId="+contentId+" ";
        String sql1 = "select count(1) as count from reply where "+addsql;
        Countinfo replycount = jdbcTemplate.queryForObject(sql1,new BeanPropertyRowMapper<>(Countinfo.class));

        String sql2 = "select id,content,replyUserId,replyUserNickename,addTime from reply where "+addsql+" order by id asc limit "+start+","+pagesize;
        List<Map<String, Object>> replylist = jdbcTemplate.queryForList(sql2);
        if(replylist.size() > 0){
            for(int i = 0; i < replylist.size(); i++){
                Map<String, Object> item = replylist.get(i);
                String addTime = DateTimeFormatter((Date)item.get("addTime"));
                item.put("addTime", addTime);
                replylist.set(i, item);
            }
        }

        long totalpage = Math.round(Math.ceil(replycount.getCount() / (double)pagesize));
        HashMap res1 = new HashMap();
        res1.put("totalpage", totalpage);
        res1.put("data", replylist);

        HashMap res = new HashMap();
        res.put("code", 0);
        res.put("msg", "");
        res.put("data", res1);

        return res;
    }

    @RequestMapping(value = "/reply/detail")
    public HashMap replydetail(@RequestParam Map<String,Object> params, HttpServletResponse response){
        response.setHeader("Server", "java-springboot");
        Integer id = params.get("id") != null ? Integer.parseInt(params.get("id").toString()) : 0;

        String sql1 = "select id,content,replyUserId,replyUserNickename,addTime from reply where isDel=0 and id="+id;
        Replyinfo replyinfo1 = jdbcTemplate.queryForObject(sql1,new BeanPropertyRowMapper<>(Replyinfo.class));

        HashMap res = new HashMap();
        res.put("code", 0);
        res.put("msg", "");
        res.put("data", replyinfo1);

        return res;
    }

    @RequestMapping(value = "/reply/add")
    public HashMap replyadd(@RequestParam Map<String,Object> params, HttpServletResponse response){
        response.setHeader("Server", "java-springboot");
        final Integer contentId = params.get("contentId") != null ? Integer.parseInt(params.get("contentId").toString()) : 0;
        final String content = params.get("content") != null ? params.get("content").toString() : "";
        String sessionId = params.get("sessionId") != null ? params.get("sessionId").toString() : "";

        final Userinfo userinfo1 = getloginuserinfo(sessionId);
        if(userinfo1.getId() <= 0){
            HashMap res = new HashMap();
            res.put("code", 0);
            res.put("msg", "");
            res.put("data", "请先登录");
            return res;
        }

        String sql2 = "update content set replyNum=replyNum+1 where id="+contentId;
        jdbcTemplate.execute(sql2);

        final String sql1 = "insert into reply(contentId, content, replyUserId, replyUserNickename) value(?, ?, ?, ?)";
        KeyHolder keyHolder = new GeneratedKeyHolder();

        int count = jdbcTemplate.update(new PreparedStatementCreator() {
            @Override
            public PreparedStatement createPreparedStatement(Connection conn)
                    throws SQLException {
                PreparedStatement pstmt=conn.prepareStatement(sql1, Statement.RETURN_GENERATED_KEYS);
                pstmt.setInt(1, contentId);
                pstmt.setString(2, content);
                pstmt.setInt(3, userinfo1.getId());
                pstmt.setString(4, userinfo1.getNickname());
                return pstmt;
            }
        },keyHolder);

        HashMap res = new HashMap();
        res.put("code", 0);
        res.put("msg", "");
        res.put("data", keyHolder.getKey().longValue());

        return res;
    }

    @RequestMapping(value = "/reply/edit")
    public HashMap replyedit(@RequestParam Map<String,Object> params, HttpServletResponse response){
        response.setHeader("Server", "java-springboot");
        Integer id = params.get("id") != null ? Integer.parseInt(params.get("id").toString()) : 0;
        String content = params.get("content") != null ? params.get("content").toString() : "";
        String sessionId = params.get("sessionId") != null ? params.get("sessionId").toString() : "";

        Userinfo userinfo1 = getloginuserinfo(sessionId);
        if(userinfo1.getId() <= 0){
            HashMap res = new HashMap();
            res.put("code", 0);
            res.put("msg", "");
            res.put("data", "请先登录");
            return res;
        }

        String sql1 = "update reply set content='"+content+"',replyUserId="+userinfo1.getId()+",replyUserNickename='"+userinfo1.getNickname()+"' where id="+id+" and replyUserId="+userinfo1.getId();
        jdbcTemplate.execute(sql1);

        HashMap res = new HashMap();
        res.put("code", 0);
        res.put("msg", "");
        res.put("data", "");

        return res;
    }

    @RequestMapping(value = "/reply/delete")
    public HashMap replydelete(@RequestParam Map<String,Object> params, HttpServletResponse response){
        response.setHeader("Server", "java-springboot");
        Integer id = params.get("id") != null ? Integer.parseInt(params.get("id").toString()) : 0;
        String sessionId = params.get("sessionId") != null ? params.get("sessionId").toString() : "";

        Userinfo userinfo1 = getloginuserinfo(sessionId);
        if(userinfo1.getId() <= 0){
            HashMap res = new HashMap();
            res.put("code", 0);
            res.put("msg", "");
            res.put("data", "请先登录");
            return res;
        }

        Replyinfo replyinfo1 = new Replyinfo();
        try {
            String sql0 = "select id,content,replyUserId,replyUserNickename,addTime,contentId from reply where isDel=0 and id=" + id;
            replyinfo1 = jdbcTemplate.queryForObject(sql0, new BeanPropertyRowMapper<>(Replyinfo.class));
        }
        catch (Exception e){
            //
        }

        if(replyinfo1.getId() > 0) {
            String sql2 = "update content set replyNum=replyNum-1 where id=" + replyinfo1.getContentId();
            jdbcTemplate.execute(sql2);

            String sql1 = "update reply set isDel=1 where id=" + id + " and replyUserId=" + userinfo1.getId();
            jdbcTemplate.execute(sql1);
        }

        HashMap res = new HashMap();
        res.put("code", 0);
        res.put("msg", "");
        res.put("data", "");

        return res;
    }

    private String DateTimeFormatter(Date currentDate){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String formattedDate = sdf.format(currentDate);
        return formattedDate;
    }

    private Userinfo getloginuserinfo(String sessionId){
        Userinfo userinfo1 = new Userinfo();
        try{
            String sql1 = "select id,username,nickname,addTime,sessionId from user where sessionId='"+sessionId+"'";
            userinfo1 = jdbcTemplate.queryForObject(sql1,new BeanPropertyRowMapper<>(Userinfo.class));
        }
        catch(Exception e){
            //
        }

        return userinfo1;
    }

    private String getMD5(String plainText) {
        String md5 = new String();
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(plainText.getBytes());
            byte b[] = md.digest();

            int i;

            StringBuffer buf = new StringBuffer("");
            for (int offset = 0; offset < b.length; offset++) {
                i = b[offset];
                if (i < 0)
                    i += 256;
                if (i < 16)
                    buf.append("0");
                buf.append(Integer.toHexString(i));
            }

            md5 = buf.toString();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return md5;
    }
}

 

启动输出:

 

标签:java,String,get,好玩,sessionId,params,res,put,bbs
From: https://www.cnblogs.com/xuxiaobo/p/18260546

相关文章

  • 一个练习项目,好玩的bbs-c#
    c#代码:usingMySql.Data.MySqlClient;usingSystem.Data;usingNewtonsoft.Json;usingSystem.Security.Cryptography;usingSystem.Text;intpagesize=20;stringsecretKey="saacac3423@21212";varbuilder=WebApplication.CreateSlimBuilder(args......
  • Java语言设计
    第一章:Java环境搭建Java是一种计算机编程语言;除了java编程语言,还有很多的编程语言:c、c++、c#、python等不同编程语言类比于不同国家语言;每个编程语言的语法不同;应用场景不同Java是一个用于后端开发的编程语言 一、Java历史1.1995年,sun公司推出的一款面向对象的编程语......
  • Java语言设计
    第二章:变量、数据类型、运算符、表达式一、变量1.概念:计算机中的一块内存空间,存储数据的基本单元2.变量的组成部分:数据类型、变量名、数据3.语法:(1)先声明,再赋值:  数据类型变量名;//声明  变量名=值; //赋值   (2)声明的同时并赋值:  数......
  • Java语言设计3
    第三章:分支结构一、if分支结构1.基本if结构:(1)语法:  if(判断条件/布尔表达式){    //语句  }(2)执行原理:如果判断条件成立,则执行{}中的语句2.基本if结构2(1)语法:  if(判断条件/布尔表达式){    //语句1  }else{    //......
  • Java语言设计4
    第四章:循环结构一、理解:1.循环:通过某个条件,重复并且有规律的执行一段代码2.循环组成部分:循环变量的初始化、循环条件、循环变量的改变、循环体3.循环分类:while循环、do..while循环、for循环二、while循环1.语法://循环变量的初始化while(循环条件){  //循环......
  • 一个练习项目,好玩的bbs-1
    目录结构 nginx配置:upstreambbs_upstream{server127.0.0.1:1081;#phpserver127.0.0.1:1086;#csharpeserver127.0.0.1:1087;#javaserver127.0.0.1:1084;#ruby-sinatraserver127.0.0.1:1104;#ruby-busker......
  • 【JavaWeb】Servlet快速入门
    具体的实现步骤如下:创建Web项目web-demo,导入Servlet依赖坐标<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><!--此处为什么需要添加该标签?provid......
  • 牛客网最强Java面试八股文(2024年6月持续更新)
    一、Java基础1.JDK和JRE有什么区别?JDK:JavaDevelopmentKit的简称,java开发工具包,提供了java的开发环境和运行环境。JRE:JavaRuntimeEnvironment的简称,java运行环境,为java的运行提供了所需环境。具体来说JDK其实包含了JRE,同时还包含了编译java源码的编译......
  • Java面试题及答案整理( 2024年 6 月最新版,持续更新)
    秋招金九银十快到了,发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全~这套互联网Java工程师面试题包括了:MyBatis、ZK、Dubbo、EL、Redis、MySQL、并发编程、Java面试、Spring、微服务、Linux、Springboot、SpringCloud、MQ、Kafka面试专......
  • Java语言程序设计1
    第一章:Java环境搭建Java是一种计算机编程语言;除了java编程语言,还有很多的编程语言:c、c++、c#、python等不同编程语言类比于不同国家语言;每个编程语言的语法不同;应用场景不同Java是一个用于后端开发的编程语言一、Java历史1.1995年,sun公司推出的一款面向对象的编程语......