A simple blog system instance based on Jsp+servlet (source code) _jsp programming

Source: Internet
Author: User
Tags arrays getdate string tags

The example in this article describes a simple blog system based on jsp + servlet. Share to everyone for your reference. details as follows:

There are no small blogs written with frameworks, and the code is heavily repeated.

I personally feel that duplicate code is good for novices, and I am also a novice, forgive me.

Click here to download the complete example code.

Servlet

/ *
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 * /
package Servlet;
import blog.BlogBean;
import blog.BlogRepositoryJDBC;
import blog.PagerUtil;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet (name = "PageListServlet", urlPatterns = {"/ page / *", ""})
public class ListAllServlet extends HttpServlet {
  @Inject
  private BlogRepositoryJDBC blogdao;
  @Inject
  private PagerUtil pagerUtil;
  protected void processRequest (HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    int pg;
    String s = request.getRequestURI ();
    String searchContent = request.getParameter ("search");
    if (s.matches (request.getContextPath () + "/ page /" + "\\ d")) {
      String pgnum = s.replaceAll (request.getContextPath () + "/ page /", "");
      pg = Integer.parseInt (pgnum);
    } else if (s.matches (request.getContextPath () + "/")) {
      pg = 1;
    } else {
      getServletContext (). getRequestDispatcher ("/ errorpage.jsp"). forward (request, response);
      return;
    }
    List <BlogBean> bloglist;
    boolean isNullRequest = (searchContent == null || "" .equals (searchContent));
    if (isNullRequest) {
      bloglist = blogdao.getBloglist ();
    } else {
      bloglist = blogdao.listBlogByKey (searchContent);
    }
    if (! pagerUtil.isValidPg (bloglist, pg)) {
      getServletContext (). getRequestDispatcher ("/ errorpage.jsp"). forward (request, response);
      return;
    }
    pagerUtil.fillValue (bloglist, pg);
    String pageURLBase = getServletContext (). GetContextPath ();
    String pageURLparam = isNullRequest? "": "? Search =" + searchContent;
    request.setAttribute ("pageURLBase", pageURLBase);
    request.setAttribute ("pageURLparam", pageURLparam);
    request.setAttribute ("bloglist", bloglist);
    getServletContext (). getRequestDispatcher ("/ blog.jsp"). forward (request, response);
  }
  @Override
  protected void doGet (HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    processRequest (request, response);
  }
  @Override
  protected void doPost (HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    processRequest (request, response);
  }
  @Override
  public String getServletInfo () {
    return "Short description";
  } // </ editor-fold>
}

2.dao

package blog;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.sql.DataSource;
@ApplicationScoped
@Named
public class BlogRepositoryJDBC implements BlogRepository {
  @Resource (lookup = "jdbc / sample")
  private DataSource ds;
  private ArrayList <BlogBean> bloglist;
  private Set <String> tagSet;
  private Set <String> categorySet;
  private Map <String, Integer> dateMap;
  @PostConstruct
  private void init () {
    refreshCache ();
  }
  @Override
  public int addBlog (BlogBean blogi) {
    String sql = "INSERT INTO POSTS VALUES (?,?,?,?,?)";
    Connection conn = null;
    PreparedStatement ps = null;
    int out = 0;
    try {
      conn = ds.getConnection ();
      ps = conn.prepareStatement (sql);
      ps.setString (1, blogi.getBlogTitle ());
      ps.setString (2, blogi.getCategory ());
      ps.setString (3, blogi.getTag ());
      ps.setDate (4, new java.sql.Date (blogi.getPostDate (). getTime ()));
      ps.setString (5, blogi.getContent ());
      out = ps.executeUpdate ();
    } catch (SQLException ex) {
      Logger.getLogger (BlogRepositoryJDBC.class.getName ()). Log (Level.SEVERE, null, ex);
    } finally {
      closeEverything (conn, ps, null);
    }
    refreshCache ();
    return out;
  }
  @Override
  public int deleteBlog (String blogName) {
    String sql = "DELETE FROM POSTS WHERE HEAD =?";
    Connection conn = null;
    PreparedStatement ps = null;
    int out = 0;
    try {
      conn = ds.getConnection ();
      ps = conn.prepareStatement (sql);
      ps.setString (1, blogName);
      out = ps.executeUpdate ();
    } catch (SQLException ex) {
      Logger.getLogger (BlogRepositoryJDBC.class.getName ()). Log (Level.SEVERE, null, ex);
    } finally {
      closeEverything (conn, ps, null);
    }
    refreshCache ();
    return out;
  }
  @Override
  public int updateBlog (BlogBean blog, String oldhead) {
    String sql = "UPDATE POSTS SET HEAD = ?, CATEGORY = ?, TAG = ?, POSTDATE = ?, CONTENT =? WHERE HEAD =?";
    PreparedStatement ps = null;
    Connection conn = null;
    int out = 0;
    try {
      conn = ds.getConnection ();
      ps = conn.prepareStatement (sql);
      ps.setString (1, blog.getBlogTitle ());
      ps.setString (2, blog.getCategory ());
      ps.setString (3, blog.getTag ());
      ps.setDate (4, new java.sql.Date (blog.getPostDate (). getTime ()));
      ps.setString (5, blog.getContent ());
      ps.setString (6, oldhead);
      out = ps.executeUpdate ();
    } catch (SQLException ex) {
      Logger.getLogger (BlogRepositoryJDBC.class.getName ()). Log (Level.SEVERE, null, ex);
    } finally {
      closeEverything (conn, ps, null);
    }
    refreshCache ();
    return out;
  }
  @Override
  public List <BlogBean> ListAllBlog () {
    bloglist = new ArrayList <BlogBean> ();
    BlogBean blog;
    String sql = "SELECT * FROM POSTS ORDER BY POSTDATE DESC";
    Connection conn = null;
    Statement ss = null;
    ResultSet rs = null;
    int out = 0;
    try {
      conn = ds.getConnection ();
      ss = conn.createStatement ();
      rs = ss.executeQuery (sql);
      while (rs.next ()) {
        blog = new BlogBean ();
        blog.setBlogTitle (rs.getString (1));
        blog.setCategory (rs.getString (2));
        blog.setTag (rs.getString (3));
        blog.setPostDate (rs.getDate (4));
        blog.setContent (rs.getString (5));
        bloglist.add (blog);
      }
    } catch (SQLException ex) {
      Logger.getLogger (BlogRepositoryJDBC.class.getName ()). Log (Level.SEVERE, null, ex);
    } finally {
      closeEverything (conn, ss, rs);
    }
    return bloglist;
  }
  @Override
  public List listBlogByKey (String keyword) {
    List <BlogBean> list = new ArrayList <BlogBean> ();
    BlogBean blog;
    String sql = "SELECT * FROM POSTS WHERE HEAD LIKE? ORDER BY POSTDATE DESC";
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    int out = 0;
    try {
      conn = ds.getConnection ();
      ps = conn.prepareStatement (sql);
      ps.setString (1, "%" + keyword + "%");
      rs = ps.executeQuery ();
      while (rs.next ()) {
        blog = new BlogBean ();
        blog.setBlogTitle (rs.getString (1));
        blog.setCategory (rs.getString (2));
        blog.setTag (rs.getString (3));
        blog.setPostDate (rs.getDate (4));
        blog.setContent (rs.getString (5));
        list.add (blog);
      }
    } catch (SQLException ex) {
      Logger.getLogger (BlogRepositoryJDBC.class.getName ()). Log (Level.SEVERE, null, ex);
    } finally {
      closeEverything (conn, ps, rs);
    }
    return list;
  }
  @Override
  public List listBlogByContent (String keyword) {
    List <BlogBean> list = new ArrayList <BlogBean> ();
    BlogBean blog;
    String sql = "SELECT * FROM POSTS WHERE CONTENT LIKE? ORDER BY POSTDATE DESC";
    PreparedStatement ps = null;
    ResultSet rs = null;
    Connection conn = null;
    int out = 0;
    try {
      conn = ds.getConnection ();
      ps = conn.prepareStatement (sql);
      ps.setString (1, "%" + keyword + "%");
      rs = ps.executeQuery ();
      while (rs.next ()) {
        blog = new BlogBean ();
        blog.setBlogTitle (rs.getString (1));
        blog.setCategory (rs.getString (2));
        blog.setTag (rs.getString (3));
        blog.setPostDate (rs.getDate (4));
        blog.setContent (rs.getString (5));
        list.add (blog);
      }
    } catch (SQLException ex) {
      Logger.getLogger (BlogRepositoryJDBC.class.getName ()). Log (Level.SEVERE, null, ex);
    } finally {
      closeEverything (conn, ps, rs);
    }
    return list;
  }
  public Set listAllTags () {
    tagSet = new HashSet <String> ();
    String sql = "SELECT TAG FROM POSTS";
    Connection conn = null;
    Statement ss = null;
    ResultSet rs = null;
    try {
      conn = ds.getConnection ();
      ss = conn.createStatement ();
      rs = ss.executeQuery (sql);
      while (rs.next ()) {
        String tags = rs.getString (1);
        String [] Arraytags = tags.split (",");
        tagSet.addAll (Arrays.asList (Arraytags));
      }
    } catch (SQLException ex) {
      Logger.getLogger (BlogRepositoryJDBC.class.getName ()). Log (Level.SEVERE, null, ex);
    } finally {
      closeEverything (conn, ss, rs);
    }
    return tagSet;
  }
  public List listBlogByTag (String keyword) {
    List <BlogBean> list = new ArrayList <BlogBean> ();
    BlogBean blog;
    String sql = "SELECT * FROM POSTS WHERE TAG LIKE? ORDER BY POSTDATE DESC";
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    int out = 0;
    try {
      conn = ds.getConnection ();
      ps = conn.prepareStatement (sql);
      ps.setString (1, "%" + keyword + "%");
      rs = ps.executeQuery ();
      while (rs.next ()) {
        blog = new BlogBean ();
        blog.setBlogTitle (rs.getString (1));
        blog.setCategory (rs.getString (2));
        blog.setTag (rs.getString (3));
        blog.setPostDate (rs.getDate (4));
        blog.setContent (rs.getString (5));
        list.add (blog);
      }
    } catch (SQLException ex) {
      Logger.getLogger (BlogRepositoryJDBC.class.getName ()). Log (Level.SEVERE, null, ex);
    } finally {
      closeEverything (conn, ps, rs);
    }
    return list;
  }
    public List listBlogByDate (String keyword) {
    List <BlogBean> list = new ArrayList <BlogBean> ();
    BlogBean blog;
    String sql = "SELECT * FROM POSTS WHERE POSTDATE =? ORDER BY POSTDATE DESC";
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    int out = 0;
    try {
      conn = ds.getConnection ();
      ps = conn.prepareStatement (sql);
      ps.setString (1, keyword);
      rs = ps.executeQuery ();
      while (rs.next ()) {
        blog = new BlogBean ();
        blog.setBlogTitle (rs.getString (1));
        blog.setCategory (rs.getString (2));
        blog.setTag (rs.getString (3));
        blog.setPostDate (rs.getDate (4));
        blog.setContent (rs.getString (5));
        list.add (blog);
      }
    } catch (SQLException ex) {
      Logger.getLogger (BlogRepositoryJDBC.class.getName ()). Log (Level.SEVERE, null, ex);
    } finally {
      closeEverything (conn, ps, rs);
    }
    return list;
  }
  public Set listAllCategory () {
    categorySet = new HashSet <String> ();
    String sql = "SELECT CATEGORY FROM POSTS";
    Connection conn = null;
    Statement ss = null;
    ResultSet rs = null;
    try {
      conn = ds.getConnection ();
      ss = conn.createStatement ();
      rs = ss.executeQuery (sql);
      while (rs.next ()) {
        String category = rs.getString (1);
        categorySet.add (category);
      }
    } catch (SQLException ex) {
      Logger.getLogger (BlogRepositoryJDBC.class.getName ()). Log (Level.SEVERE, null, ex);
    } finally {
      closeEverything (conn, ss, rs);
    }
    return categorySet;
  }
  public List listBlogByCategory (String keyword) {
    List <BlogBean> list = new ArrayList <BlogBean> ();
    BlogBean blog;
    String sql = "SELECT * FROM POSTS WHERE CATEGORY LIKE?";
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    int out = 0;
    try {
      conn = ds.getConnection ();
      ps = conn.prepareStatement (sql);
      ps.setString (1, "%" + keyword + "%");
      rs = ps.executeQuery ();
      while (rs.next ()) {
        blog = new BlogBean ();
        blog.setBlogTitle (rs.getString (1));
        blog.setCategory (rs.getString (2));
        blog.setTag (rs.getString (3));
        blog.setPostDate (rs.getDate (4));
        blog.setContent (rs.getString (5));
        list.add (blog);
      }
    } catch (SQLException ex) {
      Logger.getLogger (BlogRepositoryJDBC.class.getName ()). Log (Level.SEVERE, null, ex);
    } finally {
      closeEverything (conn, ps, rs);
    }
    return list;
  }
  private void fillDateMap () {
    String sql = "SELECT POSTDATE, COUNT (POSTDATE) FROM POSTS GROUP BY POSTDATE";
     Connection conn = null;
    Statement ss = null;
    ResultSet rs = null;
    dateMap = new HashMap <String, Integer> ();
    try {
      conn = ds.getConnection ();
      ss = conn.createStatement ();
       rs = ss.executeQuery (sql);
      while (rs.next ()) {
        dateMap.put (rs.getString (1), rs.getInt (2));
      }
    } catch (SQLException ex) {
      Logger.getLogger (BlogRepositoryJDBC.class.getName ()). Log (Level.SEVERE, null, ex);
    } finally {
      closeEverything (conn, ss, rs);
    }
  }
  public void test () {
        for (Map.Entry <String, Integer> dd: dateMap.entrySet ()) {
           dd.getKey ();
           dd.getValue ();
        }
  }
  public void refreshCache () {
    ListAllBlog ();
    listAllTags ();
    listAllCategory ();
    fillDateMap ();
  }
  public ArrayList <BlogBean> getBloglist () {
    return bloglist;
  }
  public Set <String> getTagSet () {
    return tagSet;
  }
  public Set <String> getCategorySet () {
    return categorySet;
  }
  public Map <String, Integer> getDateMap () {
    return dateMap;
  }
  private void closeEverything (Connection conn, Statement ps, ResultSet rs) {
    if (rs! = null) {
      try {
        rs.close ();
      } catch (SQLException ex) {
      }
    }
    if (ps! = null) {
      try {
        ps.close ();
      } catch (SQLException ex) {
      }
    }
    if (conn! = null) {
      try {
        conn.close ();
      } catch (SQLException ex) {
      }
    }
  }
}

3. Run effect screenshot:



I hope this article is helpful to everyone's JSP programming.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.