时间:2021-05-25
本文实例讲述了基于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@Namedpublic 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程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
jsp+servlet实现猜数字游戏主要用到了servlet方面的session,HttpServletResponse类中的sendRedirect()方法。
本文实例为大家分享了Jsp+Servlet实现简单登录注册查询的具体代码,供大家参考,具体内容如下1、注册功能:制作一个注册页面用户输入:用户名密码年龄注册成功
本文实例讲述了jsp+Servlet编程实现验证码的方法。分享给大家供大家参考,具体如下:这里用到两个类,一个用于验证码实现,一个为后台Servlet验证输入是
一、前言本文原作者为TonyWang,该文章涉及到文件的读写和jpg图片的自动生成。利用jsp+servlet的技术,jsp调用servlet生成图片。二、首文
继上一次利用Servlet实现图片上传,这次利用基于MVC的Struts框架,封装了Servlet并简化了JSP页面跳转。JSP上传页面上传一定要为form加上