首页 > 编程 > 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. } 
  42. List<BlogBean> bloglist; 
  43. boolean isNullRequest = (searchContent == null || "".equals(searchContent)); 
  44. if (isNullRequest) { 
  45. bloglist = blogdao.getBloglist(); 
  46. } else { 
  47. bloglist = blogdao.listBlogByKey(searchContent); 
  48. } 
  49. if (!pagerUtil.isValidPg(bloglist, pg)) { 
  50. getServletContext().getRequestDispatcher("/errorpage.jsp").forward(request, response); 
  51. return; 
  52. } 
  53. pagerUtil.fillValue(bloglist, pg); 
  54. String pageURLBase = getServletContext().getContextPath(); 
  55. String pageURLparam = isNullRequest ? "" : "?search=" + searchContent; 
  56. request.setAttribute("pageURLBase", pageURLBase); 
  57. request.setAttribute("pageURLparam", pageURLparam); 
  58. request.setAttribute("bloglist", bloglist); 
  59. getServletContext().getRequestDispatcher("/blog.jsp").forward(request, response); 
  60. } 
  61. @Override 
  62. protected void doGet(HttpServletRequest request, HttpServletResponse response) 
  63. throws ServletException, IOException { 
  64. processRequest(request, response); 
  65. } 
  66. @Override 
  67. protected void doPost(HttpServletRequest request, HttpServletResponse response) 
  68. throws ServletException, IOException { 
  69. processRequest(request, response); 
  70. } 
  71. @Override 
  72. public String getServletInfo() { 
  73. return "Short description"; 
  74. }// </editor-fold> 
  75. } 

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

3. 运行效果截图:

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

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

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