无为清净楼资源网 Design By www.qnjia.com
本文实例讲述了基于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 "" : "" + 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="; 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 "; 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 "; 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 "; 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 = "; 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程序设计有所帮助。
标签:
jsp,servlet,博客系统
无为清净楼资源网 Design By www.qnjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
无为清净楼资源网 Design By www.qnjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月16日
2024年11月16日
- 群星《歌手2024 第13期》[FLAC/分轨][325.93MB]
- 阿木乃《爱情买卖》DTS-ES【NRG镜像】
- 江蕾《爱是这样甜》DTS-WAV
- VA-Hair(OriginalBroadwayCastRecording)(1968)(PBTHAL24-96FLAC)
- 博主分享《美末2RE》PS5 Pro运行画面 玩家仍不买账
- 《双城之战2》超多新歌MV发布:林肯公园再次献声
- 群星《说唱梦工厂 第11期》[320K/MP3][63.25MB]
- 群星《说唱梦工厂 第11期》[FLAC/分轨][343.07MB]
- 群星《闪光的夏天 第5期》[320K/MP3][79.35MB]
- 秀兰玛雅.1999-友情人【大旗】【WAV+CUE】
- 小米.2020-我想在城市里当一个乡下人【滚石】【FLAC分轨】
- 齐豫.2003-THE.UNHEARD.OF.CHYI.3CD【苏活音乐】【WAV+CUE】
- 黄乙玲1986-讲什么山盟海誓[日本东芝版][WAV+CUE]
- 曾庆瑜1991-柔情陷阱[台湾派森东芝版][WAV+CUE]
- 陈建江《享受男声》DTS-ES6.1【WAV】