到11節(jié)基本的東西都已經(jīng)實(shí)現(xiàn)了,剩下的都是一點(diǎn)細(xì)節(jié)問(wèn)題;比如由于注冊(cè)用戶和普通瀏覽用戶權(quán)限不同,所以大家看的也有所不同;
在項(xiàng)目設(shè)計(jì)的時(shí)候,普通用戶可以看博客,發(fā)表評(píng)論;為了避免不必要的麻煩,將普通用戶的操作特別的寫一個(gè)servlet,這樣也比較容易控制。
HomeServlet主要就是負(fù)責(zé)這個(gè)任務(wù)。
在HomeServlet里面主要就是兩個(gè)方法,為了配合以后的頁(yè)面設(shè)計(jì),相對(duì)之前的BlogServlet等等,相對(duì)復(fù)雜一點(diǎn)(其實(shí)還好)。
讓我們來(lái)看看這個(gè)Sql語(yǔ)句的作用
然后再blog新表與category根據(jù)categoryId做連接。
然后修改一下Blog類,添加一個(gè)comments屬性(記錄此blog對(duì)象所包含的評(píng)論數(shù)目)。
2.對(duì)blog.content做下處理,在顯示所有博文的時(shí)候,對(duì)blog.content的內(nèi)容做一個(gè)簡(jiǎn)報(bào)。
很簡(jiǎn)單的一個(gè)getBriefContent()方法:
3.對(duì)blog.content另一個(gè)修改。因?yàn)閷懖┪牡臅r(shí)候,可能所選用的字體啊什么每次都不同,以至于在瀏覽所有博文的時(shí)候會(huì)很亂;
所以以下doFilter(StringBuffer sb)方法,主要對(duì)文字進(jìn)行過(guò)濾,將充滿HTML MARK的文章過(guò)濾一下。
在項(xiàng)目設(shè)計(jì)的時(shí)候,普通用戶可以看博客,發(fā)表評(píng)論;為了避免不必要的麻煩,將普通用戶的操作特別的寫一個(gè)servlet,這樣也比較容易控制。
HomeServlet主要就是負(fù)責(zé)這個(gè)任務(wù)。
在HomeServlet里面主要就是兩個(gè)方法,為了配合以后的頁(yè)面設(shè)計(jì),相對(duì)之前的BlogServlet等等,相對(duì)復(fù)雜一點(diǎn)(其實(shí)還好)。
讓我們來(lái)看看這個(gè)Sql語(yǔ)句的作用
sql= select b.id as id,b.title as title,b.content as content,b.date as date,c.name as category,categoryId,comments from
(select blog.id as id ,blog.title as title,blog.category_id as categoryId,count(comment.blog_id) as comments,blog.content as content,blog.date as date from blog
left join comment on blog.id = comment.blog_id group by blog.id) as b, category c
where categoryId = c.id
order by date desc;
首先(select blog.id as id ,blog.title as title,blog.category_id as categoryId,count(comment.blog_id) as comments,blog.content as content,blog.date as date from blog
left join comment on blog.id = comment.blog_id group by blog.id) as b, category c
where categoryId = c.id
order by date desc;
select blog.id as id ,blog.title as title,blog.category_id as categoryId,count(comment.blog_id) as comments,blog.content as content,blog.date as date from blog
left join comment on blog.id = comment.blog_id group by blog.id
comment表中對(duì)blog_id一致的記錄做統(tǒng)計(jì),與blog表左連接;left join comment on blog.id = comment.blog_id group by blog.id
然后再blog新表與category根據(jù)categoryId做連接。
然后修改一下Blog類,添加一個(gè)comments屬性(記錄此blog對(duì)象所包含的評(píng)論數(shù)目)。
2.對(duì)blog.content做下處理,在顯示所有博文的時(shí)候,對(duì)blog.content的內(nèi)容做一個(gè)簡(jiǎn)報(bào)。
很簡(jiǎn)單的一個(gè)getBriefContent()方法:
public String getBriefContent() {
StringBuffer briefContent = new StringBuffer(content);
int length = 200;
if (briefContent.length() < length) {
length = briefContent.length();
}
briefContent = briefContent.delete(length, briefContent.length());
//filter html mark;
briefContent.append("
..");
return briefContent.toString();
}
限定200字符長(zhǎng)度,如果博文內(nèi)容多于200字符,那么取前200字符;否則直接貼上博文內(nèi)容。StringBuffer briefContent = new StringBuffer(content);
int length = 200;
if (briefContent.length() < length) {
length = briefContent.length();
}
briefContent = briefContent.delete(length, briefContent.length());
//filter html mark;
briefContent.append("

return briefContent.toString();
}
3.對(duì)blog.content另一個(gè)修改。因?yàn)閷懖┪牡臅r(shí)候,可能所選用的字體啊什么每次都不同,以至于在瀏覽所有博文的時(shí)候會(huì)很亂;
所以以下doFilter(StringBuffer sb)方法,主要對(duì)文字進(jìn)行過(guò)濾,將充滿HTML MARK的文章過(guò)濾一下。
private StringBuffer doFilter(StringBuffer source) {
StringBuffer header = new StringBuffer(source);
while((header.indexOf("<")!=-1)&&(header.indexOf(">")!=-1)){
int startPos = header.indexOf("<");
int endPos = header.indexOf(">");
header = header.delete(startPos, endPos+1);
}
return header;
}
因此getBriefContent()方法也要插上一句(Line 3):StringBuffer header = new StringBuffer(source);
while((header.indexOf("<")!=-1)&&(header.indexOf(">")!=-1)){
int startPos = header.indexOf("<");
int endPos = header.indexOf(">");
header = header.delete(startPos, endPos+1);
}
return header;
}
1 public String getBriefContent() {
2 StringBuffer briefContent = new StringBuffer(content);
3 briefContent = doFilter(briefContent);
4 int length = 200;
5 if (briefContent.length() < length) {
6 length = briefContent.length();
7 }
8 briefContent = briefContent.delete(length, briefContent.length());
9
10 //filter html mark;
11 briefContent.append("
..");
12 return briefContent.toString();
13 }
2 StringBuffer briefContent = new StringBuffer(content);
3 briefContent = doFilter(briefContent);
4 int length = 200;
5 if (briefContent.length() < length) {
6 length = briefContent.length();
7 }
8 briefContent = briefContent.delete(length, briefContent.length());
9
10 //filter html mark;
11 briefContent.append("

12 return briefContent.toString();
13 }