首页 > 编程 > JSP > 正文

基于jsp+servlet实现的简单博客系统实例(附源码)

2024-09-05 00:22:21
字体:
来源:转载
供稿:网友

这篇文章主要介绍了基于jsp+servlet实现的简单博客系统,以完整实例形式分析了基于jsp+servlet简单博客系统的原理与相关技巧,并附带了完整源码供读者下载学习,需要的朋友可以参考下

本文实例讲述了基于jsp+servlet实现的简单博客系统。分享给大家供大家参考。具体如下:

没有用框架写的 小博客, 代码大量重复。

个人感觉重复代码对于新手还是有好处的,我也是新手,见谅。

完整实例代码点击此处本站下载。

1. servlet

 

 
  1. /* 
  2. * To change this template, choose Tools | Templates 
  3. * and open the template in the editor. 
  4. */ 
  5. package Servlet; 
  6. import blog.BlogBean; 
  7. import blog.BlogRepositoryJDBC; 
  8. import blog.PagerUtil; 
  9. import java.io.IOException; 
  10. import java.io.PrintWriter; 
  11. import java.net.URLDecoder; 
  12. import java.util.List; 
  13. import javax.enterprise.context.RequestScoped; 
  14. import javax.enterprise.context.SessionScoped; 
  15. import javax.inject.Inject; 
  16. import javax.inject.Named; 
  17. import javax.servlet.ServletException; 
  18. import javax.servlet.annotation.WebServlet; 
  19. import javax.servlet.http.HttpServlet; 
  20. import javax.servlet.http.HttpServletRequest; 
  21. import javax.servlet.http.HttpServletResponse; 
  22. @WebServlet(name = "PageListServlet", urlPatterns = {"/page/*"""}) 
  23. public class ListAllServlet extends HttpServlet { 
  24. @Inject 
  25. private BlogRepositoryJDBC blogdao; 
  26. @Inject 
  27. private PagerUtil pagerUtil; 
  28. protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
  29. throws ServletException, IOException { 
  30. int pg; 
  31. String s = request.getRequestURI(); 
  32. String searchContent = request.getParameter("search"); 
  33. if (s.matches(request.getContextPath() + "/page/" + "//d")) { 
  34. String pgnum = s.replaceAll(request.getContextPath() + "/page/"""); 
  35. pg = Integer.parseInt(pgnum); 
  36. else if (s.matches(request.getContextPath() + "/")) { 
  37. pg = 1; 
  38. else { 
  39. getServletContext().getRequestDispatcher("/errorpage.jsp").forward(request, response); 
  40. return
  41. List<BlogBean> bloglist; 
  42. boolean isNullRequest = (searchContent == null || "".equals(searchContent)); 
  43. if (isNullRequest) { 
  44. bloglist = blogdao.getBloglist(); 
  45. else { 
  46. bloglist = blogdao.listBlogByKey(searchContent); 
  47. if (!pagerUtil.isValidPg(bloglist, pg)) { 
  48. getServletContext().getRequestDispatcher("/errorpage.jsp").forward(request, response); 
  49. return
  50. pagerUtil.fillValue(bloglist, pg); 
  51. String pageURLBase = getServletContext().getContextPath(); 
  52. String pageURLparam = isNullRequest ? "" : "?search=" + searchContent; 
  53. request.setAttribute("pageURLBase", pageURLBase); 
  54. request.setAttribute("pageURLparam", pageURLparam); 
  55. request.setAttribute("bloglist", bloglist); 
  56. getServletContext().getRequestDispatcher("/blog.jsp").forward(request, response); 
  57. @Override 
  58. protected void doGet(HttpServletRequest request, HttpServletResponse response) 
  59. throws ServletException, IOException { 
  60. processRequest(request, response); 
  61. @Override 
  62. protected void doPost(HttpServletRequest request, HttpServletResponse response) 
  63. throws ServletException, IOException { 
  64. processRequest(request, response); 
  65. @Override 
  66. public String getServletInfo() { 
  67. return "Short description"
  68. }// </editor-fold> 

2. dao

 

 
  1. package blog; 
  2. import java.sql.Connection; 
  3. import java.sql.PreparedStatement; 
  4. import java.sql.ResultSet; 
  5. import java.sql.SQLException; 
  6. import java.sql.Statement; 
  7. import java.util.ArrayList; 
  8. import java.util.Arrays; 
  9. import java.util.Date; 
  10. import java.util.HashMap; 
  11. import java.util.HashSet; 
  12. import java.util.List; 
  13. import java.util.Map; 
  14. import java.util.Set; 
  15. import java.util.logging.Level; 
  16. import java.util.logging.Logger; 
  17. import javax.annotation.PostConstruct; 
  18. import javax.annotation.Resource; 
  19. import javax.enterprise.context.ApplicationScoped; 
  20. import javax.inject.Inject; 
  21. import javax.inject.Named; 
  22. import javax.sql.DataSource; 
  23. @ApplicationScoped 
  24. @Named 
  25. public class BlogRepositoryJDBC implements BlogRepository { 
  26. @Resource(lookup = "jdbc/sample"
  27. private DataSource ds; 
  28. private ArrayList<BlogBean> bloglist; 
  29. private Set<String> tagSet; 
  30. private Set<String> categorySet; 
  31. private Map<String,Integer> dateMap; 
  32. @PostConstruct 
  33. private void init() { 
  34. refreshCache(); 
  35. @Override 
  36. public int addBlog(BlogBean blogi) { 
  37. String sql = "INSERT INTO POSTS VALUES (?,?,?,?,?)"
  38. Connection conn = null
  39. PreparedStatement ps = null
  40. int out = 0; 
  41. try { 
  42. conn = ds.getConnection(); 
  43. ps = conn.prepareStatement(sql); 
  44. ps.setString(1, blogi.getBlogTitle()); 
  45. ps.setString(2, blogi.getCategory()); 
  46. ps.setString(3, blogi.getTag()); 
  47. ps.setDate(4, new java.sql.Date(blogi.getPostDate().getTime())); 
  48. ps.setString(5, blogi.getContent()); 
  49. out = ps.executeUpdate(); 
  50. catch (SQLException ex) { 
  51. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  52. finally { 
  53. closeEverything(conn, ps, null); 
  54. refreshCache(); 
  55. return out; 
  56. @Override 
  57. public int deleteBlog(String blogName) { 
  58. String sql = "DELETE FROM POSTS WHERE HEAD = ?"
  59. Connection conn = null
  60. PreparedStatement ps = null
  61. int out = 0; 
  62. try { 
  63. conn = ds.getConnection(); 
  64. ps = conn.prepareStatement(sql); 
  65. ps.setString(1, blogName); 
  66. out = ps.executeUpdate(); 
  67. catch (SQLException ex) { 
  68. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  69. finally { 
  70. closeEverything(conn, ps, null); 
  71. refreshCache(); 
  72. return out; 
  73. @Override 
  74. public int updateBlog(BlogBean blog, String oldhead) { 
  75. String sql = "UPDATE POSTS SET HEAD=?,CATEGORY=?,TAG=?,POSTDATE=?,CONTENT=? WHERE HEAD=?"
  76. PreparedStatement ps = null
  77. Connection conn = null
  78. int out = 0; 
  79. try { 
  80. conn = ds.getConnection(); 
  81. ps = conn.prepareStatement(sql); 
  82. ps.setString(1, blog.getBlogTitle()); 
  83. ps.setString(2, blog.getCategory()); 
  84. ps.setString(3, blog.getTag()); 
  85. ps.setDate(4, new java.sql.Date(blog.getPostDate().getTime())); 
  86. ps.setString(5, blog.getContent()); 
  87. ps.setString(6, oldhead); 
  88. out = ps.executeUpdate(); 
  89. catch (SQLException ex) { 
  90. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  91. finally { 
  92. closeEverything(conn, ps, null); 
  93. refreshCache(); 
  94. return out; 
  95. @Override 
  96. public List<BlogBean> ListAllBlog() { 
  97. bloglist = new ArrayList<BlogBean>(); 
  98. BlogBean blog; 
  99. String sql = "SELECT * FROM POSTS ORDER BY POSTDATE DESC"
  100. Connection conn = null
  101. Statement ss = null
  102. ResultSet rs = null
  103. int out = 0; 
  104. try { 
  105. conn = ds.getConnection(); 
  106. ss = conn.createStatement(); 
  107. rs = ss.executeQuery(sql); 
  108. while (rs.next()) { 
  109. blog = new BlogBean(); 
  110. blog.setBlogTitle(rs.getString(1)); 
  111. blog.setCategory(rs.getString(2)); 
  112. blog.setTag(rs.getString(3)); 
  113. blog.setPostDate(rs.getDate(4)); 
  114. blog.setContent(rs.getString(5)); 
  115. bloglist.add(blog); 
  116. catch (SQLException ex) { 
  117. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  118. finally { 
  119. closeEverything(conn, ss, rs); 
  120. return bloglist; 
  121. @Override 
  122. public List listBlogByKey(String keyword) { 
  123. List<BlogBean> list = new ArrayList<BlogBean>(); 
  124. BlogBean blog; 
  125. String sql = "SELECT * FROM POSTS WHERE HEAD LIKE ? ORDER BY POSTDATE DESC"
  126. Connection conn = null
  127. PreparedStatement ps = null
  128. ResultSet rs = null
  129. int out = 0; 
  130. try { 
  131. conn = ds.getConnection(); 
  132. ps = conn.prepareStatement(sql); 
  133. ps.setString(1, "%" + keyword + "%"); 
  134. rs = ps.executeQuery(); 
  135. while (rs.next()) { 
  136. blog = new BlogBean(); 
  137. blog.setBlogTitle(rs.getString(1)); 
  138. blog.setCategory(rs.getString(2)); 
  139. blog.setTag(rs.getString(3)); 
  140. blog.setPostDate(rs.getDate(4)); 
  141. blog.setContent(rs.getString(5)); 
  142. list.add(blog); 
  143. catch (SQLException ex) { 
  144. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  145. finally { 
  146. closeEverything(conn, ps, rs); 
  147. return list; 
  148. @Override 
  149. public List listBlogByContent(String keyword) { 
  150. List<BlogBean> list = new ArrayList<BlogBean>(); 
  151. BlogBean blog; 
  152. String sql = "SELECT * FROM POSTS WHERE CONTENT LIKE ? ORDER BY POSTDATE DESC"
  153. PreparedStatement ps = null
  154. ResultSet rs = null
  155. Connection conn = null
  156. int out = 0; 
  157. try { 
  158. conn = ds.getConnection(); 
  159. ps = conn.prepareStatement(sql); 
  160. ps.setString(1, "%" + keyword + "%"); 
  161. rs = ps.executeQuery(); 
  162. while (rs.next()) { 
  163. blog = new BlogBean(); 
  164. blog.setBlogTitle(rs.getString(1)); 
  165. blog.setCategory(rs.getString(2)); 
  166. blog.setTag(rs.getString(3)); 
  167. blog.setPostDate(rs.getDate(4)); 
  168. blog.setContent(rs.getString(5)); 
  169. list.add(blog); 
  170. catch (SQLException ex) { 
  171. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  172. finally { 
  173. closeEverything(conn, ps, rs); 
  174. return list; 
  175. public Set listAllTags() { 
  176. tagSet = new HashSet<String>(); 
  177. String sql = "SELECT TAG FROM POSTS "
  178. Connection conn = null
  179. Statement ss = null
  180. ResultSet rs = null
  181. try { 
  182. conn = ds.getConnection(); 
  183. ss = conn.createStatement(); 
  184. rs = ss.executeQuery(sql); 
  185. while (rs.next()) { 
  186. String tags = rs.getString(1); 
  187. String[] Arraytags = tags.split(","); 
  188. tagSet.addAll(Arrays.asList(Arraytags)); 
  189. catch (SQLException ex) { 
  190. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  191. finally { 
  192. closeEverything(conn, ss, rs); 
  193. return tagSet; 
  194. public List listBlogByTag(String keyword) { 
  195. List<BlogBean> list = new ArrayList<BlogBean>(); 
  196. BlogBean blog; 
  197. String sql = "SELECT * FROM POSTS WHERE TAG LIKE ? ORDER BY POSTDATE DESC"
  198. Connection conn = null
  199. PreparedStatement ps = null
  200. ResultSet rs = null
  201. int out = 0; 
  202. try { 
  203. conn = ds.getConnection(); 
  204. ps = conn.prepareStatement(sql); 
  205. ps.setString(1, "%" + keyword + "%"); 
  206. rs = ps.executeQuery(); 
  207. while (rs.next()) { 
  208. blog = new BlogBean(); 
  209. blog.setBlogTitle(rs.getString(1)); 
  210. blog.setCategory(rs.getString(2)); 
  211. blog.setTag(rs.getString(3)); 
  212. blog.setPostDate(rs.getDate(4)); 
  213. blog.setContent(rs.getString(5)); 
  214. list.add(blog); 
  215. catch (SQLException ex) { 
  216. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  217. finally { 
  218. closeEverything(conn, ps, rs); 
  219. return list; 
  220. public List listBlogByDate(String keyword) { 
  221. List<BlogBean> list = new ArrayList<BlogBean>(); 
  222. BlogBean blog; 
  223. String sql = "SELECT * FROM POSTS WHERE POSTDATE = ? ORDER BY POSTDATE DESC"
  224. Connection conn = null
  225. PreparedStatement ps = null
  226. ResultSet rs = null
  227. int out = 0; 
  228. try { 
  229. conn = ds.getConnection(); 
  230. ps = conn.prepareStatement(sql); 
  231. ps.setString(1, keyword ); 
  232. rs = ps.executeQuery(); 
  233. while (rs.next()) { 
  234. blog = new BlogBean(); 
  235. blog.setBlogTitle(rs.getString(1)); 
  236. blog.setCategory(rs.getString(2)); 
  237. blog.setTag(rs.getString(3)); 
  238. blog.setPostDate(rs.getDate(4)); 
  239. blog.setContent(rs.getString(5)); 
  240. list.add(blog); 
  241. catch (SQLException ex) { 
  242. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  243. finally { 
  244. closeEverything(conn, ps, rs); 
  245. return list; 
  246. public Set listAllCategory() { 
  247. categorySet = new HashSet<String>(); 
  248. String sql = "SELECT CATEGORY FROM POSTS"
  249. Connection conn = null
  250. Statement ss = null
  251. ResultSet rs = null
  252. try { 
  253. conn = ds.getConnection(); 
  254. ss = conn.createStatement(); 
  255. rs = ss.executeQuery(sql); 
  256. while (rs.next()) { 
  257. String category = rs.getString(1); 
  258. categorySet.add(category); 
  259. catch (SQLException ex) { 
  260. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  261. finally { 
  262. closeEverything(conn, ss, rs); 
  263. return categorySet; 
  264. public List listBlogByCategory(String keyword) { 
  265. List<BlogBean> list = new ArrayList<BlogBean>(); 
  266. BlogBean blog; 
  267. String sql = "SELECT * FROM POSTS WHERE CATEGORY LIKE ?"
  268. Connection conn = null
  269. PreparedStatement ps = null
  270. ResultSet rs = null
  271. int out = 0; 
  272. try { 
  273. conn = ds.getConnection(); 
  274. ps = conn.prepareStatement(sql); 
  275. ps.setString(1, "%" + keyword + "%"); 
  276. rs = ps.executeQuery(); 
  277. while (rs.next()) { 
  278. blog = new BlogBean(); 
  279. blog.setBlogTitle(rs.getString(1)); 
  280. blog.setCategory(rs.getString(2)); 
  281. blog.setTag(rs.getString(3)); 
  282. blog.setPostDate(rs.getDate(4)); 
  283. blog.setContent(rs.getString(5)); 
  284. list.add(blog); 
  285. catch (SQLException ex) { 
  286. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  287. finally { 
  288. closeEverything(conn, ps, rs); 
  289. return list; 
  290. private void fillDateMap(){ 
  291. String sql = "SELECT POSTDATE,COUNT(POSTDATE) FROM POSTS GROUP BY POSTDATE"
  292. Connection conn = null
  293. Statement ss = null
  294. ResultSet rs = null
  295. dateMap = new HashMap<String,Integer>(); 
  296. try { 
  297. conn = ds.getConnection(); 
  298. ss = conn.createStatement(); 
  299. rs=ss.executeQuery(sql);  
  300. while (rs.next()) { 
  301. dateMap.put(rs.getString(1), rs.getInt(2)); 
  302. catch (SQLException ex) { 
  303. Logger.getLogger(BlogRepositoryJDBC.class.getName()).log(Level.SEVERE, null, ex); 
  304. finally { 
  305. closeEverything(conn, ss, rs); 
  306. public void test(){ 
  307. for(Map.Entry<String,Integer> dd: dateMap.entrySet()){ 
  308. dd.getKey(); 
  309. dd.getValue(); 
  310. public void refreshCache() { 
  311. ListAllBlog(); 
  312. listAllTags(); 
  313. listAllCategory(); 
  314. fillDateMap(); 
  315. public ArrayList<BlogBean> getBloglist() { 
  316. return bloglist; 
  317. public Set<String> getTagSet() { 
  318. return tagSet; 
  319. public Set<String> getCategorySet() { 
  320. return categorySet; 
  321. public Map<String, Integer> getDateMap() { 
  322. return dateMap; 
  323. private void closeEverything(Connection conn, Statement ps, ResultSet rs) { 
  324. if (rs != null) { 
  325. try { 
  326. rs.close(); 
  327. catch (SQLException ex) { 
  328. if (ps != null) { 
  329. try { 
  330. ps.close(); 
  331. catch (SQLException ex) { 
  332. if (conn != null) { 
  333. try { 
  334. conn.close(); 
  335. catch (SQLException ex) { 

3. 运行效果截图:

基于jsp+servlet实现的简单博客系统实例(附源码)

希望本文所述对大家的JSP程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表