DDR爱好者之家 Design By 杰米
本文实例讲述了基于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程序设计有所帮助。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年11月24日
2024年11月24日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]