这篇文章主要介绍了基于jsp+servlet实现的简单博客系统,以完整实例形式分析了基于jsp+servlet简单博客系统的原理与相关技巧,并附带了完整源码供读者下载学习,需要的朋友可以参考下
本文实例讲述了基于jsp+servlet实现的简单博客系统。分享给大家供大家参考。具体如下:
没有用框架写的 小博客, 代码大量重复。
个人感觉重复代码对于新手还是有好处的,我也是新手,见谅。
完整实例代码点击此处本站下载。
1. 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. 运行效果截图:
希望本文所述对大家的JSP程序设计有所帮助。
新闻热点
疑难解答