SEEK学习论坛-JavaWeb开发实训课题 (数据库MySQL+js+Ajax+Servlet)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关于这次学校实训,我们做了一个类似于CSDN博客的项目,然后我们小组取名叫SEEK,一个学习论坛,前面ppt有介绍,我主要是负责后端数据库的,与MySQL交互,由我的组长写好js代码,然后将前端所获取的数据post给我 然后我写好Servlet端返回他想要的数据,看下面,这7天我还是写了好多好多的java代码,彻彻底底当了一次后端码农!

本篇文章只是介绍这个项目,需要后端源码的课去看这篇文章哦
SEEK学习论坛-JavaWeb开发实训课题 (数据库MySQL+js+Ajax+Servlet)代码分析篇
https://blog.csdn.net/weixin_42429718/article/details/95355366

在这里插入图片描述

这里是我封装好了的关于连接MySQL工具类DButil

可能需要ojdbc工具,这里分享一下
mysql-connector-java-5.1.39-bin.jar
链接:https://pan.baidu.com/s/1XVhHe9dS9O4VpGTI5OjK9w
提取码:vtoo

package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
 * util工具类
 * @author yangchaoyi
 *
 */
public class DButil {
	
	 //声明Connection对象
    Connection con;
    //驱动程序名
    static String driver = "com.mysql.jdbc.Driver";
    //URL指向要访问的数据库名mydata
    String url = "jdbc:mysql://填入IP地址(一般是localhost):3306/填入数据库名";
    //MySQL配置时的用户名
    String user = "xxx";
    //MySQL配置时的密码
    String password = "****";
    //1、执行静态方法,加载数据库驱动
    static {
        try {
            System.out.println("正在加载数据库驱动...");
            Class.forName(driver);
            System.out.println("已加载数据库驱动!!!\n");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    //2、创建数据库连接的方法
    public Connection getConnection() {
        try {
            System.out.println("正在连接到数据库...");
            con = DriverManager.getConnection(url,user,password);
            System.out.println("已连接到MySQL数据库!!!\n");
            return con;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    //3、关闭数据库连接,释放JDBC资源的方法
    public void closeConnection(Connection connection) {
        if (connection != null) {
            try {
                System.out.println("准备释放jdbc资源,断开数据库连接...");
                System.out.println("connection.close();");

                connection.close();//立即释放jdbc资源,而不是等自动释放

                System.out.println("已断开数据库连接并且释放了jdbc资源\n");
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }
}

admin_Dto.java

package com.dto;

public class admin_Dto {
	String id;
	String passw;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPassw() {
		return passw;
	}
	public void setPassw(String passw) {
		this.passw = passw;
	}
	
}

article_colect_Dto.java

package com.dto;

public class article_colect_Dto {
	String userid;
	String arcid;
	String col_time;
	String uncol_time;
	public String getUserid() {
		return userid;
	}
	public void setUserid(String userid) {
		this.userid = userid;
	}
	public String getArcid() {
		return arcid;
	}
	public void setArcid(String arcid) {
		this.arcid = arcid;
	}
	public String getCol_time() {
		return col_time;
	}
	public void setCol_time(String col_time) {
		this.col_time = col_time;
	}
	public String getUncol_time() {
		return uncol_time;
	}
	public void setUncol_time(String uncol_time) {
		this.uncol_time = uncol_time;
	}
	
	
	
}

article_comment_Dto

package com.dto;

public class article_comment_Dto {
	String arcticle_id;
	String user_id;
	String reback_arctcle_id;
	String time;
	String comment_id;
	String content;
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getArcticle_id() {
		return arcticle_id;
	}
	public void setArcticle_id(String arcticle_id) {
		this.arcticle_id = arcticle_id;
	}
	public String getUser_id() {
		return user_id;
	}
	public void setUser_id(String user_id) {
		this.user_id = user_id;
	}
	public String getReback_arctcle_id() {
		return reback_arctcle_id;
	}
	public void setReback_arctcle_id(String reback_arctcle_id) {
		this.reback_arctcle_id = reback_arctcle_id;
	}
	public String getTime() {
		return time;
	}
	public void setTime(String time) {
		this.time = time;
	}
	public String getComment_id() {
		return comment_id;
	}
	public void setComment_id(String comment_id) {
		this.comment_id = comment_id;
	}
}

article_Dto

package com.dto;

public class article_Dto {
	String userid;
	String arcid;
	String arctime;
	String arcatatus;
	String archtml;
	String title;
	String content;
	String imageurl;
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getImageurl() {
		return imageurl;
	}
	public void setImageurl(String imageurl) {
		this.imageurl = imageurl;
	}
	public String getUserid() {
		return userid;
	}
	public void setUserid(String userid) {
		this.userid = userid;
	}
	public String getArcid() {
		return arcid;
	}
	public void setArcid(String arcid) {
		this.arcid = arcid;
	}
	public String getArctime() {
		return arctime;
	}
	public void setArctime(String arctime) {
		this.arctime = arctime;
	}
	public String getArcatatus() {
		return arcatatus;
	}
	public void setArcatatus(String arcatatus) {
		this.arcatatus = arcatatus;
	}
	public String getArchtml() {
		return archtml;
	}
	public void setArchtml(String archtml) {
		this.archtml = archtml;
	}
}

admin_model

package com.model;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.dto.admin_Dto;
import com.dto.article_Dto;
import com.dto.user_Dto;

import util.DButil;
/*
 * 用户表相关方法
 */
public class admin_model {
	// 通过id查询 返回一个admin的Dto
	public admin_Dto QueryById(String id) {
		DButil db = new DButil();
		Connection con = db.getConnection();
		PreparedStatement pstmt;
		ResultSet rs;
		admin_Dto dto = new admin_Dto();
		try {
			String sql = "select * from admin where id=?";
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1,id);
			rs = pstmt.executeQuery();// 执行SQL语句
			if (rs.next()) {
				dto.setId(rs.getString("id"));
				dto.setPassw(rs.getString("passw"));
			}
			// 关闭,释放资源
			rs.close();
			pstmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return dto;
	}

	// 2.从数据库导入数据(全查找admin信息)
	public  List<admin_Dto> find_admin_Dto() {
		DButil db = new DButil();
		Connection con = db.getConnection();
		PreparedStatement pstmt;
		ResultSet rs;
		List<admin_Dto> list = new ArrayList<admin_Dto>();
		try {
			String sql = "select * from admin";
			pstmt = con.prepareStatement(sql);
			rs = pstmt.executeQuery();// 执行SQL语句
			while (rs.next()) {
				admin_Dto dto = new admin_Dto();
				dto.setId(rs.getString("id"));
				dto.setPassw(rs.getString("passw"));
				list.add(dto);
			}
			// 关闭,释放资源
			rs.close();
			pstmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return list;
	}
	//3.插入数据到admin表中  传入admin_Dto参数
	public void add_admin(admin_Dto dto)
    {
	 	DButil db = new DButil();
    	Connection conn = db.getConnection();
		PreparedStatement statement = null;
	try {
    	String sql="insert into admin(id, passw) values(?,?)";
		statement = conn.prepareStatement(sql);
		statement.setString(1, dto.getId());
		statement.setString(2, dto.getPassw());
		int result=statement.executeUpdate();
		if(result>0)
		{
			System.out.println("插入到admin表成功!");
		}
	}
	catch(Exception e1) {
		e1.printStackTrace();
		System.out.println(e1.getMessage());
	}
	finally 
	{
		try {
			statement.close();
			conn.close();
		}
		catch(Exception e2) {
			System.out.println(e2.getMessage());
		}
	}
    
   }
	
}

article_colect_model

package com.model;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.dto.admin_Dto;
import com.dto.article_Dto;
import com.dto.article_colect_Dto;

import util.DButil;

/*
 * 文章收集表相关方法
 */
public class article_colect_model {
	//1.通过useerid查询 返回一个article_colect的Dto
	public article_colect_Dto QueryByUserId(String userid) {
		DButil db = new DButil();
		Connection con = db.getConnection();
		PreparedStatement pstmt;
		ResultSet rs;
		article_colect_Dto dto = new article_colect_Dto();
		try {
			String sql = "select * from article_colect where userid=?";
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, userid);
			rs = pstmt.executeQuery();// 执行SQL语句
			if (rs.next()) {
				dto.setUserid(rs.getString("userid"));
				dto.setArcid(rs.getString("arcid"));
				dto.setCol_time(rs.getString("col_time"));
				dto.setUncol_time(rs.getString("uncol_time"));
			}
			// 关闭,释放资源
			rs.close();
			pstmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return dto;
	}
	// 2.从数据库导入数据(全查找article_colect信息)
	public List<article_colect_Dto> find_article_colect() {
		DButil db = new DButil();
		Connection con = db.getConnection();
		PreparedStatement pstmt;
		ResultSet rs;
		List<article_colect_Dto> list = new ArrayList<article_colect_Dto>();
		try {
			String sql = "select * from article_colect";
			pstmt = con.prepareStatement(sql);
			rs = pstmt.executeQuery();// 执行SQL语句
			while (rs.next()) {
				article_colect_Dto dto = new article_colect_Dto();
				dto.setUserid(rs.getString("userid"));
				dto.setArcid(rs.getString("arcid"));
				dto.setCol_time(rs.getString("col_time"));
				dto.setUncol_time(rs.getString("uncol_time"));
				list.add(dto);
			}
			// 关闭,释放资源
			rs.close();
			pstmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return list;
	}
	//3.插入数据到article_colect表中  传入article_colect_Dto参数
	public void add_article_colect(article_colect_Dto dto)
    {
	 	DButil db = new DButil();
    	Connection conn = db.getConnection();
		PreparedStatement statement = null;
	try {
    	String sql="insert into article_colect(userid, arcid, col_time, uncol_time) values(?,?,?,?)";
		statement = conn.prepareStatement(sql);
		statement.setString(1, dto.getUserid());
		statement.setString(2, dto.getArcid());
		statement.setString(3, dto.getCol_time());
		statement.setString(4, dto.getUncol_time());
		int result=statement.executeUpdate();
		if(result>0)
		{
			System.out.println("插入到article_colect表成功!");
		}
	}
	catch(Exception e1) {
		e1.printStackTrace();
		System.out.println(e1.getMessage());
	}
	finally 
	{
		try {
			statement.close();
			conn.close();
		}
		catch(Exception e2) {
			System.out.println(e2.getMessage());
		}
	}
    
   }

	// 4.通过userid从数据库导入数据(全查找article_colect信息)
	public List<article_colect_Dto> find_article_colect_DtoByUserId(String userid) {
		DButil db = new DButil();
		Connection con = db.getConnection();
		PreparedStatement pstmt;
		ResultSet rs;
		List<article_colect_Dto> list = new ArrayList<article_colect_Dto>();
		try {
			String sql = "select * from article_colect where userid=?";
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, userid);
			rs = pstmt.executeQuery();// 执行SQL语句
			while (rs.next()) {
				article_colect_Dto dto = new article_colect_Dto();
				dto.setUserid(rs.getString("userid"));
				dto.setArcid(rs.getString("arcid"));
				dto.setCol_time(rs.getString("col_time"));
				dto.setUncol_time(rs.getString("uncol_time"));
				list.add(dto);
			}
			// 关闭,释放资源
			rs.close();
			pstmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return list;
	}
}

article_comment_model

package com.model;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.dto.article_colect_Dto;
import com.dto.article_comment_Dto;

import util.DButil;

public class article_comment_model {
	//1.通过arcticle_id查询 返回一个article_comment的Dto
	public article_comment_Dto QueryByArcticleId(String arcticle_id) {
		DButil db = new DButil();
		Connection con = db.getConnection();
		PreparedStatement pstmt;
		ResultSet rs;
		article_comment_Dto dto = new article_comment_Dto();
		try {
			String sql = "select * from article_comment where arcticle_id=?";
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, arcticle_id);
			rs = pstmt.executeQuery();// 执行SQL语句
			if (rs.next()) {
				dto.setUser_id(rs.getString("user_id"));
				dto.setArcticle_id(rs.getString("arcticle_id"));
				dto.setReback_arctcle_id(rs.getString("reback_arctcle_id"));
				dto.setTime(rs.getString("time"));
				dto.setComment_id(rs.getString("comment_id"));
				dto.setContent(rs.getString("content"));
			}
			// 关闭,释放资源
			rs.close();
			pstmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return dto;
	}
	// 2.从数据库导入数据(全查找article_comment信息)
	public List<article_comment_Dto> find_article_comment_Dto() {
		DButil db = new DButil();
		Connection con = db.getConnection();
		PreparedStatement pstmt;
		ResultSet rs;
		List<article_comment_Dto> list = new ArrayList<article_comment_Dto>();
		try {
			String sql = "select * from article_comment";
			pstmt = con.prepareStatement(sql);
			rs = pstmt.executeQuery();// 执行SQL语句
			while (rs.next()) {
				article_comment_Dto dto = new article_comment_Dto();
				dto.setUser_id(rs.getString("user_id"));
				dto.setArcticle_id(rs.getString("arcticle_id"));
				dto.setReback_arctcle_id(rs.getString("reback_arctcle_id"));
				dto.setTime(rs.getString("time"));
				dto.setComment_id(rs.getString("comment_id"));
				dto.setContent(rs.getString("content"));
				list.add(dto);
			}
			// 关闭,释放资源
			rs.close();
			pstmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return list;
	}
	//3.插入数据到article_comment表中  传入article_comment_Dto参数
	public void add_article_comment(article_comment_Dto dto)
    {
	 	DButil db = new DButil();
    	Connection conn = db.getConnection();
		PreparedStatement statement = null;
	try {
    	String sql="insert into article_comment(arcticle_id, user_id, reback_arctcle_id, time, comment_id,content) values(?,?,?,?,?,?)";
		statement = conn.prepareStatement(sql);
		statement.setString(1, dto.getArcticle_id());
		statement.setString(2, dto.getUser_id());
		statement.setString(3, dto.getReback_arctcle_id());
		statement.setString(4, dto.getTime());
		statement.setString(5, dto.getComment_id());
		statement.setString(6, dto.getContent());
		int result=statement.executeUpdate();
		if(result>0)
		{
			System.out.println("插入到article_comment表成功!");
		}
	}
	catch(Exception e1) {
		e1.printStackTrace();
		System.out.println(e1.getMessage());
	}
	finally 
	{
		try {
			statement.close();
			conn.close();
		}
		catch(Exception e2) {
			System.out.println(e2.getMessage());
		}
	}
    
   }

	//4.通过arcticle_id查询 返回一个article_comment的List集合
	public List<article_comment_Dto> find_QueryByArcticleId(String arcticle_id) {
		DButil db = new DButil();
		Connection con = db.getConnection();
		PreparedStatement pstmt;
		ResultSet rs;
		List<article_comment_Dto> list = new ArrayList<article_comment_Dto>();
		try {
			String sql = " select * from article_comment where arcticle_id=?";
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, arcticle_id);
			rs = pstmt.executeQuery();// 执行SQL语句
			while (rs.next()) {
				article_comment_Dto dto = new article_comment_Dto();
				dto.setUser_id(rs.getString("user_id"));
				dto.setArcticle_id(rs.getString("arcticle_id"));
				dto.setReback_arctcle_id(rs.getString("reback_arctcle_id"));
				dto.setTime(rs.getString("time"));
				dto.setComment_id(rs.getString("comment_id"));
				dto.setContent(rs.getString("content"));
				list.add(dto);
			}
			// 关闭,释放资源
			rs.close();
			pstmt.close();
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return list;
	}
}

article_colectFindByUserIdServlet

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dto.article_Dto;
import com.dto.article_colect_Dto;
import com.model.article_colect_model;

/**
 * Servlet implementation class article_colectFindByUserIdServlet
 */
public class article_colectFindByUserIdServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public article_colectFindByUserIdServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html");
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("UTF-8");
		PrintWriter out = response.getWriter();
		String article_colectInfo = request.getParameter("articlecommentInfo"); //从前端获取数据first
		/*ycy*/
		System.out.print(article_colectInfo);
		JSONObject jsonObject = JSONObject.parseObject(article_colectInfo);
		System.out.println(jsonObject.getString("arcid"));
		article_colect_Dto article_colect = jsonObject.toJavaObject(article_colect_Dto.class);
		article_colect_model artc=new article_colect_model();
		List<article_colect_Dto> list =artc.find_article_colect_DtoByUserId(article_colect.getUserid());
		//将list转换为json数组
		JSONArray jsonList = JSONArray.parseArray(JSON.toJSONString(list));
		System.out.println(jsonList);
		String jsonStr = jsonList.toString();
		out.print(jsonStr);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

article_colectInsertServlet

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dto.article_colect_Dto;
import com.model.article_colect_model;

/**
 * Servlet implementation class article_colectInsertServlet
 */
@WebServlet("/article_colectInsertServlet") 
public class article_colectInsertServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public article_colectInsertServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html");
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("UTF-8");
		PrintWriter out = response.getWriter();
		String article_commentInfo = request.getParameter("likearticleInfo"); //从前端获取数据first
		/*ycy*/
		JSONObject jsonObject = JSONObject.parseObject(article_commentInfo);
		article_colect_Dto article_colect = jsonObject.toJavaObject(article_colect_Dto.class);
		article_colect_model artc=new article_colect_model();
		artc.add_article_colect(article_colect);
		String req=JSON.toJSONString(article_colect);
		out.print(req);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

findArticleByarticle_colectUserIdServlet

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dto.article_Dto;
import com.dto.article_colect_Dto;
import com.model.article_colect_model;
import com.model.article_model;

/**
 * Servlet implementation class findArticleByarticle_colectUserIdServlet
 */
@WebServlet("/findArticleByarticle_colectUserIdServlet")
public class findArticleByarticle_colectUserIdServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public findArticleByarticle_colectUserIdServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html");
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("UTF-8");
		PrintWriter out = response.getWriter();
		String article_colectInfo = request.getParameter("findArticleByarticle_colectUserIdServlet"); //从前端获取数据first
		/*ycy*/
		JSONObject jsonObject = JSONObject.parseObject(article_colectInfo);
		article_colect_Dto article_colect = jsonObject.toJavaObject(article_colect_Dto.class);
		article_model acm=new article_model();
//		List<article_Dto> list =artm.find_articleByArcIdFromArticle_Colect(article_colect);
		article_colect_model arcm=new article_colect_model ();
		List<article_colect_Dto> arclist=arcm.find_article_colect_DtoByUserId(article_colect.getUserid());
		String jsonStr="";
		int k=0;
		String temp="";
		int end=arclist.size();
		System.out.println(end);
		for(article_colect_Dto acol_dto1:arclist)
		{
			List<article_Dto> list=acm.find_article_DtoByArcId(acol_dto1.getArcid());
			JSONArray jsonList = JSONArray.parseArray(JSON.toJSONString(list));
			temp=jsonList.toString();
			if(k==0){
//			jsonStr+="[";
			jsonStr+=temp.substring(0,temp.length() - 1);
			jsonStr+=",";
			temp="";
			k++;
			}
			else 
			{
				if(k!=end-1)
				{
					jsonStr+=temp.substring(1,temp.length() - 1);
					jsonStr+=",";
					temp="";
					k++;
				}
				else
				{
					jsonStr+=temp.substring(1,temp.length()-1);
					jsonStr+="]";
					temp="";
					k++;
				}
			}
			System.out.println(jsonStr);
		}

//		System.out.println(jsonStr);
//		
//		
//		//将list转换为json数组
//		JSONArray jsonList = JSONArray.parseArray(JSON.toJSONString(list));	
//		String jsonStr=jsonList.toString();
//		System.out.print("str:::::::::::::::::::s"+jsonStr);
		out.print(jsonStr);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

MySQL数据库建表 sql语句

/*
 Navicat Premium Data Transfer

 Source Server         : 123
 Source Server Type    : MySQL
 Source Server Version : 50644
 Source Host           : 119.27.167.223:3306
 Source Schema         : shixun

 Target Server Type    : MySQL
 Target Server Version : 50644
 File Encoding         : 65001

 Date: 07/07/2019 04:20:05
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for admin
-- ----------------------------
DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin`  (
  `id` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NOT NULL COMMENT '管理员id,主键',
  `passw` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NOT NULL DEFAULT '123456' COMMENT '密码',
  `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NULL DEFAULT NULL,
  `adminRight` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_german2_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of admin
-- ----------------------------
INSERT INTO `admin` VALUES ('201701', '123456', NULL, '普通管理员');
INSERT INTO `admin` VALUES ('201702', '000', NULL, '普通管理员');
INSERT INTO `admin` VALUES ('201703', '111', NULL, '普通管理员');
INSERT INTO `admin` VALUES ('201724', '123456', 'ycy', '超级管理员');

-- ----------------------------
-- Table structure for article
-- ----------------------------
DROP TABLE IF EXISTS `article`;
CREATE TABLE `article`  (
  `userid` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NOT NULL,
  `arcid` bigint(20) NOT NULL AUTO_INCREMENT,
  `arctime` timestamp(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  `arcatatus` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NULL DEFAULT '公开' COMMENT '文章状态',
  `archtml` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '文章主体',
  `title` longtext CHARACTER SET utf8 COLLATE utf8_german2_ci NULL,
  `content` longtext CHARACTER SET utf8 COLLATE utf8_german2_ci NULL,
  `imageurl` longtext CHARACTER SET utf8 COLLATE utf8_german2_ci NULL,
  PRIMARY KEY (`arcid`) USING BTREE,
  INDEX `userid`(`userid`) USING BTREE,
  CONSTRAINT `article_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 56 CHARACTER SET = utf8 COLLATE = utf8_german2_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of article
-- ----------------------------
INSERT INTO `article` VALUES ('123456', 20, '2019-07-05 07:25:35', '0', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/s6BTS8x4IA2Wa7w.js', '哈利波特', 'nvalid or unexpected token ”“”“”“”“\"\"\"\"\"\"\"\"\"\"\"\"第1部《哈利波特与魔法石》Harry Potter and the Sorcerer\'s Stone (', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/dxw3E5xB1xxo43K.jpg');
INSERT INTO `article` VALUES ('123456', 21, '2019-07-05 07:24:50', '0', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/G9ib1IoSCBJEVtx.js', '哈利波特', '1部《哈利波特与魔法石》Harry Potter and the Sorcerer\'s Stone (2001)\n   一岁的哈利波特失去父母后,神秘地出现在姨父姨妈家的门前。哈利在姨父家饱受欺凌,', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/TmXmdnYmLh5Wth2.jpg');
INSERT INTO `article` VALUES ('123456', 22, '2019-07-05 07:24:53', '0', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/jrvYEJPIeoggib1.js', '哈利波特', 'lt;iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/1NmxkGY5fxc\" frameborder=\"0\" ', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/0TMj3CiUwJKCaGN.jpg');
INSERT INTO `article` VALUES ('123456', 23, '2019-07-05 07:24:56', '0', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/003d9NyDBiVHmsu.js', '哈利波特', 'lt;iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/1NmxkGY5fxc\" frameborder=\"0\" ', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/t1SldFJPuZNKPoO.jpg');
INSERT INTO `article` VALUES ('123456', 24, '2019-07-05 07:25:06', '0', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/EEvhmgQO7oqlf0V.js', '哈利波特', '1部《哈利波特与魔法石》Harry Potter and the Sorcerer\'s Stone (2001)\n   一岁的哈利波特失去父母后,神秘地出现在姨父姨妈家的门前。哈利在姨父家饱受欺凌,', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/FbPHRUq4TJbLdD5.jpg');
INSERT INTO `article` VALUES ('123456', 27, '2019-07-05 07:40:28', '0', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/euWPP90PTJincrp.js', '冰与火之歌', '事背景中虚构的世界,分为两片大陆:位于西面的“日落国度”维斯特洛;位于东面的类似亚欧大陆。维斯特洛大陆边境处发现远古传说中早已灭绝的生物开始,危险也渐渐在靠近这里。这片大陆的临冬城主暨北境统领艾德史......', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/xgAM61RB3AYv12d.jpg');
INSERT INTO `article` VALUES ('123456', 53, '2019-07-06 17:42:18', '0', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/4QZPIZBwYwwvt2o.js', '', '爱吃杀杀杀水水水水吖的阿萨吖的阿瑟东......', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/eTCQ5bOwIJiS0Wd.jpg');
INSERT INTO `article` VALUES ('201701020124', 54, '2019-07-06 17:47:08', '0', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/5C0a2peP4FuYCK6.js', '阿斯兰的还哦', '......', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/o86MKJ3KJaaOBIj.jpg');
INSERT INTO `article` VALUES ('缪传鹏', 55, '2019-07-07 02:57:45', '0', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/Nyrevwm03fDQOhU.js', 'wwwwwwwwwwwwwwwwwwwww', 'wdqqqqqqqqqqqqqqqqqqqqq......', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/i2cbgaKAGMHWXah.jpg');

-- ----------------------------
-- Table structure for article_colect
-- ----------------------------
DROP TABLE IF EXISTS `article_colect`;
CREATE TABLE `article_colect`  (
  `userid` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NULL DEFAULT NULL,
  `arcid` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NULL DEFAULT NULL,
  `col_time` timestamp(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  `uncol_time` timestamp(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  INDEX `article_colect_user_id`(`userid`) USING BTREE,
  CONSTRAINT `article_colect_user_id` FOREIGN KEY (`userid`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_german2_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of article_colect
-- ----------------------------
INSERT INTO `article_colect` VALUES ('123456', '21', '2019-07-06 16:03:33', NULL);
INSERT INTO `article_colect` VALUES ('123456', '21', '2019-07-06 16:14:13', NULL);
INSERT INTO `article_colect` VALUES ('201701020124', '20', '2019-07-06 16:35:17', NULL);
INSERT INTO `article_colect` VALUES ('201701020124', '21', '2019-07-06 18:42:52', NULL);
INSERT INTO `article_colect` VALUES ('201701020124', '22', '2019-07-06 18:44:49', NULL);
INSERT INTO `article_colect` VALUES ('缪传鹏', '24', '2019-07-07 02:56:23', NULL);
INSERT INTO `article_colect` VALUES ('缪传鹏', '22', '2019-07-07 03:01:05', NULL);

-- ----------------------------
-- Table structure for article_comment
-- ----------------------------
DROP TABLE IF EXISTS `article_comment`;
CREATE TABLE `article_comment`  (
  `arcticle_id` bigint(20) NULL DEFAULT NULL COMMENT '被评论文章ID',
  `user_id` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NULL DEFAULT NULL COMMENT '发表信息人ID',
  `reback_arctcle_id` bigint(20) NULL DEFAULT NULL COMMENT '回复评论ID',
  `time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  `comment_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `content` longtext CHARACTER SET utf8 COLLATE utf8_german2_ci NULL,
  PRIMARY KEY (`comment_id`) USING BTREE,
  INDEX `arc_comment_user_id`(`user_id`) USING BTREE,
  INDEX `arc_comment_arcticle_id`(`arcticle_id`) USING BTREE,
  CONSTRAINT `arc_comment_arcticle_id` FOREIGN KEY (`arcticle_id`) REFERENCES `article` (`arcid`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `arc_comment_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8 COLLATE = utf8_german2_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Table structure for lock_user
-- ----------------------------
DROP TABLE IF EXISTS `lock_user`;
CREATE TABLE `lock_user`  (
  `userid` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NOT NULL,
  `locktime` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  `res` longtext CHARACTER SET utf8 COLLATE utf8_german2_ci NULL,
  PRIMARY KEY (`userid`) USING BTREE,
  CONSTRAINT `lock_user_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_german2_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of lock_user
-- ----------------------------
INSERT INTO `lock_user` VALUES ('201701020124', '2019-07-03 23:05:05', NULL);
INSERT INTO `lock_user` VALUES ('201701020135', '2019-07-06 00:00:00', 'xxx');

-- ----------------------------
-- Table structure for notice
-- ----------------------------
DROP TABLE IF EXISTS `notice`;
CREATE TABLE `notice`  (
  `notice_text` longtext CHARACTER SET utf8 COLLATE utf8_german2_ci NULL,
  `time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  `admin_id` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NULL DEFAULT NULL,
  INDEX `admin_id`(`admin_id`) USING BTREE,
  CONSTRAINT `notice_ibfk_1` FOREIGN KEY (`admin_id`) REFERENCES `admin` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_german2_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of notice
-- ----------------------------
INSERT INTO `notice` VALUES ('溜', '2019-07-03 23:05:13', '201701');
INSERT INTO `notice` VALUES ('醉了', '2019-07-06 00:00:00', '201702');

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NOT NULL COMMENT '用户id',
  `passw` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NOT NULL COMMENT '密码',
  `arctitles` int(255) NULL DEFAULT 0 COMMENT '用户发表文章数量',
  `fans` int(255) NOT NULL DEFAULT 0 COMMENT '粉丝数',
  `collects` int(255) NULL DEFAULT 0 COMMENT '收藏数',
  `integral` int(255) NULL DEFAULT 0 COMMENT '积分',
  `email` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NULL DEFAULT NULL COMMENT '邮箱',
  `himgUrl` longtext CHARACTER SET utf8 COLLATE utf8_german2_ci NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_german2_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('111', '1111111111111', 0, 0, 0, 0, '1111111111111@qq.com', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/H6IbFXJU3KMp1jp.jpg');
INSERT INTO `user` VALUES ('123456', '111111111111', 22, 41, 51, 786, '123456@qq.com', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/b9lNfeDCsGIkHbL.jpg');
INSERT INTO `user` VALUES ('201701020108', '123', 33, 46, 108, 1142, '1275948439@qq.com', NULL);
INSERT INTO `user` VALUES ('201701020124', '654321', 99, 100, 99, 1000, '201701020124@qq.com', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/a8081L9MBl3dSeo.jpg');
INSERT INTO `user` VALUES ('201701020135', '123456', 33, 23, 10, 321, '1341312038@qq.com', NULL);
INSERT INTO `user` VALUES ('201701020145', '111', 11, 100, 100, 1200, '2903067812@qq.com', NULL);
INSERT INTO `user` VALUES ('缪传鹏', '1111111111111', 0, 0, 0, 0, '1111111111111@qq.com', 'https://test-1258897694.cos.ap-chengdu.myqcloud.com/GVykvYnfaEMXLb7.jpg');

-- ----------------------------
-- Table structure for user_feedback
-- ----------------------------
DROP TABLE IF EXISTS `user_feedback`;
CREATE TABLE `user_feedback`  (
  `userid` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NULL DEFAULT NULL,
  `time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  `type` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NULL DEFAULT NULL,
  `feedtext` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
  `id` bigint(255) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `userid`(`userid`) USING BTREE,
  CONSTRAINT `user_feedback_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 201903 CHARACTER SET = utf8 COLLATE = utf8_german2_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of user_feedback
-- ----------------------------
INSERT INTO `user_feedback` VALUES ('201701020124', '2019-07-03 22:59:42', '111', 'tql', 201901);
INSERT INTO `user_feedback` VALUES ('201701020135', '2019-07-06 00:00:00', 'xxx', 'xxx', 201902);

-- ----------------------------
-- Table structure for watched
-- ----------------------------
DROP TABLE IF EXISTS `watched`;
CREATE TABLE `watched`  (
  `wa_userid` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NULL DEFAULT NULL,
  `wing_userid` varchar(20) CHARACTER SET utf8 COLLATE utf8_german2_ci NULL DEFAULT NULL,
  `wa_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  `unwa_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  INDEX `watched_wa_user_id`(`wa_userid`) USING BTREE,
  INDEX `watched_wing_user_id`(`wing_userid`) USING BTREE,
  CONSTRAINT `watched_wa_user_id` FOREIGN KEY (`wa_userid`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `watched_wing_user_id` FOREIGN KEY (`wing_userid`) REFERENCES `user` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_german2_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of watched
-- ----------------------------
INSERT INTO `watched` VALUES ('201701020124', '201701020124', '2019-07-03 23:05:37', '2019-07-03 23:05:39');
INSERT INTO `watched` VALUES ('201701020145', '201701020135', '2019-07-04 15:57:40', '2019-07-04 15:57:40');
INSERT INTO `watched` VALUES ('201701020135', '201701020145', '2019-07-07 00:00:00', '2019-07-09 00:00:00');
INSERT INTO `watched` VALUES ('123456', '123456', NULL, NULL);
INSERT INTO `watched` VALUES ('201701020124', '123456', '2019-07-06 16:35:19', NULL);
INSERT INTO `watched` VALUES ('201701020124', '123456', '2019-07-06 18:42:49', NULL);
INSERT INTO `watched` VALUES ('201701020124', '123456', '2019-07-06 18:44:50', NULL);

-- ----------------------------
-- Triggers structure for table article
-- ----------------------------
DROP TRIGGER IF EXISTS `uptime`;
delimiter ;;
CREATE TRIGGER `uptime` BEFORE INSERT ON `article` FOR EACH ROW SET new.arctime=NOW()
;;
delimiter ;

-- ----------------------------
-- Triggers structure for table article_colect
-- ----------------------------
DROP TRIGGER IF EXISTS `coltime_update`;
delimiter ;;
CREATE TRIGGER `coltime_update` BEFORE INSERT ON `article_colect` FOR EACH ROW SET new.col_time=NOW()
;;
delimiter ;

-- ----------------------------
-- Triggers structure for table watched
-- ----------------------------
DROP TRIGGER IF EXISTS `warime_update`;
delimiter ;;
CREATE TRIGGER `warime_update` BEFORE INSERT ON `watched` FOR EACH ROW SET new.wa_time=NOW()
;;
delimiter ;

SET FOREIGN_KEY_CHECKS = 1;

在这里插入图片描述
在这里插入图片描述

本篇文章只是介绍这个项目,需要后端源码的课去看这篇文章哦
SEEK学习论坛-JavaWeb开发实训课题 (数据库MySQL+js+Ajax+Servlet)代码分析篇
https://blog.csdn.net/weixin_42429718/article/details/95355366

学如逆水行舟,不进则退

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一百个Chocolate

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值