The example in this article describes a simple blog system based on jsp + servlet. Share to everyone for your reference. details as follows:
There are no small blogs written with frameworks, and the code is heavily repeated.
I personally feel that duplicate code is good for novices, and I am also a novice, forgive me.
Click here to download the complete example code.
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
@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 = ?, 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. Run effect screenshot:
I hope this article is helpful to everyone's JSP programming.